1. 损失函数
损失函数(Loss function)用于估计你的模型的预测值f(x)f(x)与真实值YY之间的不一致程度。它是一个非负实值函数,通常用L(Y,f(x) )L(Y,f(x))来表示。损失函数越小,模型的鲁棒性越好。损失函数是经验风险函数的核心部分,也是结构风险函数的重要组成部分。模型的风险结构包括风险项和正则项,通常如下:
*=argmin1Ni=1NL(yi,f(xi;))+()
*=argmin1Ni=1NL(yi,f(xi;))+()
其中,前面的均值函数代表经验风险函数,LL代表损失函数,后面的是正则项或惩罚项,可以是L1、L2或其他正则函数。整个表达式的意思是找到使目标函数最小化的 的值。
2.常用损失函数
有五种常见的丢失错误:
1. Hinge Loss:主要应用于支持向量机(SVM);
2. Cross Entropy Loss、Softmax Loss:用于逻辑回归和softmax分类;
3. Square Loss:主要是最小二乘法(OLS);
4. Exponential Loss:主要用在Adaboost集成学习算法中;
5.其他损失(如0-1损失、绝对值损失)
2.1 铰链损失
铰链损失这个名字来自于它的损失函数图,它是一条折线。一般函数表达式为:
L(mi)=max(0,1mi(w))
L(mi)=max(0,1mi(w))
表示如果分类正确,loss为0,否则loss为1mi(w)1mi(w) 。
在机器学习中,Hing可以用来解决间距最大化的问题。最有代表性的就是SVM问题。原始SVM优化函数如下:
argminw,z12||w||2+Cizist.yiwTxi1zizi0
argminw,z12||w||2+Cizist.yiwTxi1zizi0
如果约束发生变形,则为:
i1yiwTxi
i1yiwTxi
那么损失函数可以进一步写为:
J(w)=12||w||2+Cimax(0,1yiwTxi)=12||w||2+Cimax(0,1mi(w))=12||w ||2+CiL铰链(mi)
J(w)=12||w||2+Cimax(0,1yiwTxi)=12||w||2+Cimax(0,1mi(w))=12||w ||2+CiL铰链(mi)
因此,SVM的损失函数可以看作L2范数和Hinge损失之和。
2.2 Softmax损失
可能有人认为逻辑回归的损失函数是平方损失,其实不然。假设样本是高斯分布的,可以通过线性回归推导出平方损失函数,而逻辑回归并不能得到平方损失。在逻辑回归的推导中,假设样本服从伯努利分布(0-1分布),然后得到满足这个分布的似然函数,然后取对数求极值,如此在。逻辑回归并不寻求似然函数的极值,而是以最大化为思想,然后推导出其经验风险函数为:最小化负似然函数(即maxF(y,f(x))minF( y,f(x)))maxF(y,f(x))minF(y,f(x)))。从损失函数的角度来看,就变成了Softmax损失函数。
对数损失函数的标准形式:
L(Y,P(Y|X))=logP(Y|X)
L(Y,P(Y|X))=logP(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):
在
h(x)=11+exp(f(x))
h(x)=11+exp(f(x))
2.3 平方损失
最小二乘法是线性回归的一种,OLS将问题转化为凸优化问题。在线性回归中,假设样本和噪声都服从高斯分布(中心极限定理),最后可以通过最大似然估计(MLE)推导出最小二乘公式。最小二乘法的基本原理是:最优拟合直线应该是使各点到回归线的距离之和最小,即平方和最小的直线。
平方损失的标准形式如下:
L(Y,f(X))=(Yf(X))2
L(Y,f(X))=(Yf(X))2
当样本数为nn时,此时的损失函数为:
L(Y,f(X))=i=1n(Yf(X))2
L(Y,f(X))=i=1n(Yf(X))2
Yf(X)Yf(X)表示残差,整个公式表示残差的平方和。我们的目标是最小化这个目标函数的值,即最小化残差的平方和。
在实际应用中,我们使用均方误差(MSE)作为衡量标准,其公式如下:
MSE=1ni=1n(Yi~Yi)2
MSE=1ni=1n(Yi~Yi)2
2.4 指数损失
损失函数的标准形式为:
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)=fm1(x)+mGm(x)
fm(x)=fm1(x)+mGm(x)
Adaboost每次迭代的目的是找到最小化以下公式的参数和GG:
argmin,G=i=1Nexp[yi(fm1(xi)+G(xi))]
argmin,G=i=1Nexp[yi(fm1(xi)+G(xi))]
容易知道Adaboost的目标公式是指数损失。给定nn 个样本,Adaboost 的损失函数为:
L(Y,f(X))=12i=1nexp[yif(xI)]
L(Y,f(X))=12i=1nexp[yif(xI)]
Adaboost的详细推导介绍请参考维基百科:AdaBoost或李航《统计学习方法》 P145。
2.5 其他损失
0-1损失函数
L(Y,f(X))={01ifYf(X)ifY=f(X)
L(Y,f(X))={0ifYf(X)1ifY=f(X)
绝对值损失函数
L(Y,f(X))=|Yf(X)|L(Y,f(X))=|Yf(X)|
L(Y,f(X))=|Yf(X)|L(Y,f(X))=|Yf(X)|
对比上述损失函数的可视化图像如下:
3. Hinge损失和Softmax损失
SVM 和Softmax 分类器是两种最常用的分类器。
SVM会输出f(xi,W)f(xi,W)作为每个分类的得分(没有指定标准,很难直接解释);
与SVM不同的是,Softmax分类器可以理解为逻辑回归分类器面对多重分类的普通话归纳。它的输出(归一化分类概率)更加直观,可以用概率来解释。
在Softmax分类器中,函数映射f(xi,W)f(xi,W)保持不变,但这些分数被视为每个类的非归一化对数概率,并且铰链损失被替换为交叉熵损失(cross-熵损失),公式如下:
Li=log(efyijefj)
Li=log(efyijefj)
或同等水平
Li=fyi+logjfj
Li=fyi+logjfj
fjfj 表示分类得分向量ff 中的第ii 个元素。和SVM一样,整个数据集的损失值是数据集中所有样本数据的损失值Li的均值和正则化损失之和。
概率论讲解:
P(yi|xi,W)=efyijefj
P(yi|xi,W)=efyijefj
解释为给定数据xixi、WW 参数的情况下分配给正确分类标签yiyi 的归一化概率。
实际操作笔记—— 数值稳定性: 在编程实现softmax函数计算时,由于指数函数的存在,中间项efyiefyi和jefjjefj可能会有非常大的值。除以大值可能会导致数值计算不稳定,因此必须学习归一化技术。如果将公式的分子和分母乘以常数CC并变换为求和,则可以得到等效公式:
P(yi|xi,W)=CefyiCjefj=efyi+logCjefj+logC
P(yi|xi,W)=CefyiCjefj=efyi+logCjefj+logC
C的值可以自由选择,不会影响计算结果。该技术可以提高计算中的数值稳定性。通常C设置为:
logC=maxfj
logC=maxfj
技巧是平移向量f 中的值,使最大值为0。
准确地说,SVM 分类器使用铰链损失,有时称为最大边缘损失。 Softmax分类器使用交叉熵损失(corss-entropy loss)。 Softmax分类器以softmax函数命名,它将原始分类分数变成正的归一化值。所有值总和为1,以便可以应用后处理交叉熵损失。
示例:图像识别
对于给定的图像,SVM分类器可能会给你一个[2.85,0.86,0.28][2.85,0.86,0.28]对应于分类“猫”,“狗”,“船”,而softmax分类器可以计算出这三个标签的“可能性”是[0.0160.631,0.353][0.0160.631,0.353],这可以让你看到不同分类的准确性。
这里铰链损失的计算公式为:
Li=jyimax(0,f(xi,W)jf(xi,W))yi+
Li=jyimax(0,f(xi,W)jf(xi,W))yi+
这里是一个阈值,意思是即使分类错分但没有达到阈值,也没有损失。上式遍历所有错误类别(jyi)(jyi)并计算总和。
假设xixi的正确类别是“船”,阈值=1=1,则对应的Hinge损失为:
Li=max(0,2.850.28+1)+max(0,0.860.28+1)=1.58
Li=max(0,2.850.28+1)+max(0,0.860.28+1)=1.58
下图是对的理解。蓝色代表正确的类别,代表安全范围。即使有其他分数,只要没有达到红色范围,就不会对损失函数产生影响。这保证了SVM算法解的稀疏性。
Softmax损失是对向量fyifyi索引进行归一化得到概率,然后求对数。
Li=log(efyijefj)=log(0.353)1.04
Li=log(efyijefj)=log(0.353)1.04
4. 总结
作为一种优化方法,机器学习的学习目标是找到优化后的目标函数——损失函数与正则项的组合;只有目标函数的“正确开法”,才能通过合适的机器学习算法来解决优化问题。
不同的机器学习方法的损失函数是不同的。合理理解各种损失优化函数的特点更有利于我们对相关算法的理解。
添加一名作者
来源:CSDN
原文:https://blog.csdn.net/u010976453/article/details/78488279
【【转载】深度学习关键要素:损失函数解析】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
一直想了解一下机器学习里的损失函数到底怎么运作啊!
有5位网友表示赞同!
看了这个标题感觉能学到不少的东西,准备好好看看这篇文章分享的知识。
有18位网友表示赞同!
机器学习的算法那么多,果然每个都有自己独特的玩法,损失函数也是其中不可或缺的一部分。
有5位网友表示赞同!
原来机器学习还会用到数学的概念啊,现在越来越觉得这个世界真是奇妙了!
有17位网友表示赞同!
看标题感觉很专业,但总希望能够解释清楚,让普通人也能理解。
有12位网友表示赞同!
损失函数是什么?之前一直没搞明白这个问题,终于有机会了!
有18位网友表示赞同!
机器学习的应用越来越广了,了解这些基础知识也很重要啊。
有15位网友表示赞同!
学习人工智能真是需要不断地学习新的概念和知识!
有12位网友表示赞同!
这篇文章能够简单易懂地讲解损失函数吗?期待能找到答案。
有18位网友表示赞同!
机器学习的研究确实很前沿,希望这篇文章能给我带来一些启发。
有11位网友表示赞同!
听上去很有意思,我也想了解一下损失函数是如何在机器学习中起作用的。
有19位网友表示赞同!
标题很有深度,感觉作者对机器学习领域有深入研究。
有7位网友表示赞同!
机器学习的目标是准确预测结果,那么损失函数的作用是什么呢?
有20位网友表示赞同!
看了这个标题就想到可以用机器学习来解决实际问题,真是太棒了!
有15位网友表示赞同!
这篇文章能讲清楚不同类型的损失函数吗?非常期待看到详细的解释。
有11位网友表示赞同!
感觉这个主题很有挑战性,希望作者能够用轻松通俗的方式讲解。
有17位网友表示赞同!
机器学习一直在发展,想知道最新的研究成果是什么?
有17位网友表示赞同!
人工智能越来越智能化,背后的技术原理也需要我们不断探索和理解。
有11位网友表示赞同!
期待能从这篇文章中学到知识,提升对机器学习的理解!
有19位网友表示赞同!