深度学习:代价函数-分类,回归,多任务学习,多标签学习

摘要:持续更新,罗列部分常用的代价函数,以及论文中性能优越的代价函数,方便遇到不同问题时代价函数的选择。第一部分介绍最常见的几个代价函数,第二部分介绍论文中看到的不错的代价函数。

损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。

代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。

目标函数(Object Function)定义为:最终需要优化的函数。

目录

  1. 常见代价函数
    1. Mean Squared Error
    2. Mean Absolute Error
    3. Mean Absolute Percentage Error
    4. Mean Squared Logarithmic Error
    5. Log-Cosh
    6. Cross Entropy
    7. 多任务学习
    8. 多标签学习
  2. 论文中发现的代价函数
    1. 中心损失(Center Loss)
    2. 多任务学习:自适应加权的多任务代价函数
    3. 多标签学习:代价敏感的加权代价函数

1. 常见代价函数

  • Mean Squared Error

M S E = 1 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 MSE=\frac{1}{m}\sum_{i=1}^{m}\left(y^{(i)}-\hat{y}^{(i)}\right)^2 MSE=m1i=1m(y(i)y^(i))2

均方误差(MSE)是最常用的回归损失函数,计算方法是求预测值与真实值之间距离的平方和。计算方便,导数性能优秀。

回归问题代价函数的比较以均方误差为基准进行。

  • Mean Absolute Error

M A E = 1 m ∑ i = 1 m ∣ y ( i ) − y ^ ( i ) ∣ MAE=\frac{1}{m}\sum_{i=1}^{m}\left|y^{(i)}-\hat{y}^{(i)}\right| MAE=m1i=1my(i)y^(i)

平均绝对误差(MAE)同样是一种用于回归模型的损失函数,是目标值和预测值之差的绝对值之和。其只衡量了预测值误差的平均模长,而不考虑方向。

MAE对异常值更鲁棒,在训练数据中存在异常点的时候性能优于MSE。但是在神经网络中使用时存在很严重的缺陷,它的梯度始终相同,即使在误差很小的情况下,也会有较大的权重更新,要避免该问题需要额外采用权重衰减的措施。

  • Mean Absolute Percentage Error

M A P E = 100 × 1 m ∑ i = 1 m ∣ y ( i ) − y ^ ( i ) y ( i ) ∣ MAPE=100\times\frac{1}{m}\sum_{i=1}^{m}\left|\frac{y^{(i)}-\hat{y}^{(i)}}{y^{(i)}}\right| MAPE=100×m1i=1my(i)y(i)y^(i)

平均绝对百分误差(MAPE)关注绝对误差占真实值的比例。直观的看,显然将 1.0 1.0 1.0预测称 0.0 0.0 0.0和将 100.0 100.0 100.0预测成 99.0 99.0 99.0的影响是不一样的,而在MSE和MAE中两者会得到相同的损失。

  • Mean Squared Logarithmic Error

M S L E = 1 m ∑ i = 1 m ( log ⁡ y ( i ) − log ⁡ y ^ ( i ) ) 2 MSLE=\frac{1}{m}\sum_{i=1}^{m}\left(\log{y^{(i)}}-\log\hat{y}^{(i)}\right)^2 MSLE=m1i=1m(logy(i)logy^(i))2

均方对数损失,预先对数据取对数,是对MSE的改进,防止较大的预测值对较小的预测值的影响。在MSE中,较大的预测值会引导较小的预测值预测不准。

  • Log-Cosh

L = ∑ i = 1 m log ⁡ ( cosh ⁡ ( y ( i ) − y ^ ( i ) ) ) L=\sum_{i=1}^{m}\log\left(\cosh\left(y^{(i)}-\hat{y}^{(i)}\right)\right) L=i=1mlog(cosh(y(i)y^(i)))

Log-cosh是一种应用于回归问题中的,且比MSE更平滑的的损失函数。它的计算方式是预测误差的双曲余弦的对数。

基本类似于MSE,但不易受异常点的影响。损失较小时近似等于MSE,损失较大时近似等于MAE。而且其二阶可微。但若误差很大,梯度和Hessian矩阵会变成定值。

  • Cross Entropy

L ( y ( i ) , y ^ ( i ) ) = − ∑ k = 1 K y k ( i ) ln ⁡ y ^ k ( i ) L(y^{(i)},\hat y^{(i)})=-\sum_{k=1}^K y_k^{(i)}\ln \hat y^{(i)}_k L(y(i),y^(i))=k=1Kyk(i)lny^k(i)

交叉熵主要用于分类问题,这里的 K K K表示的是类别标签的维数,也就是类别数。 i i i表示第 i i i个样本。

  • 多任务学习

L ( y ( i ) , y ^ ( i ) ) = ∑ t = 1 T α t L t ( y ( i ) , y ^ ( i ) ) L(y^{(i)},\hat y^{(i)})=\sum_{t=1}^T\alpha_t L_t(y^{(i)},\hat y^{(i)}) L(y(i),y^(i))=t=1TαtLt(y(i),y^(i))

多任务学习的代价函数通常是不同任务代价函数的加权和。

  • 多标签学习

深度学习中,多标签学习的代价函数通常是二分类损失,每个位置都进行sigmoid规范化,使其靠近0或者1。

2. 论文中的代价函数

  • 中心损失(Center Loss)

用于分类问题,是softmax函数的改进,将softmax函数与聚类问题相结合,在损失函数中增大类间距离而减小类内距离,在人脸识别中有不错的效果,具体见文献。

参考文献:
【1】2016 A Discriminative Feature Learning Approach for Deep Face Recognition

论文地址:https://ydwen.github.io/papers/WenECCV16.pdf

代码链接:https://spaces.ac.cn/archives/4493

  • 多任务学习:自适应加权的多任务代价函数

多任务学习的代价函数对不同的任务通常有不同的权重。

作者根据多任务学习设计的代价函数,通过观测噪声对不同尺度的损失自适应加权,能减少对多任务权重进行超参数优化的时间。

参考文献:
【1】Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics

论文地址:https://arxiv.org/abs/1705.07115v3

代码链接:https://github.com/yaringal/multi-task-learning-example

  • 多标签学习:代价敏感的加权代价函数

多标签学习中,不同的代价函数对每个标签的敏感程度不同,因此通常需要给予每个标签不同的重要性。

参考文献:
【1】2018 Deep Learning with a Rethinking Structure for Multi-label Classification

论文链接:https://arxiv.org/abs/1802.01697v2

代码链接:https://github.com/yangarbiter/multilabel-learn

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值