【损失函数】常见的损失函数(loss function)总结
点击上方,选择星标或置顶,每天给你送干货!
阅读大概需要7分钟
跟随小博主,每天进步一丢丢
机器学习算法与自然语言处理出品
@公众号原创专栏作者 yyHaker
单位 | 哈工大SCIR实验室
损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。
损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是指经验风险损失函数加上正则项。
常见的损失函数以及其优缺点如下:
0-1损失函数(zero-one loss)
0-1损失是指预测值和目标值不相等为1, 否则为0:
特点:
(1)0-1损失函数直接对应分类判断错误的个数,但是它是一个非凸函数,不太适用.
(2)感知机就是用的这种损失函数。但是相等这个条件太过严格,因此可以放宽条件,即满足 时认为相等,
2. 绝对值损失函数
绝对值损失函数是计算预测值与目标值的差的绝对值:
3. log对数损失函数
log对数损失函数的标准形式如下:
特点:
(1) log对数损失函数能非常好的表征概率分布,在很多场景尤其是多分类,如果需要知道结果属于每个类别的置信度,那它非常适合。
(2)健壮性不强,相比于hinge loss对噪声更敏感。
(3)逻辑回归的损失函数就是log对数损失函数。
4. 平方损失函数
平方损失函数标准形式如下:
特点:
(1)经常应用与回归问题
5. 指数损失函数(exponential loss)
指数损失函数的标准形式如下:
特点:
(1)对离群点、噪声非常敏感。经常用在AdaBoost算法中。
6. Hinge 损失函数
Hinge损失函数标准形式如下:
特点:
(1)hinge损失函数表示如果被分类正确,损失为0,否则损失就为 。SVM就是使用这个损失函数。
(2)一般的 是预测值,在-1到1之间,
是目标值(-1或1)。其含义是,
的值在-1和+1之间就可以了,并不鼓励
,即并不鼓励分类器过度自信,让某个正确分类的样本距离分割线超过1并不会有任何奖励,从而使分类器可以更专注于整体的误差。
(3) 健壮性相对较高,对异常点、噪声不敏感,但它没太好的概率解释。
7. 感知损失(perceptron loss)函数
感知损失函数的标准形式如下:
特点:
(1)是Hinge损失函数的一个变种,Hinge loss对判定边界附近的点(正确端)惩罚力度很高。而perceptron loss只要样本的判定类别正确的话,它就满意,不管其判定边界的距离。它比Hinge loss简单,因为不是max-margin boundary,所以模型的泛化能力没 hinge loss强。
8. 交叉熵损失函数 (Cross-entropy loss function)
交叉熵损失函数的标准形式如下:
注意公式中 表示样本,
表示实际的标签,
表示预测的输出,
表示样本总数量。
特点:
(1)本质上也是一种对数似然函数,可用于二分类和多分类任务中。
二分类问题中的loss函数(输入数据是softmax或者sigmoid函数的输出):
多分类问题中的loss函数(输入数据是softmax或者sigmoid函数的输出):
(2)当使用sigmoid作为激活函数的时候,常用交叉熵损失函数而不用均方误差损失函数,因为它可以完美解决平方损失函数权重更新过慢的问题,具有“误差大的时候,权重更新快;误差小的时候,权重更新慢”的良好性质。
最后奉献上交叉熵损失函数的实现代码:cross_entropy.
这里需要更正一点,对数损失函数和交叉熵损失函数应该是等价的!!!(此处感谢
@Areshyy
的指正,下面说明也是由他提供)
下面来具体说明:
相关高频问题:
1.交叉熵函数与最大似然函数的联系和区别?
区别:交叉熵函数使用来描述模型预测值和真实值的差距大小,越大代表越不相近;似然函数的本质就是衡量在某个参数下,整体的估计和真实的情况一样的概率,越大代表越相近。
联系:交叉熵函数可以由最大似然函数在伯努利分布的条件下推导出来,或者说最小化交叉熵函数的本质就是对数似然函数的最大化。
怎么推导的呢?我们具体来看一下。
设一个随机变量 满足伯努利分布,
则 的概率密度函数为:
因为我们只有一组采样数据 ,我们可以统计得到
和
的值,但是
的概率是未知的,接下来我们就用极大似然估计的方法来估计这个
值。
对于采样数据 ,其对数似然函数为:
可以看到上式和交叉熵函数的形式几乎相同,极大似然估计就是要求这个式子的最大值。而由于上面函数的值总是小于0,一般像神经网络等对于损失函数会用最小化的方法进行优化,所以一般会在前面加一个负号,得到交叉熵函数(或交叉熵损失函数):
这个式子揭示了交叉熵函数与极大似然估计的联系,最小化交叉熵函数的本质就是对数似然函数的最大化。
现在我们可以用求导得到极大值点的方法来求其极大似然估计,首先将对数似然函数对 进行求导,并令导数为0,得到
消去分母,得:
所以:
这就是伯努利分布下最大似然估计求出的概率 。
2. 在用sigmoid作为激活函数的时候,为什么要用交叉熵损失函数,而不用均方误差损失函数?
其实这个问题求个导,分析一下两个误差函数的参数更新过程就会发现原因了。
对于均方误差损失函数,常常定义为:
其中 是我们期望的输出,
为神经元的实际输出(
)。在训练神经网络的时候我们使用梯度下降的方法来更新
和
,因此需要计算代价函数对
和
的导数:
然后更新参数 和
:
因为sigmoid的性质,导致 在
取大部分值时会很小(如下图标出来的两端,几乎接近于平坦),这样会使得
很小,导致参数
和
更新非常慢。
那么为什么交叉熵损失函数就会比较好了呢?同样的对于交叉熵损失函数,计算一下参数更新的梯度公式就会发现原因。交叉熵损失函数一般定义为:
其中 是我们期望的输出,
为神经元的实际输出(
)。同样可以看看它的导数:
另外,
所以有:
所以参数更新公式为:
可以看到参数更新公式中没有 这一项,权重的更新受
影响,受到误差的影响,所以当误差大的时候,权重更新快;当误差小的时候,权重更新慢。这是一个很好的性质。
所以当使用sigmoid作为激活函数的时候,常用交叉熵损失函数而不用均方误差损失函数。
投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
记得备注呦
【损失函数】常见的损失函数(loss function)总结相关推荐
- R语言构建xgboost模型:自定义损失函数(目标函数、loss function、object function)、评估函数(evaluation function)
R语言构建xgboost模型:自定义损失函数(目标函数.loss function.object function).评估函数(evaluation function) 目录
- 机器学习中的损失函数(Loss Function)介绍、说明
损失函数 损失函数介绍 常见的损失函数 1.对数损失函数(Logloss) 2. hinge loss 合页损失函数 3. exp-loss 指数损失函数 4. cross-entropy loss ...
- R语言构建xgboost模型使用早停法训练模型(early stopping):自定义损失函数(目标函数,loss function)、评估函数(evaluation function)
R语言构建xgboost模型使用早停法训练模型(early stopping):自定义损失函数(目标函数.loss function.object function).评估函数(evaluation ...
- 经验 | 深度学习中常见的损失函数(loss function)总结
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:机器学习算法与自然语言处理出品 单位 | 哈工大SCIR实 ...
- 机器学习之常见的损失函数(loss function)
解决一个机器学习问题主要有两部分:数据和算法.而算法又有三个部分组成:假设函数.损失函数.算法优化.我们一般在看算法书或者视频教学时,更多的是去推算或者说参数估计出其假设函数,而往往不太注重损失函数, ...
- 交叉熵损失函数优缺点_【损失函数】常见的损失函数(loss function)总结
阅读大概需要7分钟 跟随小博主,每天进步一丢丢 机器学习算法与自然语言处理出品 @公众号原创专栏作者 yyHaker 单位 | 哈工大SCIR实验室 损失函数用来评价模型的预测值和真实值不一样的程度, ...
- 二元函数图像生成器_常见的损失函数(loss function)
本文主要讲一下机器学习/深度学习里面比较常见的损失函数. 分类损失 hinge loss 其中y是标签,要么为1(正样本),要么为-1(负样本).hinge loss被使用在SVM当中.对于正确分类的 ...
- 常用损失函数(Loss Function)
[深度学习]一文读懂机器学习常用损失函数(Loss Function) 最近太忙已经好久没有写博客了,今天整理分享一篇关于损失函数的文章吧,以前对损失函数的理解不够深入,没有真正理解每个损失函数的特点 ...
- 深度学习自学(一):Loss function 损失函数
Loss function 2018.8.11 技术积淀篇 面试经常被问到损失函数,想着有时间整理下,最常被问到的事在SVM ...
- 【深度学习】一文读懂机器学习常用损失函数(Loss Function)
[深度学习]一文读懂机器学习常用损失函数(Loss Function) 最近太忙已经好久没有写博客了,今天整理分享一篇关于损失函数的文章吧,以前对损失函数的理解不够深入,没有真正理解每个损失函数的特点 ...
最新文章
- 华北电力大学计算机导论试题,保定华北电力大学计算机与科学大一课程
- python操作手机京东_Python实现自动上京东抢手机
- python调用c#dll_详解Python 调用C# dll库最简方法
- java 建立网站_建立基本的Java Web站点
- Android开发之依赖库混淆与外层APP混淆开启的关系
- 这两天有点热吆,star直线上涨!~Jeecg Boot
- 从零基础入门Tensorflow2.0 ----七、36. 文本生成之---2. 构建模型
- HBase数据模型和表设计思路
- Provisional headers are shown axios 超时处理
- 多节点什么网络取得技术性突破_中国学者研究“多节点量子网络”取得基础性突破...
- 2021最新薪酬报告出炉
- 在计算机中NIC是什么意思?
- 一寸照片快照多少钱_去照相馆拍照一般多少钱
- html5压缩视频文件大小,格式工厂怎么压缩视频大小 只需5步大视频变小视频
- 苹果计算机快捷键设置在哪里,苹果手机快捷键小方块怎么设置 【设置方法】...
- 卡贴机变无锁教程_卡贴机怎么解锁变无锁
- 服务器win7无限重启,win7系统无限重启的解决方法
- 重来之大学版|卸负篇-同辈压力的影响,如何正确看待同辈压力?如何缓解压力?
- handler中的handler.removecallbacks和handler.removemessages的用法
- linux下IIC驱动解释
热门文章
- [BZOJ1860][ZJOI2006]Mahjong(DP)
- 【学习】如何用jQuery获取iframe中的元素
- sublime Text3下sass环境配置(windows)
- 安卓奇葩问题之:返回按键监听,使Dialog不消失
- 利用Python网络爬虫抓取微信好友的签名及其可视化展示
- 9.2NOIP模拟题
- Django_xamin注册model错误
- BigDecimal.divide方法
- Marlin 溫度感應器 數值轉換對應表
- Servlet+Jsp实现图片或文件的上传功能