本次博客是深度学习的作业:系统总结了深度学习中监督学习的主要的损失函数,并指出各自的适应条件和优缺点。觉得很有意义,就记录下来供大家参考。
损失函数
损失函数的作用
在监督学习中,损失函数用于评估单个样本经模型计算后输出的预测值与真实值的不一致程度。它是一个非负实值函数,主要特点为:恒非负;误差越小,函数值越小;收敛快。损失函数的值直接影响着模型的预测性能,损失函数值越小,模型的预测性能就越好。另外,作为样本间相似度度量标准,损失函数用来刻画样本真实值与预测值之间的关系,如果损失值小于某一值,则认为样本是相似的,否则认为是不相似的。
损失函数的分类
本文依据损失函数度量方式的不同,将主要损失函数分为基于距离度量的损失函数和基于概率分布度量的损失函数。
基于距离度量的损失函数
基于距离度量的损失函数通常将输入数据映射到基于距离度量的特征空间上,如欧氏空间、汉明空间等,将映射后的样本看作空间上的点,采用合适的损失函数度量特征空间上样本真实值和模型预测值之间的距离。特征空间上两个点的距离越小,模型的预测性能越好。
函数名 | 标准形式 | 优点 | 缺点 | 应用 | 演变的损失函数 | 适用于 | 不适于 | 实际应用 | 搭配的优化方法 |
---|---|---|---|---|---|---|---|---|---|
平方损失 (squared loss)函数 | ( Y − f ( x ) ) 2 (Y-f(x))^{2} (Y−f(x))2 | 计算方便、逻辑清晰、评估误差较准确以及可求得全局最优解。 | 在回归问题中,平方损失用于度量样本点到回归曲线的距离,通过最小化平方损失使样本点可以更好地拟合回归曲线。在机器学习的经典算法(反向传播算法、循环神经网络、流形学习、随机森林和图神经网络)中,常选用平方损失及其演化形式作为模型对误检测样本进行惩罚的依据。 | 基于平方损失演化的损失函数有加权平方损失函数、和方误差(sum squared error,SSE)函数、均方误差(mean squared error,MSE)函数、L2损失(L2 loss)函数、均方根误差(root mean squared error,RMSE)函数、 x 2 x^{2} x2检验(chi-square test)函数、triple损失函数和对比损失(contrastive loss)函数 | 回归问题;分类或标注问题;实现离散问题的预测 | 因为它对离群点比较敏感,所以它不适合离群点较多的数据集。 | 实际应用中,由于模型泛化问题等原因,一般不常使用平方损失函数的标准形式,而更多使用它的演化的损失函数 | 由于平方损失函数是可微的凸函数,常与之搭配的优化方法为随机梯度下降或牛顿法。 | |
绝对损失(absolute loss)函数 | | Y − f ( x ) | |Y-f(x)| |Y−f(x)| | 是最常见的一种损失函数,它不仅形式简单,而且能很好地表达真实值和预测值之间的距离;对离群点有很好的鲁棒性。 | 在残差为零处不可导;更新的梯度始终相同,也就是说,即使很小的损失值,梯度也很大,这样不利于模型的收敛。针对它的收敛问题, 一般的解决办法是在优化算法中使用变化的学习率,在损失接近最小值时降低学习率。 | 在有噪声标签的分类问题中,基于平均绝对误差构建的神经网络具有良好的噪声容忍能力,在单幅图像超分辨率重建中,选用绝对损失函数可使重建的图像失真更少,smooth L1损失在目标检测问题中可有效解决梯度爆炸问题。 | 基于绝对损失的演化损失函数包括平均绝对误差函数、平均相对误差 (mean relative error,MRE)函数、L1 损失(L1 loss)函数、Chebyshev损失函 数、Minkowski损失函数、smooth L1损失函数、huber损失函数和分位数损失 (quantile loss)函数 | 绝对损失及其演化损失更适用于有较多离群点的数据集。 | |||
0-1损失(zero-one loss)函数 | L ( Y , f ( x ) ) = { 1 , Y ≠ f ( x ) 0 , Y = f ( x ) L(Y, f(x))=\left\{\begin{array}{l}1, Y \neq f(x) \\ 0, Y=f(x)\end{array}\right. L(Y,f(x))={ 1,Y=f(x)0,Y=f(x) | 直观简单,易理解,它的分类思想为之后出现的其他分类算法奠定了基础。 | 它不考虑预测值和真实值的误差程度,是一种绝对分类方法;由于没有考虑噪声对现实世界数据的影响因素,对每个误分类样本都施以相同的惩罚,预测效果不佳,甚至出现严重误分类情况;是一种 不连续、非凸且不可导函数,优化困难。 | 分类 | 基于0-1损失的分类思想,出现了最常见的分类模型—— K最近邻(K nearest neighbor,KNN);研究人员在0-1损失的基础上引 入参数,进一步放宽分类标准,将其演化为感知机损失(perceptron loss)。 | 0-1损失函数在对称或均匀噪声的数据集上具有较好的鲁棒性。 | |||
铰链损失(hinge loss)也被称为合页损失 | max ( 0 , 1 − Y f ( x ) ) , Y ∈ { − 1 , 1 } \max (0,1-Y f(x)), Y \in\{-1,1\} max(0,1−Yf(x)),Y∈{ −1,1} | 铰链损失函数是一个凸函数,因此,铰链损失函数可应用于机器学习领域的很多凸优化 方法中。 | 对错误越大的样本,它施以越严重的惩罚, 这可能使它对噪声敏感,从而降低模型的泛化能力。 | 铰链损失函数最著名的应用是作为支持向量机(support vector machine,SVM)的目标函数,其性质决定了SVM具有稀疏性,也就是说,分类正确但概率不足1和分类错误的样本被识别为支持向量,用于划分决策边界,其余分类完全正确的样本没有参与模型求解。 | 基于铰链损失的演化损失函数包括边界铰链损失函数、坡道损失(ramp loss)函数、Crammerand铰链损失函数、Weston铰链损失函数、二分类支持向量机损失函数、多分类支持向量机损失函数、 多分类支持向量机平方损失函数和top-k铰链损失函数 | 铰链损失及其演化损失函数常作为人脸识别、文本分类、笔迹识别和图像自动标注领域的损失函数,用于度量图像的相似性或向量空间中向量的距离 | 对噪声敏感,易降低模型的泛化能力 | ||
中心损失(center loss)函数 | 1 2 ∑ i = 1 n D ( f ( x i ) , c y i ) \frac{1}{2} \sum_{i=1}^{n} D\left(f\left(x^{i}\right), c_{y_{i}}\right) 21∑i=1nD(f(xi),cyi) | 它一般不单独使用, 常与softmax损失函数搭配使用,其分类 效果比只用softmax损失函数更好。 | 常用于神经网络模型中,实现类内相聚、类间分离。在特征学习时,当期望特征不仅可分,而且必须差异大时,通常使用中心损失函数减小类内变化,增加不同类特征的可分离性。 | 基于中心损失的演化损失函数有三元中心损失(triplet-center loss,TCL)函数 | 在实际应用中,由于中心损失函数本身考虑类内差异,因此中心损失函数应与主要考虑类间的损失函数搭配使用,如softmax损失、交叉熵损失 | ||||
余弦损失(cosine loss)也被称为余 弦相似度 | Y f ( x ) ∥ Y ∥ ∥ f ( x ) ∥ \frac{Y f(x)}{\|Y\|\|f(x)\|} ∥Y∥∥f(x)∥Yf(x) | 它用向量空间中两个向量夹角的余弦值衡量两个样本的差异。与欧氏距离相比,余弦距离对具体数值的绝对值不敏感,而更加注重两个向量在方向上的差异。 | 在监督学习中,余弦相似度常用于计算文本或标签的相似度。它常与词频-逆向文件频率(term frequency–inversedocument frequency,TF-IDF)算法结合使用,用于文本挖掘中的文件比较。在数据挖掘领域,余弦损失常用于度量集群内部的凝聚力。 | 基于余弦损失的演化损失函数有改进的余弦距离核函数,它是由李为等人在与文本相关的说话人确认技术中提出的,用来区分说话人身份及文本内容的差异 |
基于平方损失的演化损失函数
函数名 | 演化形式 | 特点 |
---|---|---|
加权平方损失函数 | λ ( Y − f ( x ) ) 2 \lambda(Y-f(x))^{2} λ(Y−f(x))2 | 加权平方损失函数通过加权修改样本真实值与预测值之间的误差,使样本到拟 合曲线的距离尽可能小,即找到最优拟合曲线。 |
和方误差(sum squared error,SSE)函数 | ∑ i = 1 n ( Y i − f ( x i ) ) 2 \sum_{i=1}^{n}\left(Y_{i}-f\left(x_{i}\right)\right)^{2} ∑i=1n(Yi−f(xi))2 | 在正负样本比例相差很大时,和方误差函数通过计算拟合数据和原始数据对应点的误差平方和,使正样本点更加靠近拟合曲线, 与均方误差函数相比,和方误差函数可以更好地表达误差。 |
均方误差(mean squared error,MSE) 函数 | 1 n ∑ i = 1 n ( Y i − f ( x i ) ) 2 \frac{1}{n} \sum_{i=1}^{n}\left(Y_{i}-f\left(x_{i}\right)\right)^{2} n1∑i=1n(Yi−f(xi))2 | MSE的思想是使各个训练样本点到最优拟合曲线的距离最小,常用于评价数据的变化程度。MSE的值越小,表示预测模型描 述的样本数据具有越好的精确度。由于无 参数、计算成本低和具有明确物理意义等优点,MSE已成为一种优秀的距离度量方法。尽管MSE在图像和语音处理方面表现较弱,但它仍是评价信号质量的标准,在回归问题中,MSE常被作为模型的经验损失或算法的性能指标。 |
L2损失(L2 loss)函数又被称为欧氏距离 | ∑ i = 1 n ( Y i − f ( x i ) ) 2 \sqrt{\sum_{i=1}^{n}\left(Y_{i}-f\left(x_{i}\right)\right)^{2}} ∑i=1n(Yi−f(xi))2 | 是一种常用的距离度量方法,通常用于度量数据点之间的相似度。由于L2损失具有凸性和可微性,且在独立、同分布的高斯噪声情况下,它能提供最大似然估计,使得它成为回归问题、模式识别、图像处理中最常使用的损失函数 |
均方根误差 (root mean squared error,RMSE)函数 | 1 n ∑ i = 1 n ( Y i − f ( x i ) ) 2 \sqrt{\frac{1}{n} \sum_{i=1}^{n}\left(Y_{i}-f\left(x_{i}\right)\right)^{2}} n1∑i=1n(Yi−f(xi))2 | 直观地揭示了模型的输出预测值与样本真实值的离散程度,常被作为回归算法的性能度量指标。尽管与平均绝对误差(MAE) 相比,RMSE计算更复杂且易偏向更高的误差,但由于其是平滑可微的函数,且更容易进行运算,目前仍是许多模型默认的度量标准 |
x 2 x^{2} x2检验(chi-square test)函数也被称为 x 2 x^{2} x2统计 | 1 2 ∑ i = 0 n − 1 ( A i − B i ) 2 A i + B i \frac{1}{2} \sum_{i=0}^{n-1} \frac{\left(A_{i}-B_{i}\right)^{2}}{A_{i}+B_{i}} 21∑i=0n−1Ai+Bi(Ai−Bi)2 | 常用于计算图像直方图之间的距离 |
triple损失 函数 | ∑ i N ( ∥ f ( x i a ) − f ( x i p ) ∥ 2 2 − ∥ f ( x i a ) − f ( x i n ) ∥ 2 2 + α ) \sum_{i}^{N}\left(\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{p}\right)\right\|_{2}^{2}-\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{n}\right)\right\|_{2}^{2}+\alpha\right) ∑iN(∥f(xia)−f(xip)∥22−∥f(xia)−f(xin)∥22+α) | triple 损失函数不能对每一个单独的样本进行约束,由于其具有类间距离大于类内距离的特性,首次出现在基于卷积神经网络 (convolutional neural network,CNN) 的人脸识别任务中便取得了令人满意的效果。 |
对比损失(contrastive loss)函数 | 1 2 n ∑ i = 1 N y d 2 + ( 1 − y ) max ( margin − d , 0 ) 2 \frac{1}{2 n} \sum_{i=1}^{N} y d^{2}+(1-y) \max (\operatorname{margin}-d, 0)^{2} 2n1∑i=1Nyd2+(1−y)max(margin−d,0)2 | 对比损失函数是一个成对损失函数, 在使用时除需样本本身外,还需一个对比数据,可见,它也不能对每一个单独的样本进行约束。对比损失函数不仅能降维,而且降维后成对样本的相似性保持不变,可以很好地表达成对样本的匹配程度(是否可以用于手语识别中) ,另 外,它能扩大类间距离,缩小类内距离, 在人脸验证算法中,常被作为人脸判断的依据。 |
基于绝对损失的演化损失函数
函数名 | 演化形式 | 特点 |
---|---|---|
平均绝对误差 (mean absolute error, MAR)函数 | 1 n ∑ i = 1 n ∣ Y i − f ( x i ) ∣ \frac{1}{n} \sum_{i=1}^{n}\left \lvert Y_{i}-f\left(x_{i}\right)\right \rvert n1∑i=1n∣Yi−f(xi)∣ | 平均绝对误差函数表达预测误差的实际情况,只衡量预测误差的平均模长,不考虑方向,一般作为回归算法的性能指标。 |
平均相对误差 (mean relative error,MRE)函数 | 1 n ∑ i = 1 n ∣ Y i − f ( x i ) ∣ Y i \frac{1}{n} \sum_{i=1}^{n} \frac{\left \lvert Y_{i}-f\left(x_{i}\right)\right\rvert}{Y_{i}} n1∑i=1nYi∣Yi−f(xi)∣ | 平均相对误差函数既指明误差的大小,又指明其正负方向。一般来说,与平均绝对误差函数相比,它更能反映评估的可信程度 |
L1 损失(L1 loss)函数又称为曼哈顿距离 | ∑ i = 1 n ∣ Y i − f ( x i ) ∣ \sum_{i=1}^{n}\left \lvert Y_{i}-f\left(x_{i}\right)\right \rvert ∑i=1n∣Yi−f(xi)∣ | 表示残差的绝对值之和 |
Chebyshev损失函数也称切比雪夫距离 | max i = 1 n ( ∣ Y i − f ( x i ) ∣ ) \max _{i=1}^{n} \left(\mid Y_{i}-f\left(x_{i}\right)\rvert \right) maxi=1n(∣Yi−f(xi)∣) | 是向量空间中的一 种度量方法 |
Minkowski损失函数也被称为闵氏距离或闵可夫斯基距离 | ( ∑ i = 1 n ∣ Y i − f ( x i ) ∣ p ) 1 p \left(\sum_{i=1}^{n}\left \lvert Y_{i}-f\left(x_{i}\right)\right \rvert^{p}\right)^{\frac{1}{p}} (∑i=1n∣Yi−f(xi)∣p)p1 | 是欧氏空间中的一种度量方法,常被看作欧氏距离和曼哈顿距离的一种推广。 |
smooth L1损失函数 | { 1 2 ( Y − f ( x ) ) 2 , ∣ Y − f ( x ) ∣ < 1 ∣ Y − f ( x ) ∣ − 1 2 , ∣ Y − f ( x ) ∣ ⩾ 1 \left\{\begin{array}{l}\frac{1}{2}(Y-f(x))^{2},\lvert Y-f(x)\rvert <1 \\ \lvert Y-f(x)\rvert-\frac{1}{2},\lvert Y-f(x)\rvert \geqslant 1\end{array}\right. { 21(Y−f(x))2,∣Y−f(x)∣<1∣Y−f(x)∣−21,∣Y−f(x)∣⩾1 | smooth L1损失是由Girshick R在Fast R-CNN中提出的,主要用在目标检测中防止梯度爆炸。 |
huber损失函数 | { 1 2 ( Y − f ( x ) ) 2 , ∣ Y − f ( x ) ∣ ⩽ δ δ |