Loss Function/Cost Function¶
损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。
-
损失函数(loss function)或代价函数(cost function)
损失函数定义为给定输入X 预测值f(X)和真实值Y之间的非负实值函数,记作L(Y,f(X)) -
风险函数(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 是无穷的。
-
经验风险(empirical risk)或经验损失(empirical loss)
R_{emp}(f)=\frac{1}{N}\sum^{N}_{i=1}L(y_i,f(x_i))
模型f 于训练样本集的平均损失
根据大数定律,当样本容量 N 趋于无穷大时,经验风险趋于期望风险 -
结构风险(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 样本个数。
为了简化讨论,忽略下标i,m = 1,以y-f(x) 为横坐标,MSE 为纵坐标,绘制其损失函数的图
形:

特点
MSE 曲线的特点是光滑连续、可导,便于使用梯度下降算法,是比较常用的一种损失函数。而且,MSE 随着误差的减小,梯度也在减小,这有利于函数的收敛,即使固定学习因子,函数也能较快取得最小值。平方误差有个特性,就是当 y_i 与 f(x_i) 的差值大于 1 时,会增大其误差;当 y_i 与f(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)|
为了简化讨论,忽略下标i,m = 1,以 y-f(x) 为横坐标,MAE 为纵坐标,绘制其损失函数的图
形:

直观上来看,MAE 的曲线呈 V 字型,连续但在 y-f(x)=0 处不可导,计算机求解导数比较困难。而且 MAE 大部分情况下梯度都是相等的,这意味着即使对于小的损失值,其梯度也是大的。这不利于函数的收敛和模型的学习。
值得一提的是,MAE 相比 MSE 有个优点就是 MAE 对离群点不那么敏感,更有包容性。因为 MAE 计算的是误差 y-f(x) 的绝对值,无论是 y-f(x)>1 是y-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,如下图所示:

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 y 。SVM就是使用这个损失函数。
-
健壮性相对较高,对异常点、噪声不敏感,但它没太好的概率解释。
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}

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}

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