https://blog.csdn.net/u010976453/article/details/78488279

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损失,绝对值损失)

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) 。

在机器学习中,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≥0

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

ζ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 ):

其中

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

SVM和Softmax分类器是最常用的两个分类器。

  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:图像识别

针对给出的图像,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 算法的解的稀疏性。

而Softmax 损失则是对向量 fyifyi 指数正规化得到概率,再求对数即可。

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

4.总结

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

不同机器学习方法的损失函数有差异,合理理解各种损失优化函数的的特点更有利于我们对相关算法的理解。


参考文献

1. CS231n 课程 
2. 聊聊机器学习中的损失函数 
3. 知乎专栏-智能单元 
4. 机器学习-损失函数

转载于:https://www.cnblogs.com/DjangoBlog/p/8691941.html

机器学习中的损失函数 (着重比较:hinge loss vs softmax loss)相关推荐

  1. 机器学习中的损失函数

    机器学习中的损失函数 目录(?)[-] 一log对数损失函数逻辑回归 二平方损失函数最小二乘法 Ordinary Least Squares 三指数损失函数Adaboost 四Hinge损失函数SVM ...

  2. 机器学习中的损失函数(交叉熵损失、Hinge loss)

    损失函数 文章目录 损失函数 1 交叉熵损失 1.1 从最大似然估计到交叉熵损失 概率论中的MLE 机器学习中的MLE 交叉熵损失 1.2 多分类的交叉熵损失函数 1.3 比较 2. Hinge lo ...

  3. 机器学习中的损失函数(Loss Function)介绍、说明

    损失函数 损失函数介绍 常见的损失函数 1.对数损失函数(Logloss) 2. hinge loss 合页损失函数 3. exp-loss 指数损失函数 4. cross-entropy loss ...

  4. 机器学习中的数学——激活函数(七):Softmax函数

    分类目录:<机器学习中的数学>总目录 相关文章: · 激活函数:基础知识 · 激活函数(一):Sigmoid函数 · 激活函数(二):双曲正切函数(Tanh函数) · 激活函数(三): 线 ...

  5. 机器学习中的损失函数(附python代码)

    本文将深入研究hinge损失.logistic损失和二分类损失背后的概念和原理,并在MATLAB上实现感知器算法,并看看如何根据损失函数来选择最佳分类器. 在本文的最后,你将知道如何使用感知器进行分类 ...

  6. 机器学习中各种损失函数对比总结

    文章目录 一.分类问题 1. 0-1损失函数(zero-one loss) 2. Hinge 损失函数 3. log对数损失函数 4. Logistic损失 5. 交叉熵损失函数 (Cross-ent ...

  7. 常用的分类问题中的损失函数

    原文地址:https://redstonewill.com/1584/ (转自红色石头) 前言 在监督式机器学习中,无论是回归问题还是分类问题,都少不了使用损失函数(Loss Function).** ...

  8. 机器学习中的数学(六)--信息论与激活函数

    写在前面 <机器学习中的数学>系列主要列举了在机器学习中用到的较多的数学知识,包括微积分,线性代数,概率统计,信息论以及凸优化等等.本系列重在描述基本概念,并不在应用的方面的做深入的探讨, ...

  9. 一文讲懂召回中的 NCE NEG sampled softmax loss

    深度学习中与分类相关的问题都会涉及到softmax的计算.当目标类别较少时,直接用标准的softmax公式进行计算没问题,当目标类别特别多时,则需采用估算近似的方法简化softmax中归一化的计算. ...

最新文章

  1. springboot 分层_限量!阿里Spring Boot成长笔记终开源!理论实战满满
  2. 国庆双节长假旅游出行必装的手机软件
  3. 最长子序列和 动态规划python_算法基础之python实现动态规划中数字三角形和最长上升子序列问题...
  4. 《ArcGIS Runtime SDK for Android开发笔记》——(2)、Android Studio基本配置与使用
  5. Python 进阶 — 面向对象设计原则
  6. php要字符串的后四位,php如何截取字符串后四位
  7. 中文字符ASCII码和NSString相互转换
  8. c++实现多态的方法 虚表
  9. pico8 掌机_使用Pico-8构建自己的复古游戏
  10. QT每日一练day20:事件处理机制
  11. 微信支付H5完整版代码
  12. [译]How browsers work
  13. c语言过磅系统,衡安无人值守地磅称重系统过磅流程
  14. TCP IP协议之初识
  15. 俄罗斯黑产界淘宝运营人被美国抓捕,靠收租进账千万美元
  16. 使用tesserocr二值化识别知网登录验证码
  17. 为什么要画ER图?有哪些画图规范?
  18. pycharm快速注释快捷键
  19. win2003 64 php,win2003 x64 apache php 开发环境配置日志
  20. Curator 框架与 Zookeeer 版本 适配

热门文章

  1. 【Tensorflow-Error】CUDA_ERROR_OUT_OF_MEMORY: out of memory
  2. 唐宇迪机器学习课程数据集_最受欢迎的数据科学和机器学习课程-2020年8月
  3. linux kernel defconfig和.config
  4. 全志A33-BootLoader的两个阶段:boot0和second boot
  5. linux内核与用户空间的九种通信机制
  6. LDD3中snull网络驱动程序的使用
  7. 计算机视觉模式识别用到的几本优化的书籍
  8. linux系统ubuntu有哪些,Ubuntu Linux操作系统至少适合五种人使用
  9. php 命令行 php.ini,php web环境和命令行环境下查找php.ini的方法分享
  10. 返回后的数据处理_【掘金使用技巧2】掘金返回数据中时间的处理方法