总结各种损失函数

因为有些图片挂了,而且CSDN不知道为何富文本编辑没法显示Latex

从新修改后的现地址:https://blog.csdn.net/weixin_41923961/article/details/86615958

 

1. 损失函数

损失函数(Loss function)是用来估量你模型的预测值 f(x)f(x) 与真实值 YY 的不一致程度,它是一个非负实值函数,一般用 L(Y,f(x))L(Y,f(x)) 来表示。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数的重要组成部分。模型的风险结构包括了风险项正则项,一般以下所示: 算法

θ∗=argminθ1N∑i=1NL(yi,f(xi;θ))+λ Φ(θ)θ∗=arg⁡minθ1N∑i=1NL(yi,f(xi;θ))+λ Φ(θ)编程


其中,前面的均值函数表示的是经验风险函数,LL表明的是损失函数,后面的 ΦΦ 是正则化项(regularizer)或者叫惩罚项(penalty term),它能够是L1,也能够是L2,或者其余的正则函数。整个式子表示的意思是找到使目标函数最小时的θθ值安全

 

2. 经常使用损失函数

常见的损失偏差有五种: 
1. 铰链损失(Hinge Loss):主要用于支持向量机(SVM) 中; 
2. 互熵损失 (Cross Entropy Loss,Softmax Loss ):用于Logistic 回归与Softmax 分类中; 
3. 平方损失(Square Loss):主要是最小二乘法(OLS)中; 
4. 指数损失(Exponential Loss) :主要用于Adaboost 集成学习算法中; 
5. 其余损失(如0-1损失,绝对值损失)cors

2.1 Hinge loss

Hinge loss 的叫法来源于其损失函数的图形,为一个折线,通用的函数表达式为:机器学习

 

L(mi)=max(0,1−mi(w))L(mi)=max(0,1−mi(w))函数


表示若是被正确分类,损失是0,不然损失就是 1−mi(w)1−mi(w) 。学习

 

Hinge Loss

在机器学习中,Hing 能够用来解 间距最大化 的问题,最有表明性的就是SVM 问题,最初的SVM 优化函数以下: 优化

argminw,ζ12||w||2+C∑iζist.∀yiwTxi≥1−ζiζi≥0argminw,ζ12||w||2+C∑iζist.∀yiwTxi≥1−ζiζi≥0spa


将约束项进行变形,则为: .net

 

ζi≥1−yiwTxiζi≥1−yiwTxi


则损失函数能够进一步写为: 

 

J(w)=12||w||2+C∑imax(0,1−yiwTxi)=12||w||2+C∑imax(0,1−mi(w))=12||w||2+C∑iLHinge(mi)J(w)=12||w||2+C∑imax(0,1−yiwTxi)=12||w||2+C∑imax(0,1−mi(w))=12||w||2+C∑iLHinge(mi)


所以, SVM 的损失函数能够看做是 L2-norm 和 Hinge loss 之和

 

2.2 Softmax Loss

有些人可能以为逻辑回归的损失函数就是平方损失,其实并非。平方损失函数能够经过线性回归在假设样本是高斯分布的条件下推导获得,而逻辑回归获得的并非平方损失。在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),而后求得知足该分布的似然函数,接着取对数求极值等等。而逻辑回归并无求似然函数的极值,而是把极大化当作是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即maxF(y,f(x))→min−F(y,f(x)))maxF(y,f(x))→min−F(y,f(x)))。从损失函数的视角来看,它就成了Softmax 损失函数了。

log损失函数的标准形式: 

L(Y,P(Y|X))=−logP(Y|X)L(Y,P(Y|X))=−log⁡P(Y|X)


刚刚说到,取对数是为了方便计算极大似然估计,由于在MLE中,直接求导比较困难,因此一般都是先取对数再求导找极值点。损失函数L(Y,P(Y|X))L(Y,P(Y|X)) 表达的是样本XX 在分类Y的状况下,使几率P(Y|X)P(Y|X) 达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大几率)致使这种分布的参数值;或者说什么样的参数才能使咱们观测到目前这组数据的几率最大)。由于log函数是单调递增的,因此logP(Y|X)logP(Y|X) 也会达到最大值,所以在前面加上负号以后,最大化P(Y|X)P(Y|X) 就等价于最小化LL 了。

 

逻辑回归的P(Y=y|x)P(Y=y|x) 表达式以下(为了将类别标签y统一为11 和00 ):

Logistic

其中 

hθ(x)=11+exp(−f(x))hθ(x)=11+exp⁡(−f(x))

 

2.3 Squared Loss

最小二乘法是线性回归的一种,OLS将问题转化成了一个凸优化问题。在线性回归中,它假设样本和噪声都服从高斯分布(中心极限定理),最后经过极大似然估计(MLE)能够推导出最小二乘式子。最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小

平方损失(Square loss)的标准形式以下: 

L(Y,f(X))=(Y−f(X))2L(Y,f(X))=(Y−f(X))2

 

当样本个数为nn时,此时的损失函数为: 

L(Y,f(X))=∑i=1n(Y−f(X))2L(Y,f(X))=∑i=1n(Y−f(X))2


Y−f(X)Y−f(X)​ 表示残差,整个式子表示的是残差平方和 ,咱们的目标就是最小化这个目标函数值,即最小化残差的平方和

 

在实际应用中,咱们使用均方差(MSE)做为一项衡量指标,公式以下: 

MSE=1n∑i=1n(Yi~−Yi)2MSE=1n∑i=1n(Yi~−Yi)2

 

2.4 Exponentially Loss

损失函数的标准形式是: 

L(Y,f(X))=exp[−Yf(X)]L(Y,f(X))=exp⁡[−Yf(X)]


