返回博客列表

Untitled

Loss Function/Cost Function

损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。

  1. 损失函数(loss function)或代价函数(cost function)
    损失函数定义为给定输入X 预测值f(X)真实值Y之间的非负实值函数,记作L(Y,f(X))

  2. 风险函数(risk function)或期望损失(expected loss)
    这个和模型的泛化误差的形式是一样的
    R_{exp}(f)=E_p[L(Y, f(X))]=\int_{\mathcal X\times\mathcal Y}L(y,f(x))P(x,y)\, {\rm d}x{\rm d}y
    模型f(X) 于联合分布P(X,Y) 平均意义下的损失(期望损失),但是因为P(X,Y) 未知的,所以前面的用词是期望,以及平均意义下的

这个表示其实就是损失的均值,反映了对整个数据的预测效果的好坏,P(x,y) 换成\frac {\nu(X=x, Y=y)}{N} 容易直观理解, 可以参考CH09,6.2.2 节的部分描述来理解,但是真实的数据 N 是无穷的。

  1. 经验风险(empirical risk)或经验损失(empirical loss)
    R_{emp}(f)=\frac{1}{N}\sum^{N}_{i=1}L(y_i,f(x_i))
    模型f训练样本集的平均损失
    根据大数定律,当样本容量 N 趋于无穷大时,经验风险趋于期望风险

  2. 结构风险(structural risk)
    R_{srm}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f)
    J(f) 模型复杂度, \lambda \geqslant 0​ 是系数,用以权衡经验风险和模型复杂度。

Mean Square Error(MSE)

均方误差指的就是模型预测值f(x) 样本真实值y 间距离平方的平均值。


MSE=\frac{1}{m}\sum\limits_{i=1}^{m}(y_i-f(x_i))^2

其中,y_i f(x_i) 别表示第 i 样本的真实值和预测值,m 样本个数。
为了简化讨论,忽略下标im = 1,以y-f(x)​ 为横坐标,MSE 为纵坐标,绘制其损失函数的图
形:

特点

MSE 曲线的特点是光滑连续、可导,便于使用梯度下降算法,是比较常用的一种损失函数。而且,MSE 随着误差的减小,梯度也在减小,这有利于函数的收敛,即使固定学习因子,函数也能较快取得最小值。平方误差有个特性,就是当 y_if(x_i) 的差值大于 1 时,会增大其误差;当 y_if(x_i) 的差值小于 1 时,会减小其误差。这是由平方的特性决定的。也就是说, MSE 会对误差较大(>1)的情况给予更大的惩罚,对误差较小(<1)的情况给予更小的惩罚。从训练的角度来看,模型会更加偏向于惩罚较大的点,赋予其更大的权重。
如果样本中存在离群点,MSE 会给离群点赋予更高的权重,但是却是以牺牲其他正常数据点的预测效果为代价,这最终会降低模型的整体性能。

Mean Absolute Error(MAE)


MAE=\frac{1}{m}\sum\limits_{i=1}^{m}|y_i-f(x_i)|

为了简化讨论,忽略下标im = 1,以 y-f(x)​ 为横坐标,MAE 为纵坐标,绘制其损失函数的图
形:

image-20210904205551904

直观上来看,MAE 的曲线呈 V 字型,连续但在 y-f(x)=0​ 处不可导,计算机求解导数比较困难。而且 MAE 大部分情况下梯度都是相等的,这意味着即使对于小的损失值,其梯度也是大的。这不利于函数的收敛和模型的学习。
值得一提的是,MAE 相比 MSE 有个优点就是 MAE 对离群点不那么敏感,更有包容性。因为 MAE 计算的是误差 y-f(x) 的绝对值,无论是 y-f(x)>1y-f(x)<1​,没有平方项的作用,惩罚力度都是一样的,所占权重一样。实际应用中,我们应该选择 MSE 还是 MAE 呢?从计算机求解梯度的复杂度来说,MSE 要优于 MAE,而且梯度也是动态变化的,能较快准确达到收敛。但是从离群点角度来看,如果离群点是实际数据或重要数据,而且是应该被检测到的异常值,那么我们应该使用 MSE。另一方面,离群点仅仅代表数据损坏或者错误采样,无须给予过多关注,那么我们应该选择 MAE 作为损失。

Huber Loss


L_\delta(y,f(x))=
\begin{cases}\frac{1}{2}(y-f(x))^2&\mid y-f(x)\mid \leq \delta\\delta\mid y-f(x) \mid-\frac{1}{2}\delta^2&\mid y-f(x)\mid>\delta\end{cases}

