损失函数总结

article/2025/10/11 14:00:42

1. 概况

损失函数一般分为:0-1 损失函数,HingeLoss,绝对值损失函数,Huber Loss, 平方损失函数,对数损失函数,指数损失。
在这里插入图片描述

1. 0-1损失函数(zero-one loss)

0-1损失是指预测值和目标值不相等为1, 否则为0:
在这里插入图片描述

2. 平均绝对值损失函数

平均绝对误差损失,Mean Absolute Error Loss。

J M A E = 1 N ∑ i = 1 N ∣ y i − y ^ i ∣ J_{M A E}=\frac{1}{N} \sum_{i=1}^{N}\left|y_{i}-\hat{y}_{i}\right| JMAE=N1i=1Nyiy^i

原理:
假设模型预测与真实值之间的误差服从拉普拉斯分布 Laplace distribution,给定一个 x, 模型输出真实值 y 的概率为:
p ( y i ∣ x i ) = 1 2 exp ⁡ ( − ∣ y i − y ^ i ∣ ) p\left(y_{i} | x_{i}\right)=\frac{1}{2} \exp \left(-\left|y_{i}-\hat{y}_{i}\right|\right) p(yixi)=21exp(yiy^i)

通过最大似然估计,就可以推导到MAE公式了。

特点:
MAE 损失对于 outlier 更加健壮,即更加不易受到 outlier 影响。

3. Huber Loss