exp-loss,主要应用于 Boosting 算法中,在Adaboost 算法中,通过 mm 次迭代后,能够获得 fm(x)fm(x) : 

 

fm(x)=fm−1(x)+αmGm(x)fm(x)=fm−1(x)+αmGm(x)


Adaboost 每次迭代时的目的都是找到最小化下列式子的参数αα 和GG: 

 

argminα,G=∑i=1Nexp[−yi(fm−1(xi)+αG(xi))]arg⁡minα,G=∑i=1Nexp⁡[−yi(fm−1(xi)+αG(xi))]


易知,Adabooost 的目标式子就是指数损失,在给定nn个样本的状况下,Adaboost 的损失函数为: 

 

L(Y,f(X))=12∑i=1nexp[−yif(xI)]L(Y,f(X))=12∑i=1nexp⁡[−yif(xI)]


关于Adaboost的详细推导介绍,能够参考Wikipedia:AdaBoost或者李航《统计学习方法》P145。

 

2.5 其余损失

0-1 损失函数 

L(Y,f(X))={01ifY≠f(X)ifY=f(X)L(Y,f(X))={0ifY≠f(X)1ifY=f(X)


绝对值损失函数 

 

L(Y,f(X))=|Y−f(X)|L(Y,f(X))=|Y−f(X)|

 


上述几种损失函数比较的可视化图像以下:

损失函数可视化

3. Hinge loss 与 Softmax loss

SVMSoftmax分类器是最经常使用的两个分类器。

  1. SVM将输出 f(xi,W)f(xi,W) 做为每一个分类的评分(没有规定的标准,难以直接解释);
  2. 与SVM 不一样,Softmax 分类器能够理解为逻辑回归分类器面对多个分类的通常话概括,其输出(归一化的分类几率)更加直观,且能够从几率上解释。

在Softmax分类器中, 函数映射f(xi,W)f(xi,W) 保持不变,但将这些评分值看作每一个分类未归一化的对数几率,且将折叶损失替换为交叉熵损失(cross-entropy loss),公式以下:

 

Li=−log(efyi∑jefj)Li=−log⁡(efyi∑jefj)


或等价的 

 

Li=−fyi+log∑jfjLi=−fyi+log⁡∑jfj

 

fjfj 表示分类评分向量ff 中的第ii 个元素,和SVM同样,整个数据集的损失值是数据集中全部样本数据的损失值Li的均值和正则化损失之和。

几率论解释: 

P(yi|xi,W)=efyi∑jefjP(yi|xi,W)=efyi∑jefj

 

解释为给定数据xixi , WW 参数,分配给正确分类标签yiyi 的归一化几率。

实际操做注意事项——数值稳定: 编程实现softmax函数计算的时候,中间项efyiefyi 和 ∑jefj∑jefj 由于存在指数函数,因此数值可能很是大,除以大数值可能致使数值计算的不稳定,因此得学会归一化技巧.若在公式的分子和分母同时乘以一个常数CC ,并把它变换到求和之中,就能获得一个等价公式: 

P(yi|xi,W)=CefyiC∑jefj=efyi+logC∑jefj+logCP(yi|xi,W)=CefyiC∑jefj=efyi+log⁡C∑jefj+log⁡C

 

C的值可自由选择,不会影响计算结果,经过这个技巧能够提升计算中的数值稳定性.一般将C设为: 

logC=−maxfjlog⁡C=−maxfj

 

该技巧就是将向量f中的数值进行平移,使得最大值为0。

准确地说,SVM分类器使用的是铰链损失(hinge loss),有时候又被称为最大边界损失(max-margin loss)。Softmax分类器使用的是交叉熵损失(corss-entropy loss)。Softmax分类器的命名是从softmax函数那里得来的,softmax函数将原始分类评分变成正的归一化数值,全部数值和为1,这样处理后交叉熵损失才能应用。

Example:图像识别

example

针对给出的图像,SVM分类器可能给你的是一个[−2.85,0.86,0.28][−2.85,0.86,0.28] 对应分类“猫”,“狗”,“船”,而softmax分类器能够计算出这三个标签的”可能性“是[0.,0160.631,0.353][0.,0160.631,0.353] ,这就让你能看出对于不一样分类准确性的把握。

这里Hinge Loss计算公式为: 

Li=∑j≠yimax(0,f(xi,W)j−f(xi,W))yi+ΔLi=∑j≠yimax(0,f(xi,W)j−f(xi,W))yi+Δ


这里 ΔΔ 是一个阈值,表示即便误分类,可是没有达到阈值,也不存在损失 。上面的公式把错误类别 (j≠yi)(j≠yi) 都遍历一遍,求值加和。

 

设 xixi 的正确类别是”船”,阈值 Δ=1Δ=1 ,则对应的Hinge loss 为: 

Li=max(0,−2.85−0.28+1)+max(0,0.86−0.28+1)=1.58Li=max(0,−2.85−0.28+1)+max(0,0.86−0.28+1)=1.58


下图是对ΔΔ 的理解,蓝色表示正确的类别,ΔΔ 表示一个安全范围,就算是有其余的得分,只要没有到达红色的ΔΔ 范围内,,对损失函数都没有影响。这就保证了SVM 算法的解的稀疏性

 

delta

而Softmax 损失则是对向量 fyifyi 指数正规化获得几率,再求对数便可。 

Li=−log(efyi∑jefj)=−log(0.353)≈1.04Li=−log⁡(efyi∑jefj)=−log⁡(0.353)≈1.04

 

4.总结

机器学习做为一种优化方法,学习目标就是找到优化的目标函数——损失函数和正则项的组合;有了目标函数的“正确的打开方式”,才能经过合适的机器学习算法求解优化。