Huber Loss 是对二者(MSE/MAE)的综合,包含了一个超参数\delta\delta 的大小决定了 Huber Loss 对 MSE 和 MAE 的侧重性, 当 \mid y−f(x)\mid\leq \delta 时, 变为 MSE; 当 \mid y−f(x)\mid> \delta 时, 则变成类似于 MAE,因此 Huber Loss 同时具备了 MSE 和 MAE 的优点,减小了对离群点的敏感度问题,实现了处处可导的功能。通常来说,超参数 \delta​ 可以通过交叉验证选取最佳值。下面,分别取 \delta = 0.1\delta = 10​,绘制相应的 Huber Loss,如下图所示:

image-20210904210855521

Huber Loss 在\mid y−f(x)\mid> \delta 时,梯度一直近似为\delta,能够保证模型以一个较快的速度更新参数。当 \mid y−f(x)\mid\leq \delta 时,梯度逐渐减小,能够保证模型更精确地得到全局最优值。因此,Huber Loss 同时具备了前两种损失函数的优点。

0-1 loss


L(Y,f(X))=\begin{cases}1,& Y \neq f(X) \0, &Y=f(X) \end{cases}

特点:

(1)0-1 损失函数直接对应分类判断错误的个数,但是它是一个非凸函数,不太适用.

(2)感知机就是用的这种损失函数。但是相等这个条件太过严格,因此可以放宽条件,即满足\mid Y-f(X)\mid < T​​ 时认为相等,


L(Y,f(X))=\begin{cases}1,&\mid Y-f(X)\mid \geq T \0, &\mid Y-f(X)\mid < T \end{cases}

Quadratic Loss


L(Y,f(X))=(Y-f(X))^2

特点:

经常应用与回归问题

Logarithmic Loss


L(Y,P(Y|X))=-\log P(Y|X)

这里P(Y|X)\leqslant 1,对应的对数是负值,所以对数损失中包含一个负号.

(1) log 对数损失函数能非常好的表征概率分布,在很多场景尤其是多分类,如果需要知道结果属于每个类别的置信度,那它非常适合。

(2)健壮性不强,相比于 hinge loss 对噪声更敏感。

(3)逻辑回归的损失函数就是 log 对数损失函数。

Hinge Loss

在机器学习中,hinge loss作为一个损失函数(loss function),通常被用于最大间隔算法(maximum-margin),而最大间隔算法又是 SVM(支持向量机 support vector machines)用到的重要算法。Hinge loss 用于二分类问题,标签值y=±1​​​,预测值\hat y\in R​​​。当y​​​ 和\hat y​​​ 同号,且\mid \hat y \mid \geq 1​​​ ,此时l(y)=0​​​;而当预测\mid \hat y \mid< 1​​​​​ 时,分类器对分类结果不确定,loss 不为 0。


l(y) = max(0,1-\hat y y)

\hat y y \geq 1​​​,损失为 0;

\hat y y<1,损失为1-\hat y y

特点:

  • hinge 损失函数表示如果被分类正确,损失为 0,否则损失就为1-\hat y ySVM就是使用这个损失函数。

  • 健壮性相对较高,对异常点、噪声不敏感,但它没太好的概率解释。

perceptron loss

感知损失函数的标准形式如下:


L(y,f(x))=max(0,-f(x))

特点:

是 Hinge 损失函数的一个变种,Hinge loss 对判定边界附近的点(正确端)惩罚力度很高。而 perceptron loss只要样本的判定类别正确的话,它就满意,不管其判定边界的距离。它比 Hinge loss 简单,因为不是 max-margin boundary,所以模型的泛化能力没 hinge loss 强

Cross-entropy loss

分布差异度量方式

Exponential Loss

Exponential Loss,又称指数损失,其表达式如下:


L=e^{-ys}

image-20210904221305171

Exponential Loss 与交叉熵 Loss 类似,但它是指数下降的,因此梯度较其它 Loss 来说,更大一些。Exponential Loss 一般多用于 AdaBoost 中。因为使用 Exponential Loss 能比较方便地利用加法模型推导出 AdaBoost 算法。

Modified Huber Loss

在之前介绍回归损失函数,我们介绍过 Huber Loss,它集合了 MSE 和 MAE 的优点。Huber Loss 也能应用于分类问题中,称为 Modified Huber Loss,其表达是如下:


L(y,s)=\begin{cases}\max(0,1-ys)^2, & ys\geq -1\-4ys,&ys<-1\end{cases}

image-20210904221651667

从表达式和 Loss 图形上看,Modified Huber Loss 结合了 Hinge Loss 和 交叉熵 Loss 的优点。一方面能在ys > 1 时产生稀疏解提高训练效率;另一方面对于 ys < −1​ 样本的惩罚以线性增加,这意味着受异常点的干扰较少。scikit-learn 中的 SGDClassifier 就使用了 Modified
Huber Loss。

References

机器学习基础(四十二)—— 常用损失函数的设计(multiclass SVM loss & hinge loss)_https://space.bilibili.com/59807853-CSDN 博客

常见的损失函数(loss function)总结 - 知乎 (zhihu.com)

常见回归和分类损失函数比较 - massquantity - 博客园 (cnblogs.com)

评论