统计学习知识点整理——机器学习常见损失函数

损失函数作用:损失函数是用于衡量模型预测值与真实值之间差距的函数,损失函数的值越小越好。

常见的损失函数有如下几种:

分类问题

0-1损失函数(Zero-one Loss):

当且仅当预测为真的时候取值为1,否则取值为0。可以看出该损失函数过于严格,导致其具有非凸、非光滑的特点,使得算法很难直接对该函数进行优化。

损失函数权重的意义 损失函数种类_机器学习

感知损失函数(Perceptron Loss):

感知损失函数在0-1损失函数的基础上增加一个阈值,大于阈值则为正例,小于阈值则为负例。

损失函数权重的意义 损失函数种类_人工智能_02

铰链损失函数(Hinge Loss):

铰链损失函数又叫间隔损失函数,用于解决二分类问题,例如SVM中的几何间隔最大化问题。

损失函数权重的意义 损失函数种类_损失函数_03

指数损失函数:

指数损失函数主要用于AdaBoost,AdaBoost算法是模型为加法模型,损失函数为指数函数,学习算法为前向分步算法时的二类分类算法。

损失函数权重的意义 损失函数种类_人工智能_04

交叉熵损失函数(cross-entropy Loss):

交叉熵(Cross Entry)也叫逻辑斯谛回归损失(Logistic Loss)或对数似然损失(Log-likelihood Loss),是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其离散函数形式:

这篇文章对交叉熵有比较好的解释:交叉熵损失函数详解

损失函数权重的意义 损失函数种类_损失函数权重的意义_05

回归问题

平方损失函数(Square Loss):

平方损失函数用于测量机器学习模型的输出与实际结果之间的距离,光滑函数,能够使用梯度下降法优化。然而当预测值距离真是只越远时,平方损失函数的惩罚力度越大,因此对异常点比较敏感。

损失函数权重的意义 损失函数种类_人工智能_06

均方损失函数(MSE):

均方损失函数就是平方损失函数/n计算平均值。又叫L2损失函数。

损失函数权重的意义 损失函数种类_机器学习_07

绝对值损失函数(Absolute Loss):

绝对损失函数相当于在做中值回归,相比做均值回归的平方损失函数,绝对损失函数对异常点更鲁棒。但是,绝对损失函数在f=y处无法求导。又叫L1损失函数。

损失函数权重的意义 损失函数种类_深度学习_08

Huber损失函数

Huber损失函数在|y-f(x)|较小时为平方损失,在|y-f(x)|较大的时采用线性损失,处处可导,且对异常点鲁棒。其优点是可以增强MSE在异常点的鲁棒性。

损失函数权重的意义 损失函数种类_损失函数_09

L1损失函数和L2损失函数的对比:

L1比L2更鲁棒:L2范数将误差平方化(如果误差大于1,则误差会放大很多),模型的误差会比L1范数来得大,因此模型会对这个样本更加敏感,这就需要调整模型来最小化误差。如果这个样本是一个异常值,模型就需要调整以适应单个的异常值,这会牺牲许多其它正常的样本,因为这些正常样本的误差比这单个的异常值的误差小。

L2比L1稳定:对于一个数据点的任何微小波动,回归线总是只会发生轻微移动。

损失函数权重的意义 损失函数种类_人工智能_10


MAE更新的梯度始终相同,即使对于很小的值,梯度也很大,可以使用变化的学习率。

MSE就好很多,使用固定的学习率也能有效收敛。

平方损失函数和交叉熵损失函数:

交叉熵损失函数只和分类正确的预测结果有关。

而平方损失函数还和错误的分类有关,该损失函数除了让正确分类尽量变大,还会让错误分类都变得更加平均。

损失函数权重的意义 损失函数种类_损失函数_11

关于其区别,可以参考这篇博文:(平方损失函数与交叉熵损失函数),上面截图转自此博文。