损失函数整理(分类和回归)

损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。

损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数指经验风险损失函数加上正则项。

分类损失

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

0-1损失函数是指预测值和目标值不相等为1,否则为0
L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y,f(X)) = \begin{cases} 1, & Y \neq f(X) \\ 0, & Y = f(X) \end{cases} L(Y,f(X))={1,0,Y=f(X)Y=f(X)
特点:

  1. 0-1损失函数直接对应分类判断错误的个数,但是它是一个非凸函数,不太实用
  2. 感知机就是用的这种损失函数。但是相等这个条件太过严格,因此可以放宽条件,即满足 ∣ Y − f ( x ) ∣ < T |Y-f(x)| < T Yf(x)<T 时认为相等

L ( Y , f ( X ) ) = { 1 , ∣ Y − f ( X ) ∣ ≥ T 0 , ∣ Y − f ( X ) ∣ < T L(Y,f(X)) = \begin{cases} 1, & |Y - f(X)| \geq T \\ 0, & |Y - f(X)| < T \end{cases} L(Y,f(X))={1,0,Yf(X)TYf(X)<T

绝对值损失函数

绝对值损失函数是计算预测值与目标值的差的绝对值:
L ( Y , f ( X ) ) = ∣ Y − f ( x ) ∣ L(Y,f(X)) = |Y - f(x)| L(Y,f(X))=Yf(x)

指数损失函数(exponential loss)

指数损失函数的标准形式如下:
L e x p = exp ⁡ ( − y ⋅ y ^ ) L_{exp} = \exp(-y \cdot \hat{y}) Lexp=exp(yy^)
特点:

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

Hinge 损失函数

Hinge 损失函数标准形式如下:
L h i n g e = max ⁡ ( 0 , 1 − y ⋅ y ^ ) L_{hinge} = \max(0, 1- y \cdot \hat{y}) Lhinge=max(0,1yy^)
特点:

  1. hinge 损失函数表示如果被分类正确,损失为 0,否则损失就为 1 − y f ( x ) 1-yf(x) 1yf(x) 。SVM模型的损失函数本质上就是 Hinge Loss + L2 正则化
  2. 一般的 f ( x ) f(x) f(x) 是预测值,在 -1 到 1 之间, y y y 是目标值(-1 或 1)。其含义是, f ( x ) f(x) f(x) 的值在 -1 和 +1 之间就可以了,并不鼓励 ∣ f ( x ) ∣ > 1 |f(x)| > 1 f(x)>1 ,即并不鼓励分类器过度自信,让某个正确分类的样本距离分割线超过1并不会有任何奖励,从而使分类器可以更专注于整体的误差。
  3. 健壮性相对较高,对异常点、噪声不敏感,但它没太好的概率解释

感知损失函数(perceptron)

感知器损失函数的标准形式如下:
L ( y , f ( x ) ) = max ⁡ ( 0 , − f ( x ) ) L(y, f(x)) = \max(0, -f(x)) L(y,f(x))=max(0,f(x))
特点:

  1. 是 Hinge 损失函数的一个变种,Hinge Loss 对判定边界附近的点(正确端)惩罚力度很高。而 perceptron loss 只要样本的判定类别正确的话,它就满意,不管其判定边界的距离,它比 Hinge Loss 简单,因为不是 max-margin boundary ,所以模型的泛化能力没 hinge loss 强。

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

交叉熵损失函数的标准形式如下:
L C E = − 1 N ∑ i N [ y i log ⁡ y ^ i + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] L_{CE}= - \frac{1}{N}\sum_{i}^N [y_i\log \hat{y}_i + (1 - y_i)\log(1-\hat{y}_i)] LCE=N1iN[yilogy^i+(1yi)log(1y^i)]
特点:

  1. 本质上也是一种对数似然函数,可用于二分类和多分类任务中

    二分类中的 loss 函数(输入数据是 softmax 或者 sigmoid 函数的输出):
    L C E = − 1 N ∑ i N [ y i log ⁡ y ^ i + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] L_{CE}= - \frac{1}{N}\sum_{i}^N [y_i\log \hat{y}_i + (1 - y_i)\log(1-\hat{y}_i)] LCE=N1iN[yilogy^i+(1yi)log(1y^i)]
    多分类问题中的 loss 函数(输入数据是 softmax 或者 sigmoid 函数的输出):
    L C E = − 1 N ∑ i y i log ⁡ y ^ i L_{CE} = -\frac{1}{N} \sum_i y_i\log \hat{y}_i LCE=N1iyilogy^i

  2. 当使用 sigmoid 作为激活函数的时候,常用交叉熵损失函数而不用均方差损失函数,因此它可以完美解决平方损失函数权重更新过慢的问题,具有“误差大的时候,权重更新快;误差小的时候,权重更新慢”的良好性质

权重交叉熵损失函数(Weighted cross-entropy loss function)

L W C E = − 1 N ∑ n = 1 N ( w y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ) L_{WCE} = -\frac{1}{N}\sum_{n=1}^N (w y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i)) LWCE=N1n=1N(wyilog(y^i)+(1yi)log(1y^i))

w w w 为权重,
w = N − ∑ n y ^ i ∑ n y ^ i w = \frac{N - \sum_n\hat{y}_i}{\sum_n \hat{y}_i} w=ny^iNny^i
需要认为调整困难样本的权重,增加调参难度

Focal Loss

为了解决正负样本严重失衡的问题,由 log loss 改进而来
L F L = − 1 n ∑ i N [ α y i ( 1 − y ^ i ) γ log ⁡ y ^ i + ( 1 − α ) ( 1 − y i ) y ^ i γ log ⁡ ( 1 − y ^ i ) ] L_{FL}= - \frac{1}{n}\sum_{i}^N [\alpha y_i (1 - \hat{y}_i)^\gamma \log \hat{y}_i + (1-\alpha)(1 - y_i) \hat{y}_i^\gamma \log(1-\hat{y}_i)] LFL=n1iN[αyi(1y^i)γlogy^i+(1α)(1yi)y^iγlog(1y^i)]
其基本思想就是,对于类别极度不平衡的情况下,网络如果在 log loss 下会倾向于之预测负样本,并且负样本的预测概率 y ^ i \hat{y}_i y^i 也会非常的高,回传的梯度也很大。但是如果添加 ( 1 − y ^ i ) γ (1 - \hat{y}_i)^\gamma (1y^i)γ 则会使预测概率大的样本得到的 loss 变小,而预测概率小的样本,loss 变得大,从而加强对正样本的关注度。可以改善目标不均衡的现象,对此情况比交叉熵要好很多。

回归损失

点回归损失

均方差损失 Mean Squared Error Loss

均方差损失是机器学习、深度学习回归任务中最常用的一种损失函数,也称为 L2 Loss,其基本形式如下:
L M S E = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 L_{MSE} = \frac{1}{N} \sum_{i=1}^N (y_i - \hat{y}_i)^2 LMSE=N1i=1N(yiy^i)2

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

平均绝对误差是另一类常用的损失函数,也称为 L1 Loss,其基本形式如下:
L M A E = 1 N ∑ i = 1 N ∣ y i − y ^ i ∣ L_{MAE} = \frac{1}{N}\sum_{i=1}^N |y_i - \hat{y}_i| LMAE=N1i=1Nyiy^i
MAE 与 MSE 的区别:MAE 和 MSE 作为损失函数的主要区别是:MSE 损失相比于 MAE 通常可以更快的收敛,但 MAE 损失对于异常值更加健壮,即更加不易受到异常值影响。

  1. MSE 通常比 MAE 可以更快地收敛。当使用梯度下降算法时,MSE 损失的梯度为 − y ^ i -\hat{y}_i y^i,而 MAE 损失的梯度为 ± 1 \pm1 ±1 ,即 MSE 的梯度的尺度会随误差大小变换,而 MAE 的梯度的尺度则一直保持为1,即便在绝对误差 ∣ y i − y ^ i ∣ |y_i - \hat{y}_i| yiy^i 很小的时候 MAE 的梯度尺度也同样为 1,这实际上是非常不利于模型的训练的。当然你可以通过在训练过程中动态调整学习率缓解这个问题,但是总的来说,损失函数梯度之间的差异导致了 MSE 在大部分时候比 MAE 收敛地更快。这个也是 MSE 更为流行的原因
  2. MAE 对于异常值更加健壮。
    • 第一个角度是直观理解,由于 MAE 损失与绝对误差之间是线性关系,MSE 损失与误差是平方关系,当误差非常大的时候,MSE 损失会远远大于 MAE 损失。因此当数据中出现一个误差非常大的异常值时,MSE 会产生一个非常大的损失,对模型的训练会产生较大的影响。
    • 第二个角度是从两个损失函数的假设出发,MSE 假设了误差服从高斯分布,MAE 假设了误差服从拉普拉斯分布。拉普拉斯本身对于异常值更加健壮。当出现了异常值时,拉普拉斯分布相比于高斯分布收到的影响要小很多。因此以 拉普拉斯分布为假设的 MAE 对异常值比高斯分布为假设的 MSE 更加健壮。
Huber Loss

Huber Loss 是一种将 MSE 与 MAE 结合起来,取两者优点的损失函数,也被称作 Smooth Mean Absolute Error Loss(Smooth L1 损失)。其原理很简单,就是在误差接近 0 时使用 MSE,误差较大时使用 MAE,公式为
L h u b e r = 1 N ∑ i = 1 N I ∣ y i − y ^ i ∣ ≤ δ ( y i − y i ^ ) 2 2 + I ∣ y i − y ^ i ∣ > δ ( δ ∣ y i − y ^ i ∣ − 1 2 δ 2 ) L_{huber} = \frac{1}{N}\sum_{i=1}^{N} \mathbb{I}_{|y_i - \hat{y}_i| \leq \delta} \frac{(y_i - \hat{y_i})^2}{2} + \mathbb{I}_{|y_i - \hat{y}_i| > \delta} (\delta|y_i - \hat{y}_i| - \frac{1}{2}\delta^2) Lhuber=N1i=1NIyiy^iδ2(yiyi^)2+Iyiy^i>δ(δyiy^i21δ2)
一般使用的 Smooth L1 Loss 为( δ = 1 \delta = 1 δ=1):
Smooth L 1 ( x ) = { 0.5 ( y i − y i ^ ) 2 i f    ∣ y i − y i ^ ∣ < 1 ∣ ( y i − y i ^ ) ∣ − 0.5 o t h e r w i s e \text{Smooth}L_1(x) = \begin{cases} 0.5 (y_i - \hat{y_i})^2 & if \; |y_i - \hat{y_i}| < 1 \\ |(y_i - \hat{y_i})|-0.5 & otherwise \end{cases} SmoothL1(x)={0.5(yiyi^)2(yiyi^)0.5ifyiyi^<1otherwise
上式中 δ \delta δ 是 Huber Loss 的一个超参数, δ \delta δ 的值是 MSE 和 MAE 两个损失连接的位置。上式等号右边第一项是 MSE 的部分,第二项是 MAE 部分,在 MAE 的部分公式为 δ ∣ y i − y ^ i ∣ − 1 2 δ 2 \delta|y_i - \hat{y}_i| - \frac{1}{2}\delta^2 δyiy^i21δ2 是为了保证误差 ∣ y − y ^ ∣ = ± δ |y-\hat{y}| = \pm\delta yy^=±δ 时 MAE 和 MSE 的取值一致,进而保证 Huber Loss 损失连续可导。

特点:Huber Loss 结合了 MSE 和 MAE 损失,在误差接近 0 时使用 MSE,使损失函数可导并且梯度更加稳定;在误差较大时使用 MAE 可以降低异常值的影响,使训练对异常值更加健壮。

缺点: L 1 / L 2 / s m o o t h L 1 L_1/L_2/smooth_{L_1} L1/L2/smoothL1 在计算目标检测的 bbox loss 时,都是独立的求出四个点的 loss,然后相加得到最终的 bbox loss。这种做法默认 4 个点是相互独立的,与实际不符。举个例子,当 (x, y) 为右下角时,w h 其实只能取 0。

分位数损失 Quantile Loss

分位数回归是一类在实际应用中非常有用的回归算法,通常的回归算法是拟合目标值的期望或者中位数,而分位数回归可以通过给定不同的分为点,拟合目标值的不同分位数。

分位数回归是通过使用分位数损失来实现这一点的,分位数损失形式如下,式中的 r r r 分位数系数
L q u a n t = 1 N ∑ i = 1 N I y ^ i ≥ y i ( 1 − r ) ∣ y i − y ^ i ∣ + I y ^ i < y i r ∣ y i − y ^ i ∣ L_{quant} = \frac{1}{N} \sum_{i=1}^N \mathbb{I}_{\hat{y}_i \geq y_i} (1 - r) |y_i - \hat{y}_i| + \mathbb{I}_{\hat{y}_i < y_i}r|y_i - \hat{y}_i| Lquant=N1i=1NIy^iyi(1r)yiy^i+Iy^i<yiryiy^i
这个损失函数是一个分段的函数,将 y ^ i ≥ y i \hat{y}_i \geq y_i y^iyi (高估)和 y ^ i < y i \hat{y}_i < y_i y^i<yi (低估)两种情况分开来,并分别给予不同的系数。当 r > 0.5 r > 0.5 r>0.5 时,低估的损失要比高估的损失更大,反过来当 r < 0.5 r < 0.5 r<0.5 时,高估的损失比低估的损失大;分位数损失实现了分别用不同的系数控制高估和低估的损失,进而实现分位数回归。特别地,当 r = 0.5 r=0.5 r=0.5 时,分位数损失退化为 MAE 损失,从这里可以看出 MAE 损失实际上是分位数损失的一个特例——中位数回归(这也可以解释为什么 MAE 损失对异常值更健壮:MSE 回归期望值,MAE 回归中位数,通常异常值对中位数的影响比对期望值的影响小)
L q u a n t r = 0.5 = 1 N ∑ i = 1 N ∣ y i − y ^ i ∣ L_{quant}^{r=0.5} = \frac{1}{N}\sum_{i=1}^N |y_i - \hat{y}_i| Lquantr=0.5=N1i=1Nyiy^i

边框回归损失

IoU Loss

L I o U = 1 − I o U ( b b o x g t , b b o x p r e d ) L_{IoU} = 1 - IoU(bbox_{gt}, bbox_{pred}) LIoU=1IoU(bboxgt,bboxpred)

IoU 计算让x,y,w,h 相互关联,同时具备了尺度不变性,克服了 s m o o t h L 1 L o s s smooth_{L_1} Loss smoothL1Loss 的缺点

缺点:

  • 当预测框和目标框不相交,即 I o U ( b b o x 1 , b b o x 2 ) = 0 IoU(bbox1, bbox2) = 0 IoU(bbox1,bbox2)=0 时,不能反映两个框距离的远近,此时损失函数不可导,IoU Loss 无法优化两个框不想交的情况
  • 假设预测框和目标框的大小都确定,只要两个框的相交值是确定的,其 IoU 值是相同的,IoU 值不能反映两个框是如何相交的
GIoU Loss

由于 IoU 不能区分一些相交的情况,所以提出 GIoU 作为度量指标:
G I o U = I o U − ∣ C − ( A ∪ B ) ∣ ∣ C ∣ GIoU = IoU - \frac{|C - (A\cup B)|}{|C|} GIoU=IoUCC(AB)
其中 C 为 A 和 B 的外接矩形。用 C 减去 A 和 B 的并集除以 C 得到一个数值,然后再用 A 和 B 的 IoU 减去这个数值即可得到 GIoU 的值。可以看出:

  • GIoU 取值范围为 [-1, 1],在两框重合时取最大值 1,在两框无限远时取最小值 -1
  • 与 IoU 只关注重叠区域不同,GIoU 不仅关注重叠区域,还关注其他的非充和区域,能更好的反映两者的重合度

GIoU Loss 定义:
L G I o U = 1 − G I o U L_{GIoU} = 1 - GIoU LGIoU=1GIoU
缺点:当目标框完全包裹预测框的时候, IoU 和 GIoU 的值都一样,此时 GIoU 退化为 IoU,无法区分其相对位置关系。

DIoU Loss

针对 IoU 和 GIoU 的缺点,提出了边框回归的三个重要几何因素:重叠面积、中心点距离和长宽比,提出 DIoU 和 CIoU

DIoU 为:
D I o U = I o U − R I o U DIoU = IoU - R_{IoU} DIoU=IoURIoU
R I o U R_{IoU} RIoU 表示预测框与真实框的惩罚项,将惩罚项设置为:
R D I o U = ρ 2 ( b p r e d , b g t ) c 2 R_{DIoU} = \frac{\rho^2(b_{pred}, b_{gt})}{c^2} RDIoU=c2ρ2(bpred,bgt)
其中 b p r e d , b g t b_{pred}, b_{gt} bpred,bgt 表示框的中心点, ρ \rho ρ 表示欧氏距离, c c c 表示最小外接矩形的对角线距离,故 DIoU Loss 定义:
L D I o U = 1 − I o U + R D I o U L_{DIoU} = 1 - IoU + R_{DIoU} LDIoU=1IoU+RDIoU
边框回归的三个重要几何因素:重叠面积、中心点距离和长宽比,DIoU 没有包含长宽比因素

CIoU Loss

在 DIoU 的基础上,增加了长宽比影响因子 α v \alpha v αv,合并到惩罚项:
R C I o U = ρ 2 ( b p r e d , b g t ) c 2 + α v R_{CIoU} = \frac{\rho^2(b_{pred}, b_{gt})}{c^2} + \alpha v RCIoU=c2ρ2(bpred,bgt)+αv
其中 v v v 用于衡量长宽比的一致性, α \alpha α 用于平衡 v v v 的值,设为:
α = v ( 1 − I o U ) + v v = 2 π 2 ( arctan ⁡ w g t h g t − arctan ⁡ w h ) 2 \begin{aligned} & \alpha = \frac{v}{(1-IoU) + v} \\ & v = \frac{2}{\pi^2}(\arctan\frac{w^{gt}}{h^{gt}} - \arctan\frac{w}{h})^2 \end{aligned} α=(1IoU)+vvv=π22(arctanhgtwgtarctanhw)2
CIoU Loss 定义:
L C I o U = 1 − I o U + R C I o U L_{CIoU} = 1 - IoU + R_{CIoU} LCIoU=1IoU+RCIoU

缺点,在 CIoU 的定义中,衡量长宽比的 v v v 过于复杂,从两个方面减缓了收敛速度

  • 长宽比不能取代单独的长宽,比如 w = k w g t , h = k h g t w = kw^{gt}, h=kh^{gt} w=kwgt,h=khgt 都会导致 v = 0 v = 0 v=0

  • v v v 的导数可以得到 ∂ v ∂ w = − h w ∂ v ∂ h \frac{\partial v}{\partial w} = -\frac{h}{w} \frac{\partial v}{\partial h} wv=whhv ,这说明 ∂ v ∂ w \frac{\partial v}{\partial w} wv ∂ v ∂ h \frac{\partial v}{\partial h} hv 在优化意义相反,因此,在任何时候,如果这两个变量(w或h)中的一个增大,则另一个将减小。

    ∂ v ∂ w = 8 π 2 ( arctan ⁡ w g t h g t − arctan ⁡ w h ) ∗ h w 2 + h 2 ∂ v ∂ h = − 8 π 2 ( arctan ⁡ w g t h g t − arctan ⁡ w h ) ∗ w w 2 + h 2 \begin{aligned} & \frac{\partial v}{\partial w} = \frac{8}{\pi^2}(\arctan\frac{w^{gt}}{h^{gt}} - \arctan\frac{w}{h}) * \frac{h}{w^2 + h^2} \\ & \frac{\partial v}{\partial h} = -\frac{8}{\pi^2}(\arctan\frac{w^{gt}}{h^{gt}} - \arctan\frac{w}{h}) * \frac{w}{w^2 + h^2} \end{aligned} wv=π28(arctanhgtwgtarctanhw)w2+h2hhv=π28(arctanhgtwgtarctanhw)w2+h2w

EIoU Loss

为了解决 w 和 h 不能一起增大或减小的问题,提出了 EIoU Loss:
L E I o U = L I o U + L d i s + L a s p = 1 − I o U + ρ 2 ( b p r e d , b g t ) c 2 + ρ 2 ( w p r e d , w g t ) C w 2 + ρ 2 ( h p r e d , h g t ) C h 2 \begin{aligned} L_{EIoU} & = L_{IoU} + L_{dis} + L_{asp} \\ & = 1 - IoU + \frac{\rho^2(b_{pred}, b_{gt})}{c^2} + \frac{\rho^2(w_{pred}, w_{gt})}{C_w^2} + \frac{\rho^2(h_{pred}, h_{gt})}{C_h^2} \end{aligned} LEIoU=LIoU+Ldis+Lasp=1IoU+c2ρ2(bpred,bgt)+Cw2ρ2(wpred,wgt)+Ch2ρ2(hpred,hgt)
其中 C w , C h C_w, C_h Cw,Ch 是最小外接矩形的宽和高。可以直接同时优化宽和高。

Focal-EIoU Loss

为了解决不平衡的问题(具有小回归误差的高质量边框的数量比低质量的少得多)

focal loss 可以理解为对损失加权,常见的 Focal loss 为 F L ( p t ) = − ( 1 − p t ) γ log ⁡ ( p t ) FL(p_t) = - (1 - p_t)^\gamma \log(p_t) FL(pt)=(1pt)γlog(pt)

Focal-EIoU loss 定义
L F o c a l − E I o U = I o U γ L E I o U L_{Focal-EIoU} = IoU^\gamma L_{EIoU} LFocalEIoU=IoUγLEIoU

Ranking Loss

一文理解Ranking Loss/Margin Loss/Triplet Loss


参考文章

常见的损失函数(loss function)总结

机器学习常用损失函数小结

从L1 loss到EIoU loss,目标检测边框回归的损失函数一览

一文理解Ranking Loss/Margin Loss/Triplet Loss

从loss处理图像分割中类别极度不均衡的状况—keras

  • 13
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CharlesWu123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值