Huber Loss,也称为SmoothL1Loss ,误差在 (-1,1) 上是平方损失,其他情况是 L1 损失,应用于回归。
loss ⁡ ( x , y ) = 1 n ∑ i z i z i = { 0.5 ( x i − y i ) 2 , if  ∣ x i − y i ∣ < 1 ∣ x i − y i ∣ − 0.5 , otherwise  \begin{aligned} &\operatorname{loss}(x, y)=\frac{1}{n} \sum_{i} z_{i}\\ &z_{i}=\left\{\begin{array}{ll} 0.5\left(x_{i}-y_{i}\right)^{2}, & \text { if }\left|x_{i}-y_{i}\right|<1 \\ \left|x_{i}-y_{i}\right|-0.5, & \text { otherwise } \end{array}\right. \end{aligned} loss(x,y)=n1izizi={0.5(xiyi)2,xiyi0.5, if xiyi<1 otherwise 

为什么用Huber loss?
平方损失L2的结果是算术均值无偏估计,L1损失函数的结果是中值无偏估计。在这里插入图片描述
但是,平方损失容易被异常点影响。Huber loss 在0点附近是强凸,结合了平方损失和绝对值损失的优点。

4. Hinge Loss

合页损失,hinge loss, 一种二分类损失函数,适用于 maximum-margin 的分类
在这里插入图片描述

主要用于支持向量机(SVM) 中,用来解 间距最大化 的问题。

J ( w ) = 1 2 ∥ w ∥ 2 + C ∑ i max ⁡ ( 0 , 1 − y i w T x i ) = 1 2 ∥ w ∥ 2 + C ∑ i max ⁡ ( 0 , 1 − m i ( w ) ) = 1 2 ∥ w ∥ 2 + C ∑ i L H i n g e ( m i ) \begin{aligned} J(w) &=\frac{1}{2}\|w\|^{2}+C \sum_{i} \max \left(0,1-y_{i} w^{T} x_{i}\right) \\ &=\frac{1}{2}\|w\|^{2}+C \sum_{i} \max \left(0,1-m_{i}(w)\right) \\ &=\frac{1}{2}\|w\|^{2}+C \sum_{i} L_{H i n g e}\left(m_{i}\right) \end{aligned} J(w)=21w2+Cimax(0,1yiwTxi)=21w2+Cimax(0,1mi(w))=21w2+CiLHinge(mi)

下图是 y(=1) 为正类, 不同输出的合页损失示意图:
在这里插入图片描述
当模型输出为正值且在 (0,1) 区间时还会有一个惩罚。即合页损失不仅惩罚预测错的,并且对于预测对了但是置信度不高的也会给一个惩罚,只有置信度高的才会有零损失。
使用合页损失直觉上理解是要找到一个决策边界,使得所有数据点被这个边界正确地、高置信地被分类

SVM 的损失函数可以看作是 L2-norm 和 Hinge loss 之和。

特点:
(1) 健壮性相对较高,对异常点、噪声不敏感,但它没太好的概率解释。

5. 平方损失函数Squared Loss

常用均方差损失,Mean Squared Error Loss,是回归任务中最常用的一种损失函数。

M S E = 1 n ∑ i = 1 n ( Y ~ i − Y i ) 2 M S E=\frac{1}{n} \sum_{i=1}^{n}\left(\tilde{Y}_{i}-Y_{i}\right)^{2} MSE=n1i=1n(Y~iYi)2

原理:
假设模型预测与真实值之间的误差服从标准高斯分布,则给定一个 x 模型输出真实值 y 的概率为:

p ( y i ∣ x i ) = 1 2 π exp ⁡ ( − ( y i − y ^ i ) 2 2 ) p\left(y_{i} | x_{i}\right)=\frac{1}{\sqrt{2 \pi}} \exp \left(-\frac{\left(y_{i}-\hat{y}_{i}\right)^{2}}{2}\right) p(yixi)=2π 1exp(2(yiy^i)2)

根据最大似然函数,对数化,就得到MSE公式了。

在模型输出与真实值的误差服从高斯分布的假设下,最小化均方差损失函数与极大似然估计本质上是一致的,因此在这个假设能被满足的场景中(比如回归),均方差损失是一个很好的损失函数选择。

Q:为什么MSE不适合分类问题?
A:首先,分类问题损失并不服从高斯分布;第二点,如果MSE 前面是接sigmoid激活函数,最终求导反向传播是 ( y ^ − y ) ( y ^ ) ( 1 − y ^ ) , y ^ = s i g m o i d ( f ( x ) ) (\hat y-y)(\hat y)(1-\hat y),\hat y= sigmoid(f(x)) (y^y)(y^)(1y^),y^=sigmoid(f(x)); 而误差 ( y ^ − y ) (\hat y-y) (y^y) 比较大时,即 y ^ = s i g m o i d ( f ( x ) ) \hat y= sigmoid(f(x)) y^=sigmoid(f(x))较大或者较小时,梯度都因为 ( y ^ ) ( 1 − y ^ ) (\hat y)(1-\hat y) (y^)(1y^)而变得很小。

6. log对数损失函数

在这里插入图片描述
特点:

(1) log对数损失函数能非常好的表征概率分布,在很多场景尤其是多分类,如果需要知道结果属于每个类别的置信度,那它非常适合。

(2)健壮性不强,相比于hinge loss对噪声更敏感。

(3)逻辑回归的损失函数就是log对数损失函数。

7. 交叉熵损失函数 (Cross-entropy loss function)

在这里插入图片描述

(1)本质上也是一种对数似然函数;
(2)当使用sigmoid作为激活函数的时候,常用交叉熵损失函数而不用均方误差损失函数,因为它可以完美解决平方损失函数权重更新过慢的问题,具有 “误差大的时候,权重更新快;误差小的时候,权重更新慢” 的良好性质。

原理:
Q:为什么交叉熵能应用到分类场景中?
A:假设对于样本 x存在一个最优分布 y ∗ y^* y 真实地表明了这个样本属于各个类别的概率.根据KL Loss,可以推导出:
K L ( y i ⋆ , y ^ i ) = ∑ k = 1 K y i ⋆ log ⁡ ( y i ⋆ ) − ∑ k = 1 K y i ⋆ log ⁡ ( y ^ i ) K L\left(y_{i}^{\star}, \hat{y}_{i}\right)=\sum_{k=1}^{K} y_{i}^{\star} \log \left(y_{i}^{\star}\right)-\sum_{k=1}^{K} y_{i}^{\star} \log \left(\hat{y}_{i}\right) KL(yi,y^i)=k=1Kyilog(yi)k=1Kyilog(y^i)

最后,推导出交叉熵公式。
可以看到,在样本属于每个类别的概率能用分布表示时,通过最小化交叉熵的角度推导出来的结果和使用最大 化似然得到的结果是一致的。

8. Softmax Loss

Softmax Loss可以看做交叉熵应用到多分类场景。假设样本服从伯努利分布(0-1分布),用于逻辑斯谛回归模型。

J C E = − ∑ i = 1 N y i c i log ⁡ ( y i c ^ i ) J_{C E}=-\sum_{i=1}^{N} y_{i}^{c_{i}} \log \left(y_{i}^{\hat{c}_{i}}\right) JCE=i=1Nyicilog(yic^i)

8. 指数损失函数(exponential loss)

在这里插入图片描述

特点:

(1)对离群点、噪声非常敏感。经常用在AdaBoost算法中。


参考:

  1. 机器学习中的损失函数 (着重比较:hinge loss vs softmax loss);
  2. 常见的损失函数(loss function)总结;
  3. (推荐)机器学习常用损失函数小结;
  4. 二元分类为什么不能用MSE做为损失函数?;

http://chatgpt.dhexx.cn/article/VeQwM3d9.shtml

相关文章

matlab的损失函数mse,MSELoss损失函数

MSELoss损失函数中文名字就是&#xff1a;均方损失函数&#xff0c;公式如下所示&#xff1a; 这里 loss, x, y 的维度是一样的&#xff0c;可以是向量或者矩阵&#xff0c;i 是下标。 很多的 loss 函数都有 size_average 和 reduce 两个布尔类型的参数。因为一般损失函数都是直…

损失函数Loss Fuction

说说代价函数的作用&#xff1f; 1.为得到训练模型的参数&#xff0c;需要一个代价函数&#xff0c;通过训练代价函数来得到参数。    2.用于找到最优解的目的函数。 说说代价函数为什么要非负&#xff1f; 因为目标函数存在下界&#xff0c;在优化过程当中&#xff0c;如果优…

常用的损失函数

来自 机器学习成长之路公众号 本文将常用的损失函数分为了两大类&#xff1a;分类和回归。然后又分别对这两类进行了细分和讲解&#xff0c;其中回归中包含了一种不太常见的损失函数&#xff1a;平均偏差误差&#xff0c;可以用来确定模型中存在正偏差还是负偏差。 从学习任务…

损失函数设计

目录 1.常见损失函数 1.1 平方损失函数 1.2 绝对值损失函数 1.3 Huber损失函数 1.4 Hinge损失函数 1.5 交叉熵损失函数 1.6 指数损失函数 2.不对称损失函数设计 3.面向容错的损失函数设计 4.评测指标不可导时的损失函数设计 5.没有“Groud Truth“的损失函数设计 6…

如何选择合适的损失函数

【AI科技大本营导读】机器学习中的所有算法都依赖于最小化或最大化某一个函数&#xff0c;我们称之为“目标函数”。最小化的这组函数被称为“损失函数”。损失函数是衡量预测模型预测期望结果表现的指标。寻找函数最小值的最常用方法是“梯度下降”。把损失函数想象成起伏的山…

常用的损失函数合集

目录 一、什么是损失函数&#xff1f; 二、为什么需要损失函数&#xff1f; 三、损失函数通常使用的位置 四、损失函数的分类 五、常用的损失函数 1、回归损失&#xff08;针对连续型变量&#xff09; 1.L1 Loss也称为Mean Absolute Error&#xff0c;即平均绝对误差&…

语义分割的损失函数

语义分割任务实际上是一种像素层面上的分类&#xff0c;需要识别图像中存在的内容和位置&#xff0c;同样也存在与分类类似问题-样本类别不平衡&#xff0c;对于语义分割更多的是前景区域的样本远小于背景区域。针对类别不平衡问题&#xff0c;在loss层面上有不同的选择。 1. …

损失函数简介

损失函数的作用&#xff1a;衡量模型预测的好坏。 简单来说就是&#xff0c;损失函数就是用来表现预测与真实数据的差距程度。 令 真实值 为Y&#xff0c;预测值为 f(x)&#xff0c;损失函数为L( Y , f(x&#xff09;&#xff09;&#xff0c;关系如下&#xff1a; 损失函数&a…

Pyotorch自定义损失函数

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;大数据专业硕士在读&#xff0c;CSDN人工智能领域博客专家&#xff0c;阿里云专家博主&#xff0c;专注大数据与人工智能知识分享&#xff0c;公众号&#xff1a;GoAI的学习小屋&#xff0c;免费分享书籍、简历、导图等资料&a…

GAN的损失函数

1.GAN 在训练过程中&#xff0c;生成器和判别器的目标是相矛盾的&#xff0c;并且这种矛盾可以体现在判别器的判断准确性上。生成器的目标是生成尽量真实的数据&#xff0c;最好能够以假乱真、让判别器判断不出来&#xff0c;因此生成器的学习目标是让判别器上的判断准确性越来…

损失函数比较

Pytorch学习之十九种损失函数 一、简介 损失函数&#xff08;Loss Function)是用来评估模型好坏程度&#xff0c;即预测值f(x)与真实值的不一致程度&#xff0c;通常表示为L(Y, f(x))的一个非负的浮点数。比如你要做一个线性回归&#xff0c;你拟合出来的曲线不会和原始的数据…

常见的损失函数

1、损失函数的意义 机器学习中的监督学习本质上是给定一系列训练样本 &#xff0c;尝试学习 的映射关系&#xff0c;使得给定一个 &#xff0c;即便这个 不在训练样本中&#xff0c;也能够得到尽量接近真实 的输出 。而损失函数&#xff08;Loss Function&#xff09;则是这个过…

损失函数

损失函数&#xff08;loss function&#xff09;是用来估量你模型的预测值f(x)与真实值Y的不一致程度&#xff0c;它是一个非负实值函数,通常使用L(Y, f(x))来表示&#xff0c;损失函数越小&#xff0c;模型的鲁棒性就越好。损失函数是经验风险函数的核心部分&#xff0c;也是结…

常见损失函数

常见损失函数 (cs231n) 文章目录 常见损失函数损失函数定义0-1损失函数(zero-one loss)绝对值损失函数(Absolute loss)log对数损失函数(Log Loss)平方损失函数(Square Loss)指数损失函数 (Exponential Loss)SVM损失函数&#xff08;Hinge Loss&#xff09;感知损失函数(percep…

【常见的损失函数总结】

文章目录 损失函数的定义神经网络的学习为何要设定损失函数&#xff1f;常见的损失函数1. 0-1损失函数(zero-one loss)2. 对数损失函数3. 平方损失函数MSE(均值平方差&#xff09;4. Hinge 损失函数5. 交叉熵损失函数 (Cross-entropy loss function) 损失函数的定义 损失函数&…

神经网络损失函数汇总

目录 一、基础知识 二、分类 &#xff08;1&#xff09;二分类交叉熵损失函数&#xff08;binary_crossentropy&#xff09; &#xff08;2&#xff09;categorical_crossentropy损失函数 &#xff08;3&#xff09;sparse_categorical_crossentropy &#xff08;4&#…

Jmeter 使用正则表达式提取器将返回值全部保存到一个文件中

目标&#xff1a;将响应数据 {"errorCode":0,"message":"success","data":null} 中的message字段的值全部保存到一个文件中。 1.正则表达式提取器 正则表达式&#xff1a;提取内容的正则表达式【()表示提取&#xff0c;对于你要提取的…

Jmeter性能测试报告模板

性能测试报告 一、测试内容 针对当当网——服务器&#xff0c;进行性能测试&#xff0c;主要针对的核心业务是&#xff1a;注册&#xff0c;登录&#xff0c;查看商品信息与提交订单等。 二、测试方法 本次采用Apache的开元测试工具jmeter&#xff0c;采用本地动态拼装请求数据…

Jmeter5.4.1测试批量上传文件(参数化)

0、下载jmeter5.4.1 jmeter5.4.1-Java文档类资源-CSDN下载 注意需要java环境哦 jdk1.8-java_sdk_jre-Java文档类资源-CSDN下载 启动命令&#xff1a; java -jar ApacheJMeter.jar 用这个启动才是中文版本&#xff0c;另外启动后&#xff0c;界面字体太小&#xff0c…

Jmeter接口测试参数化详解

接口测试是目前最主流的自动化测试手段&#xff0c;它组合不同的参数向服务器发送请求&#xff0c;接受和解析响应结果&#xff0c;通过测试数据的交换逻辑来验证服务端程序工作的正确性。我们在测试过程中需要考虑不同的输入组合&#xff0c;来覆盖不同的测试范围&#xff1b;…