- 深度学习之模型设计:核心算法与案例实践
- 言有三
- 2295字
- 2021-04-04 03:40:18
3.3 优化目标
在机器学习中,损失函数(Loss Function)可用来估量模型的预测值f(x)与真实值Y的不一致程度,损失函数越小,一般就代表模型的鲁棒性越好,损失函数指导了模型的学习。机器学习任务本质上可分为分类问题与回归问题。
3.3.1 分类任务损失
1.0-1损失
0-1损失是最原始的损失,它直接比较输出值与输入值是否相等,对于样本i,它的损失为
当标签与预测类别相等时,损失为0,否则为1。可以看出,0-1损失无法对x进行求导,这使其在依赖反向传播的深度学习模型中无法被优化,因此0-1损失更多的是启发新的损失的产生。
2.熵与交叉熵损失
在物理学中,熵表示一个热力学系统的无序程度。为了解决对信息的量化度量问题,香农在1948年提出了“信息熵”的概念。其使用对数函数表示对不确定性的测量,熵越高,表示能传输的信息越多;熵越少,表示传输的信息越少,我们可以直接将熵理解为信息量。
按照香农的理论,任何信息都存在冗余,并且冗余大小与信息中每个符号(数字、字母或单词)的出现概率或者说不确定性有关。符号出现概率大,则不确定性小,这个关系就可用对数函数来表征。
为什么选择对数函数而不是其他函数呢?因为不确定性必须是概率p的单调递减函数,假设一个系统中各个离散事件互不相关,要求其总的不确定性等于各自不确定性之和,那么对数函数可以满足这个要求,因此可以将不确定性f定义为-logp。
对于单个的信息源,信源的平均不确定性就是单个符号不确定性-logpi的统计平均值,信息熵的定义如下。
假设有两个概率分布p(x)和q(x),其中p是已知的分布,q是未知的分布,则其交叉熵函数是两个分布的互信息,可以反映两个概率分布的相关程度。
从这里我们就引出了分类任务中最常用的损失,即log损失,又名交叉熵损失(后面我们将其称为交叉熵):
式中,n是样本数量;m是类别数量;yij是第i个样本属于类别j的标签,对于单分类任务,只有一个分类的标签非零;f(xij)是样本i预测为类别j的概率。损失的大小完全取决于分类为正确标签那一类的概率,当所有的样本都分类正确时,损失为0;否则,损失大于0。
3.Softmax损失及其变种
假如交叉熵中的f(xij)的表现形式是Softmax,那么交叉熵就是我们熟知的Softmax Cross Entropy损失,简称Softmax损失,所以,Softmax损失只是交叉熵的一个特例。
Softmax损失被广泛用于分类分割等任务,而且发展出了很多变种,如有针对不平衡样本问题的Weighted Softmax损失、Focal损失,针对蒸馏学习的Soft Softmax损失,以及促进类内更加紧凑的L-Softmax损失等。
4.KL散度
KL散度用于估计两个分布的相似性,定义如下。
Dkl函数值是非负的,只有当p与q处处相等时其才会等于0,式(3.7)也等价于式(3.8)。
式中,-l(p,p)是分布p的熵;l(p,q)是p和q的交叉熵。假如p是一个已知的分布,则-l(p,p)是一个常数,此时Dkl(p|q)与l(p,q)只差一个常数,两者是等价的。同时值得注意的是,KL散度并不是一个对称的损失,即Dkl(p|q)≠Dkl(q|p)。KL散度常被用于生成式模型,后面我们会介绍其在GAN中的应用。
5.Hinge损失
Hinge损失主要用于支持向量机中,它的称呼来自损失的形状,定义如下。
如果分类正确,Hinge损失为0;如果分类错误,则为1-f(x)。所以Hinge损失是一个分段不光滑的曲线,常被用来解SVM问题中的间距最大化问题。
6.Exponential损失与Logistic损失
Exponential损失是一个指数形式的损失,它的特点是梯度比较大,主要用于Adaboost集成学习算法中,定义如下。
Logistic损失是Exponential损失的对数形式,梯度变化相对更加平缓,定义如下。
7.多标签分类任务损失
多标签分类任务与单分类任务不同,在该任务中,每幅图像可能属于多个类别,因此需要预测样本属于每个类的概率,Sigmoid Cross Entropy损失通常被用于多分类任务,其中单个样本的损失定义如下。
式中,i是类别数目;yi是标签;f(xi)是预测概率。多标签分类任务与单分类任务的最大不同是yi可能有多个非零值,即样本同时属于不同类别。如果将每个任务看作独立的单分类任务,也可以使用各个类别的Softmax损失的和进行计算。
3.3.2 回归任务损失
在回归任务中,回归的结果是一些整数或实数,并没有先验的概率密度分布,其常使用的损失是L1损失和L2损失。
1.L1损失
Mean Absolute Loss(MAE Loss)也称为L1损失,其以绝对误差作为距离:
L1损失具有稀疏性,常常被作为正则项添加到其他损失中来约束参数的稀疏性,L1损失的最大问题是梯度在零点不平滑。
2.L2损失
Mean Squared Loss/Quadratic Loss(MSE Loss)也被称为L2损失或欧氏距离,它以误差的平方和作为距离:
L2损失也常常作为正则项。当预测值与目标值相差很大时,梯度容易爆炸,因为梯度中包含了预测值和目标值的差异项。
3.L1损失与L2损失的改进
L1损失和L2损失都有缺陷,如L1损失的最大问题是梯度不平滑,而L2损失的最大问题是梯度容易爆炸,所以研究者对其进行了很多改进。
Faster RCNN框架使用了Smooth L1损失来综合L1损失与L2损失的优点,定义如下。
在x比较小时,式(3.15)等价于L2损失,保持平滑;在x比较大时,式(3.15)等价于L1损失,可以限制数值的大小。为了增强L2损失对噪声(离群点)的鲁棒性,研究者提出了Huber损失,定义如下。
Huber损失对于离群点非常有效,它同时结合了L1损失与L2损失的优点,不过需要对参数δ进行训练。除此之外,还有Log-Cosh损失等,读者可以自行了解。
另外,对于图像风格化、图像超分辨率重建等任务来说,其早期都使用了图像像素空间的L2损失,但L2损失与人眼感知的图像质量并不匹配,恢复出来的图像往往细节表现不好。在相关研究中,L2损失逐步被人眼感知损失所取代。人眼感知损失也被称为Perceptual损失,与L2损失的不同之处在于,其所计算的空间不再是图像空间,研究者常使用VGG等网络的特征来进行计算。
令ϕ表示损失网络,Cj表示网络的第j层,CjHjWj表示第j层的特征图的大小,则人眼感知损失的定义如下。
可以看出,它有与L2损失同样的形式,只是计算的空间被转换到了特征空间。