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

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θ1Ni=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,1mi(w))L(mi)=max(0,1−mi(w))


表示如果被正确分类,损失是0,否则损失就是 1mi(w)1−mi(w) 。

 

Hinge Loss

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

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


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

ζi1yiwTxiζi≥1−yiwTxi


则损失函数可以进一步写为: 

J(w)=12||w||2+Cimax(0,1yiwTxi)=12||w||2+Cimax(0,1mi(w))=12||w||2+CiLHinge(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))minF(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))=(Yf(X))2L(Y,f(X))=(Y−f(X))2

 

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

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


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

 

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

MSE=1ni=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)=fm1(x)+αmGm(x)fm(x)=fm−1(x)+αmGm(x)


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

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


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

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


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

 

2.5 其他损失

0-1 损失函数 

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


绝对值损失函数 

L(Y,f(X))=|Yf(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(efyijefj)Li=−log⁡(efyi∑jefj)


或等价的 

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

 

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

概率论解释: 

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

 

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

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

P(yi|xi,W)=CefyiCjefj=efyi+logCjefj+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=jyimax(0,f(xi,W)jf(xi,W))yi+ΔLi=∑j≠yimax(0,f(xi,W)j−f(xi,W))yi+Δ


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

 

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

Li=max(0,2.850.28+1)+max(0,0.860.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(efyijefj)=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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML入门第一和第二章

课时4:HTML初识 1、英文名(Hyper Text Markup Language)超文本标签语言 对网页上的内容进行描述 课时5:HTML骨架 课时6:我的第一个页面及其标签简介 课时7:骨架记忆法 课时8:什么是标签及其分…

mysql 指令

// 授予用户某些权限GRANT ALL ON *.* TO USERHOST;// 进入mysql访问特定数据库mysql -u user -p database_name// 查看数据表结构DESCRIBE table_name;// 加载文本数据到tableLOAD DATA LOCAL INFILE file_path INTO TABLE table_name;// UPDATE语句UPDATE table_name SET col…

flex label 换行

Flex中label换行有两种情况 在AS中赋值: label.text"Online\r\nResources" 在mxml中赋值: text"OnlineResources" 在flash builder中就可以换行显示了。左右有四种对齐方式,上下四种对齐方式。 也就是说mx中的label不支持…

H5第一天

移动Web - 基础&流式布局 目标 了解移动端主要浏览器的内核掌握用谷歌浏览器调试移动端页面(重要)了解布局视口、视觉视口、理想视口使用mate标签设置理想视口(重要)了解视网膜屏、物理像素、二倍图会使用background-size设…

python数据结构之字典(未完成)

字典 dic {key:value} 1.字典特性 key必须是唯一的,值不必是唯一。 值可以是任何数据类型,比如list,tuple,字符,数值等。key只能是不可变的数据类型。 同一个key不允许重复,如果出现重复,后一个…

一个textView中的文字设置成两种颜色

使用Spannablestring和ForegroundColorSpan。 SpannableString string2 new SpannableString("自助导入会员和连续开单\n3个月可获得免费短信服务");ForegroundColorSpan span2 new ForegroundColorSpan(getResources().getColor(R.color.worker_main_worker));str…

boost::timer demo

#include <iostream> #include <boost/timer.hpp> //timer的头文件 using namespace boost; //打开boost名字空间int main(int argc, char** argv) {timer t; //定义一个计时器对象,并开始计时/*可度量的最大时间,以小时为单位*/std::cout << "max …

H5的第二天

移动web开发——flex布局 目标 了解flex布局的优缺点及原理能够说出flex布局原理、使用语法、特点&#xff08;重点&#xff09;能够使用flex布局常用属性&#xff08;重点&#xff09;能够独立完成携程移动端首页 1.0 传统布局和flex布局对比 1.1传统布局 兼容性好布局繁…

d3.js 入门指南 - 仪表盘

D3的全称是Data-Driven Documents&#xff08;数据驱动的文档&#xff09;&#xff0c;是一个用来做数据可视化的JavaScript函数库&#xff0c;而JavaScript文件的后缀通常为.js&#xff0c;所以D3被称为D3.js。 d3.js可以定制出各种图形&#xff0c;今天来用d3.js制作一个简易…

[转帖]华为的“大海思”与“小海思”

华为的“大海思”与“小海思” https://www.cnbeta.com/articles/tech/828275.htm没先到华为海思这么狠.. 作为华为的全资子公司&#xff0c;说起海思半导体&#xff0c;大家可能第一时间会想起麒麟处理器。经过多年的持续的研发投入&#xff0c;华为海思自研的麒麟处理器现在确…

H5第三天(1)

响应式布局 ☞核心知识点 less媒体查询 学习目标 掌握less基本语法能够使用less编写css代码能够掌握媒体查询能够使用媒体查询实现响应式布局 Less介绍 维护CSS的弊端 CSS本质上不是一门语言,是一个简单的样式表.代码维护相对老套,不够灵活.LESS介绍 ☞LESS预处理器: 依…

CocosPods 引入项目,哪些文件需要上传到服务器呢?

以上除Podfile外&#xff0c;其它三个文件都不是必须提交的。其中Pods目录没必要提交&#xff0c;里面的文件都是根据Podfile描述的依赖库的配置信息下载和生成的文件。因为CocoaPods支持语义化版本号&#xff0c;所以需要Podfile.lock文件记住当前使用的版本&#xff0c;当然这…

H5第三天(2)

移动web响应式布局 ☞知识点-回顾 1. 什么是弹性盒子(伸缩布局) 2. 伸缩布局解决了什么问题 3. 伸缩盒子特点 有一条默认水平显示的主轴有一条始终要垂直于主轴的侧轴 4.重点掌握的属性 设置伸缩盒子 display: flex;设置主轴对齐方式 justify-content设置侧轴对齐方式 a…

X-AdminABP框架开发-系统日志

网站正常运行中有时出现异常在所难免&#xff0c;查看系统运行日志分析问题并能够根据错误信息快速解决问题尤为重要&#xff0c;ABP对于系统运行日志这块已经做了很好的处理&#xff0c;默认采用的Log4Net已经足够满足开发过程中的需要了(当然有需要的话也可以更换为其它日志组…

[Swift]LeetCode826. 安排工作以达到最大收益 | Most Profit Assigning Work

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

H5第四天(1)

boostrap框架介绍 核心知识点 boostrap框架栅格系统[重点,不是难点]基本的全局样式 学习目标 能够使用boostrap框架中的基本样式能够使用栅格系统完成阿里百秀案例 boostrap框架 介绍 https://www.bootcss.com/ Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架&#xff0c;用…

javascript基础入门知识点整理

学习目标:- 掌握编程的基本思维- 掌握编程的基本语法 typora-copy-images-to: mediaJavaScript基础 HTML和CSS 京东 课前娱乐 众人皆笑我疯癫,我笑尔等看不穿 课前说明 目标&#xff1a;掌握编程的基本思想掌握JavaScript的基础语法,使用常见API(备注)完成相应案例及练习和作业…

学习笔记-canny边缘检测

Canny边缘检测 声明&#xff1a;阅读本文需要了解线性代数里面的点乘&#xff08;图像卷积的原理&#xff09;&#xff0c;高等数学里的二元函数的梯度&#xff0c;极大值定义&#xff0c;了解概率论里的二维高斯分布 1.canny边缘检测原理和简介 2.实现步骤 3.总结 一、 Canny边…

H5第四天(2)

Bootstrap框架 Bootstrap框架 为什么要学Bootstrap框架 Bootstrap框架: 为我们提供了用来实现响应式开发的公共资源 总结: Bootstrap框架用来实现响应式布局Bootstrap框架中重点学什么 Bootstrap框架提供了很多丰富的网页开发资源,代码有上万行代码.1. 重点学习框架中提供的基…

javascript高级实战学习

学习目标:- 理解面向对象开发思想- 掌握 JavaScript 面向对象开发相关模式- 掌握在 JavaScript 中使用正则表达式- typora-copy-images-to mediaJavaScript 高级 课程介绍 课程大纲 在线地址&#xff1a;JavaScript 高级 目标 理解面向对象开发思想 掌握 JavaScript 面向对象…