交叉熵损失函数(Cross Entropy Error Function)与均方差损失函数(Mean Squared Error)
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步
1.均方差损失函数(Mean Squared Error)
均方差损失函数是预测数据和原始数据对应点误差的平方和的均值。计算方式也比较简单
MSE=1N(y^−y)2MSE = \frac{1}{N}(\hat y - y) ^ 2MSE=N1(y^−y)2
其中,N为样本个数。
2.交叉熵损失函数(Cross Entropy Error Function)
在分类问题中,尤其是在神经网络中,交叉熵函数非常常见。因为经常涉及到分类问题,需要计算各类别的概率,所以交叉熵损失函数又都是与sigmoid函数或者softmax函数成对出现。
比如用神经网络最后一层作为概率输出,一般最后一层神经网络的计算方式如下:
1.网络的最后一层得到每个类别的scores。
2.score与sigmoid函数或者softmax函数进行计算得到概率输出。
3.第二步得到的类别概率与真实类别的one-hot形式进行交叉熵计算。
二分类的交叉熵损失函数形式
∑−yilog(y^i)−(1−yi)log(1−y^i)\sum -y_ilog(\hat y_i) - (1-y_i)log(1-\hat y_i)∑−yilog(y^i)−(1−yi)log(1−y^i)
上面的yiy_iyi表示类别为1,y^i\hat y_iy^i表示预测类别为1的概率。
而多分类的交叉熵损失函数形式为
−∑i=1nyilog(y^i)-\sum_{i=1} ^n y_i log(\hat y_i)−i=1∑nyilog(y^i)
上面的式子表示类别有n个。单分类问题的时候,n个类别是one-hot的形式,只有一个类别yi=1y_i=1yi=1,其他n-1个类别为0。
3.MSE与sigmoid函数不适合配合使用
MSE的loss为
MSE=−1N(y^−y)2MSE =- \frac{1}{N}(\hat y - y) ^ 2MSE=−N1(y^−y)2
如果其与sigmoid函数配合使用,偏导数为
∂Lossi∂w=(y−y^)σ′(wxi+b)xi\frac{\partial Loss_i}{\partial w} = (y - \hat y) \sigma '(wx _i+ b)x_i ∂w∂Lossi=(y−y^)σ′(wxi+b)xi
其中
σ′(wxi+b)=σ(wxi+b)(1−σ(wxi+b))\sigma '(wx _i+ b) = \sigma (wx _i+ b) (1 - \sigma (wx _i+ b)) σ′(wxi+b)=σ(wxi+b)(1−σ(wxi+b))
于是,在σ(wxi+b)\sigma (wx _i+ b)σ(wxi+b)的值接近0或者1的时候,其导数都接近0。这样会导致模型一开始的学习速度非常慢,所以MSE一般不会与sigmoid函数配合使用。
4.交叉熵损失函数与sigmoid函数配合使用
交叉熵损失函数与sigmoid函数配合使用,最终损失函数求导的结果为
∂Lossi∂w=(y^i−yi)xi\frac{\partial Loss_i}{\partial w} = (\hat y_i - y_i)x_i∂w∂Lossi=(y^i−yi)xi
由此可见,求导的结果与y^i−yi\hat y_i - y_iy^i−yi与xix_ixi的值有关,不会出现模型开始训练速度很慢的现象。
具体的推导过程见参考文献1
交叉熵损失函数求导
5.交叉熵损失函数与softmax函数配合使用
前面提到,在神经网络中,交叉熵损失函数经常与softmax配合使用。
Loss=−∑itilnyiLoss = - \sum_i t_i lny_iLoss=−i∑tilnyi
softmax函数
yi=ei∑jej=1−∑j≠iej∑jejy_i = \frac{e^i}{\sum_j e^j} = 1 - \frac{\sum_{j \neq i} e^j}{\sum_j e^j}yi=∑jejei=1−∑jej∑j=iej
接下来求导
∂Lossi∂i=−∂lnyi∂i=−∑jejei⋅∂(ei∑jej)∂i=−∑jejei⋅(−∑j≠iej)⋅∂(1∑jej)∂i=∑jej⋅∑j≠iejei⋅−ei(∑jej)2=−∑j≠iej∑jej=−(1−ei∑jej)=yi−1{\begin{aligned} \frac{\partial Loss_i}{\partial _i} & = - \frac{\partial ln y_i}{\partial _i} \\ & = -\frac{\sum_j e^j}{e^i} \cdot \frac {\partial (\frac{e_i}{\sum_j e^j})}{\partial_i} \\ & = -\frac{\sum_j e^j}{e^i} \cdot (- \sum _ {j \neq i}e^j ) \cdot \frac{\partial( \frac {1} {\sum_j e^j} ) } { \partial _i} \\ & = \frac { \sum_j e^j \cdot \sum_{j \neq i} e^j} {e^i } \cdot \frac { - e^i} { (\sum_j e^j) ^ 2} \\ & = -\frac { \sum_{j \neq i} e^j } { \sum_j e^j } \\ & = -(1 - \frac{ e ^ i } { \sum_j e^j } ) \\ & = y_i - 1 \end{aligned}} ∂i∂Lossi=−∂i∂lnyi=−ei∑jej⋅∂i∂(∑jejei)=−ei∑jej⋅(−j=i∑ej)⋅∂i∂(∑jej1)=ei∑jej⋅∑j=iej⋅(∑jej)2−ei=−∑jej∑j=iej=−(1−∑jejei)=yi−1
由此可见,交叉熵函数与softmax函数配合,损失函数求导非常简单!
参考文献
1.https://blog.csdn.net/bitcarmanlee/article/details/51473567
交叉熵损失函数(Cross Entropy Error Function)与均方差损失函数(Mean Squared Error)相关推荐
- 【AI学习总结】均方误差(Mean Square Error,MSE)与交叉熵(Cross Entropy,CE)损失函数
出发点 对于一个样本,有输入和输出结果,我们的目的是优化训练我们的模型,使得对于样本输入,模型的预测输出尽可能的接近真实输出结果.现在需要一个损失函数来评估预测输出与真实结果的差距. 均方误差 回归问 ...
- 机器学习经典损失函数复习:交叉熵(Cross Entropy)和KL散度
目录 1 交叉熵 2 KL散度 时间一长就忘记了,今天看见缩写CE,突然有点陌生,写个图文并茂的博客加深一下印象. 1 交叉熵 交叉熵,在机器学习中广泛用于衡量两个分布的相似度: 交叉熵一般跟在sof ...
- TensorFlow 实战(一)—— 交叉熵(cross entropy)的定义
对多分类问题(multi-class),通常使用 cross-entropy 作为 loss function.cross entropy 最早是信息论(information theory)中的概念 ...
- 关于交叉熵(Cross Entropy)与Softmax
目录 写在前面 KL散度 交叉熵 Softmax 交叉熵与Softmax的关系 交叉熵损失 Softmax的求导 堆叠+向量化 其他关于Softmax函数的问题 赠品 写在前面 Softmax.交叉熵 ...
- pytorch:交叉熵(cross entropy)
1.entropy entropy中文叫做熵,也叫不确定性,某种程度上也叫惊喜度(measure of surprise) = 如果p(x)采用0-1分部,那么entropy=1log1=0 而对于e ...
- 机器学习中使用的交叉熵(cross entropy)透彻分析
从字面分析交叉熵,1是交叉.2是熵(熵与信息量有关):首先交叉熵涉及信息论里面的东西,想要彻底理解交叉熵就要明白此概念跟信息量的关系以及里边的熵怎么理解. (1)信息量 衡量信息量可以用大小或者多少来 ...
- Pytorch 手工复现交叉熵损失(Cross Entropy Loss)
如果直接调包的话很简单,例子如下: import torch import torch.nn as nntorch.manual_seed(1234) ce_loss = nn.CrossEntrop ...
- 目标检测分类损失函数——Cross entropy、Focal loss
一.Cross Entropy Loss 交叉熵是用来判定实际的输出与期望的输出的接近程度,刻画的是实际输出与期望输出的距离,也就是交叉熵的值越小,两个概率分布就越接近. 1. CE Loss的定义 ...
- R 计算均方差MSE(mean squared error)
本文介绍MSE(均方差),并使用两种R方法实现. MSE(均方差) 判定预测模型的准确度的常用方法是均方差MSE( mean squared error).计算公示为: MSE = (1/n) * Σ ...
- 【pytorch损失函数(4)】nn.MSELoss,(Mean Squared Error,MSE) 均方误差(MSE)(squared L2 norm,平方L2范数)。它也被称为L2 Loss。
文章目录 MSE 损失函数 1.是什么? 2.数学表述 3.MSE 梯度消失问题 4.用途 5.L1 vs. L2 for Computer Vision 参考 MSE 损失函数 1.是什么? 均方误 ...
最新文章
- Linux750 权限,linux系统文件权限简明介绍
- Spring Boot 2.x整合Quartz
- jQuery命名空间,插件开发
- vue cli3.3 以上版本配置vue.config.js
- 低功耗设计——基于UPF进行设计
- Css基本语法及页面引用
- adb 增加认证功能
- 微软职位内部推荐-Software Engineer
- 重写系统黑色的TabBar
- qt王者荣耀皮肤抽奖器
- PADS导出gerber文件
- @import ‘./common/stylus/mixins.styl‘引起的一系列错误
- T1119 紧急措施(逐句精解)
- Hudi-通过Hive查询hudi表数据
- unity粒子系统碰撞
- 曝新款苹果手机将采用低功耗微处理器,Find My定位在关机状态下也能使用
- 从普通回溯到三色标记法法
- 【论文阅读第一期】Goods:Organizing Google’s Datasets总结
- 互斥锁深度理解与使用
- [CTF] 关于php代码审计的MD5类的练习