盘点 深度学习的那些loss

时间:2024-04-08 20:58:51

盘点 深度学习的那些loss

A loss function is a part of a cost function which is a type of an objective function

  • 0-1损失函数
    L(Y,f(X))={1,Yf(X)0,y=f(X) L(Y,f(X))=\begin{cases}1,Y\ne f(X)\\0,y=f(X)\end{cases}

  • 绝对值损失函数
    L(Y,f(X))=YF(X) L(Y,f(X))=|Y-F(X)|

  • 均方差损失(Mean Squared Error Loss)
    JMSE=1NΣi=1N(yiy^i)2 J_{MSE}=\frac{1}{N}\Sigma^N_{i=1}(y_i-\hat{y}_i)^2
    在模型输出与真实值的误差服从高斯分布的假设下,最小化均方差损失函数与极大似然估计本质是一致的,最大化对数似然:
    LL(x,y)=N2log2π12Σi=1N(yiy^i)2 LL(x, y)=-\frac{N}{2}log2\pi-\frac{1}{2}\Sigma^N_{i=1}(y_i-\hat{y}_i)^2

  • 平均绝对误差损失(Mean Absolute Error Loss)
    JMAE=1NΣi=1Nyiy^i J_{MAE}=\frac{1}{N}\Sigma^N_{i=1}|y_i-\hat{y}_i|
    是假设模型预测与真实值之间的误差服从拉普拉斯分布(μ,b=1),再推导负对数似然可以得到。对异常点更加鲁棒。

  • Huber Loss(Smooth Mean Absolute Error Loss)

    是将MSE与MAE结合起来的损失函数,在误差接近0时使用MSE,较大时候使用MAE:
    Jhuber=1NΣi=1Nyiy^iδ(yiy^i)22+yiy^i>δ(δyiyi^12δ2) J_{huber}=\frac{1}{N}\Sigma^N_{i=1}||_{|y_i-\hat{y}_i|\le\delta}\frac{(y_i-\hat{y}_i)^2}{2}+||_{|y_i-\hat{y}_i|\gt\delta}(\delta|y_i-\hat{y_i}|-\frac{1}{2}\delta^2)
    上式δ 是一个超参数,当δ=1.0时,图像如下:

    盘点 深度学习的那些loss

  • 分位数损失(Quantile Loss)

    分位数回归可以通过给定不同的分位点,拟合目标值的不同分位数。:

    盘点 深度学习的那些loss

Jquant=1NΣi=1Ny^iyi(1r)yiy^i+y^i<yiryiy^i J_{quant}=\frac{1}{N}\Sigma^N_{i=1}||_{\hat{y}_i\ge y_i}(1-r)|y_i-\hat{y}_i|+||_{\hat{y}_i\lt y_i}r|y_i-\hat{y}_i|

公式中r为分位数,实现了分别用不同的系数控制高估和低估的损失,进而实现分位数回归。

  • 交叉熵损失(Cross Entropy Loss)

    二分类交叉熵损失:
    NLL(x,y)=JCE=Σi=1Nyilog(y^i)+(1yi)log(1y^i) NLL(x, y)=J_{CE}=-\Sigma^N_{i=1}y_ilog(\hat{y}_i)+(1-y_i)log(1-\hat{y}_i)
    可视化:

    盘点 深度学习的那些loss

​ 多分类( Categorical Cross Entropy Loss ):
JCE=Σi=1Nyicilog(yic^i) J_{CE}=-\Sigma^N_{i=1}y^{c_i}_ilog(y^{\hat{c}_i}_i)

  • 加权交叉熵损失函数(Weighted Binary Cross-Entropy)
    WCE(p,p^)=(βplog(p^)+(1p)log(1p^)) WCE(p,\hat{p})=-(\beta plog(\hat{p}) + (1-p)log(1-\hat{p}))
    加权交叉熵损失函数只是在交叉熵Loss的基础上为每一个类别添加了一个权重参数为正样本加权,设置β>1,减少假阴性,设置β<1,减少假阳性。这样相比于原始的交叉熵Loss,在样本数量不均衡的情况下可以获得更好的效果。

  • 平衡交叉熵损失(Balanced Crodd-Entropy)

  • BCE(p,p^)=(βplog(p^)+(1β)(1p)log(1p^)) BCE(p,\hat{p})=-(\beta plog(\hat{{p}}) + (1-\beta)(1-p)log(1-\hat{p}))

    与加权交叉熵损失函数类似,但对负样本也进行加权。

  • Focal Loss
    FL(p,p^)=(α(1p^)γplog(p^)+(1α)p^γ(1p)log(1p^)) FL(p,\hat{p})=-(\alpha (1-\hat{p})^\gamma plog(\hat{p}) + (1-\alpha)\hat{p}^\gamma(1-p)log(1-\hat{p}))
    Focal Loss是在目标检测领域提出来的,目的是关注难例。对于正样本,使其预测概率大的样本得到的loss变小,而预测概率小的样本loss变大,但需要手动调参。

  • 距离图得出的损失惩罚项( Distance map derived loss penalty term )

    可以将距离图定义为ground truth与预测图之间的距离(欧几里得距离、绝对距离等)。合并映射的方法有2种,一种是创建神经网络架构,在该算法中有一个用于分割的重建head,或者将其引入损失函数。遵循相同的理论,可以从GT mask得出的距离图,并创建了一个基于惩罚的自定义损失函数。使用这种方法,可以很容易地将网络引导到难以分割的边界区域。损失函数定义为:
    L(y,p)=1Ni=1N(1+ϕ)()LCE(y,p) L(y,p)=\frac{1}{N}\sum^N _{i=1}(1+\phi)(⊙)L_{CE}(y,p)

  • Dice Loss

    Dice广泛用于计算两个图像之间的相似度。更广泛的是用来度量集合相似度的度量函数,通常用于计算两个样本之间的像素之间的相似度:
    s=2XYX+Ys=2TP2TP+FN+FP s=\frac{2|X\bigcap Y|}{|X|+|Y|}或s=\frac{2TP}{2TP+FN+FP}
    Dice Loss:
    s=12XYX+Y s=1-\frac{2|X\bigcap Y|}{|X|+|Y|}
    此处,在分子和分母中添加1以确保函数在诸如y = 0的极端情况下的确定性。Dice Loss使用与样本极度不均衡的情况,如果一般情况下使用Dice Loss会回反向传播有不利的影响,使得训练不稳定。

  • Tversky Loss

TL(p,p^)=11+pp^1+pp^+β(1p)p^+(1β)p(1p^) TL(p,\hat{p})=1-\frac{1+p\hat{p}}{1+p\hat{p}+\beta (1-p)\hat{p}+(1-\beta)p(1-\hat{p})}

Tversky系数是Dice系数和 Jaccard 系数的一种推广。当设置α=β=0.5,此时Tversky系数就是Dice系数。而当设置α=β=1时,此时Tversky系数就是Jaccard系数。α和β分别控制假阴性和假阳性。通过调整α和β,可以控制假阳性和假阴性之间的平衡。

  • Focal Tversky Loss

与“Focal loss”相似,后者着重于通过降低易用/常见损失的权重来说明困难的例子。Focal Tversky Loss还尝试借助γ系数来学习诸如在ROI(感兴趣区域)较小的情况下的困难示例,如下所示:
FTL=c(1TIc)γ FTL=\sum_c (1-TI_c)^\gamma

  • log-Cosh Dice Loss

    盘点 深度学习的那些loss

将Cosh(x)函数和Log(x)函数合并,可以得到Log-Cosh Dice Loss:
Llcdce=log(cosh(DiceLoss)) L_{lc-dce} =log(cosh(DiceLoss))

  • Combo Loss

组合损失定义为Dice loss和修正的交叉熵的加权和。它试图利用Dice损失解决类不平衡问题的灵活性,同时使用交叉熵进行曲线平滑。定义为:(DL指Dice Loss)
Lmbce=1Niβ(ylog(y^))+(1β)(1y)log(1y^)CL(y,y^)=αLmbce(1α)DL(y,y^) L_{m-bce}=-\frac{1}{N}\sum_i\beta(y-log(\hat{y})) + (1-\beta)(1-y)log(1-\hat{y})\\ CL(y,\hat{y})=\alpha L_{m-bce}-(1-\alpha)DL(y, \hat{y})

  • 合页损失(Hinge Loss)
    Jhinge=Σi=1Nmax(0,1sgn(yi)y^i) J_{hinge}=\Sigma^N_{i=1}max(0, 1-sgn(y_i)\hat{y}_i)

盘点 深度学习的那些loss

  • HingeEmbeddingLoss

    对于 mini-batch(小批量) 中每个实例的损失函数如下:
    ln={xn,yn=1,max{0,Δxn},yn=1, l_n=\begin{cases}x_n, y_n=1,\\ max\lbrace0, \Delta - x_n\rbrace, y_n=-1,\end{cases}

  • 指数损失
    L(Y,f(X))=exp(Yf(X)) L(Y,f(X))=exp(-Yf(X))

  • 对数损失/对数似然损失(Log-likelihood Loss):对噪声比较敏感

L(Y,P(YX))=logP(YX) L(Y, P(Y|X))=-logP(Y|X)

  • KL散度损失

    熵:就是对信息量求期望值:
    H(X)=E[I(x)]=xXp(x)logp(x) H(X)=E[I(x)]=-\sum_{x∈X}p(x)logp(x)
    相对熵(relative entropy)又称为KL散度(Kullback-Leibler divergence),KL距离,是两个随机分布间距离的度量。记为DKL(p||q)。它度量当真实分布为p时,假设分布q的无效性。
    DKL(pq)=Ep[logp(x)q(x)]=H(p)+Ep[logq(x)] D_{KL}(p||q)=E_p[log\frac{p(x)}{q(x)}]=-H(p)+E_p[-logq(x)]

  • MarginRankingLoss

    对于 mini-batch(小批量) 中每个实例的损失函数如下:
    loss(x,y)=max(0,y(x1x2))+margin(=0) loss(x, y)=max(0, -y *(x1 - x2)) + margin(默认=0)

此外还有未介绍到的损失函数,比如, MultiLabelMarginLossSoftMarginLossMultiLabelSoftMarginLossTripletMarginLossCTCLossNLLLossNLLLoss2dPoissonNLLLoss, 还有目标检测所用到的loss: IoU Loss, GIoU Loss, CIoU Loss,DIoU Loss等(之后会详细介绍目标检测内容上讲),比如在语义分割领域还有: Sensitivity Specificity LossShape-aware Loss , Hausdorff Distance Loss , Exponential Logarithmic Loss,下表总结:

盘点 深度学习的那些loss

此外,损失函数有时候也离不开正则化:

  • L0范数
  • L1范数
  • L2范数
  • 迹范数
  • Frobenius范数
  • 核范数

以上这些范数如有兴趣大家可以去参考https://blog.csdn.net/luojun2007/article/details/78136615,讲的很清楚,我就不搬运了(懒)。

参考:

https://rorasa.wordpress.com/2012/05/13/l0-norm-l1-norm-l2-norm-l-infinity-norm/

https://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA==&mid=2247500026&idx=3&sn=e8fa6df1fa2639dee4c97aebf8bde20e&chksm=ec1c2d03db6ba4156f20f6478d22091a08fc804eeac7901f17a37b4d98b5ac3954bdcb724f39&mpshare=1&scene=1&srcid=07101tWKs18m8ri0lge0j8i4&sharer_sharetime=1594339433557&sharer_shareid=4e1eac3e3eb7330697402e2468a492c0&exportkey=A8Rnw26bY2nUlpxGzd%2Fz0LI%3D&pass_ticket=9xgOuflZBdzXa4WhVFcj2r2zz3GcLjMamNhXcYmp%2BmzjBBL9bmfFQzHVPBruicmr&wx_header=0#rd

https://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA==&mid=2247493294&idx=1&sn=d64822f1c2ca25901f7b707d78028364&chksm=ec1c0b57db6b82414c9177a13da5c1cceda8963785e22cb777b43892608c9ce71afc90c8d0c1&scene=21#wechat_redirect

https://blog.csdn.net/m0_37477175/article/details/83004746

https://zhuanlan.zhihu.com/p/89194726

https://blog.csdn.net/zandaoguang/article/details/107398963

https://zhuanlan.zhihu.com/p/97698386

c9ce71afc90c8d0c1&scene=21#wechat_redirect

https://blog.csdn.net/m0_37477175/article/details/83004746

https://zhuanlan.zhihu.com/p/89194726

https://blog.csdn.net/zandaoguang/article/details/107398963

https://zhuanlan.zhihu.com/p/97698386

盘点 深度学习的那些loss