交叉熵损失函数(CrossEntropy Function)是分类任务中十分常用的损失函数,但若仅仅看它的形式,我们不容易直接靠直觉来感受它的正确性,因此我查阅资料写下本文,以求彻底搞懂。

1.Softmax

首先是我们的softmax函数。
它很简单,以一个向量作为输入,把向量的每个分量,用指数函数归一化后输出。具体来说,其数学形式为:
s o f t m a x ( x i ) = e x i ∑ k e x k softmax(x_i) = \frac{e^{x_i}}{\sum_ke^{x_k}} softmax(xi​)=∑k​exk​exi​​
x i x_i xi​为向量中第i个项。

设 s o f t m a x softmax softmax的输出向量为 i n p u t _ v e c t o r input\_vector input_vector,当 i n p u t _ v e c t o r input\_vector input_vector中某个分量过大时,可能导致其指数形式数值过大溢出。因此我们需要将 i n p u t _ v e c t o r input\_vector input_vector每一项减去 m a x ( i n p u t _ v e c t o r ) max(input\_vector) max(input_vector),再输入 s o f t m a x softmax softmax中去。可以验证,减去最大值后, s o f t m a x softmax softmax的输出不会改变。

2.交叉熵损失函数

交叉熵损失函数作为分类任务最常用的 l o s s f u n c t i o n loss\ function loss function,我们理应深刻理解并熟知其形式与含义。

2.1 交叉熵为什么能衡量分类结果的好坏?

这是交叉熵损失函数的公式:
L o s s = − ∑ i y i l o g a i Loss = -\sum_iy_iloga_i Loss=−i∑​yi​logai​
其中, a i a_i ai​为softmax函数输出向量的第 i i i个分量, y i y_i yi​为样本真实标签的 o n e h o t one\ hot one hot形式的第i个分量。
也就是说,实际上求和的项中只有一个不为0, L o s s Loss Loss就等于 − l o g a k -loga_k −logak​,其中k对应的是样本的真实标签。

根据对数函数的性质,容易得出 − l o g a k -loga_k −logak​随 a k a_k ak​增大而减小。也就是说, s o f t m a x softmax softmax输出向量对应 l a b e l label label的那项越大, L o s s Loss Loss就越小,这正是我们希望的。

*2.2 熵、交叉熵(选读)

2.2.1 自信息

自信息是用来量化信息量大小的值。可以这样认为,越让我们觉得惊讶的事情带来的信息量越大。
一个优生考出好成绩的概率很大,当他期末成绩优秀时我们不会感到奇怪。但当一个学习很差的同学考得很好,我们就会感到非常惊讶。前者发生时,我们难以挖掘出隐含信息,而后者发生时,我们会推测这名学生可能有作弊行为,抑或他近期学习用功,找到了高效的学习方法。这样来看,后者带来的信息量明显大于前者。也就是说,概率更小的事情的生能带来更多的信息。自然地,我们可以用概率来衡量自信息,公式如下:
s = l o g ( 1 / p i ) = − l o g p i s = log(1/p_i)=-logp_i s=log(1/pi​)=−logpi​
其中 p i p_i pi​是事件i发生的概率。

2.2.2 熵

熵,即为包含信息量的大小。对于一个事件(如分类),它的结果有很多种(如分为狗、猫…),分别对应不同的概率。很自然的,我们用各个结果自信息的加权平均作为事件的熵。
假设有n个结果(如分类有n类),则可以写成:
e = − ∑ i p i l o g p i e = -\sum_i{p_ilogp_i} e=−i∑​pi​logpi​

2.2.3 交叉熵

交叉熵和熵是类似的概念,区别在于,现在我们是对两个不同分布进行定义。离散型变量的交叉熵可定义为:
H = − ∑ p i l o g q i H =-\sum{p_ilogq_i} H=−∑pi​logqi​
可以理解为,每个结果的实际概率为 p i p_i pi​,却有人将概率估计为 q i q_i qi​。(当前样本分为类i的真正概率为 p i p_i pi​,但是分类器认为该样本为第i类的概率是 p i p_i pi​)。也就是说,我们带着某个主观认知去接触某个客观随机现象的时候,会产生的平均自信息量。
当我们主观上认为一个事情发生的概率很低(即 − l o g q i ( x ) -logq_i(x) −logqi​(x)很大),但是客观上发生概率 p i p_i pi​很大的时候,也就是主观认知和客观现实非常不匹配的时候,交叉熵的结果会很大。

交叉熵衡量了两个概率分布的差异。其值越大,两个概率分布相差越大;其值越小,则两个概率分布的差异越小。

从概率论角度来讲,我们要让分类器结果好,就是要让输出的各类的概率分布与真实分布接近,也就是要优化交叉熵,让其尽量小。

2.2.4 Kullback-Leibler Divergence(K-L 散度)

交叉熵可以衡量我们基于某种主观认识去感受客观世界时,会产生的平均自信息量。但是根据上面的公式,即使主观和客观完全匹配(交叉熵等于信息熵),只要事件仍然随机而非确定,产生的自信息量就一定大于0。那我们应该如何更好地度量主观认识和客观事实之间差异呢?可以用当前对事件的主观认识产生的期望和完全正确认识事件时产生的期望的差值来衡量,也就是相对熵(常称作KL-散度),通常写作:

当我们的主观认知完全匹配客观现实的时候,KL-散度应该等于0,其它任何时候都会大于0。

由于存在恒为正这一性质,KL-散度经常用于描述两个分布是否接近,也就是作为两个分布之间“距离”的度量;不过由于运算不满足交换律,所以有不能完全等同于“距离”来理解。

机器学习中通常直接用交叉熵作为损失函数的原因在于,客观分布并不随模型参数变化而变化,所以即使是优化KL-散度,对参数求导后就只剩下交叉熵的导数了。

3. 交叉熵损失求导(梯度计算)

Softmax函数下的交叉熵损失含义与求导相关推荐

  1. 交叉熵代价函数(损失函数)及其求导推导 (Logistic Regression)

    目录 1. 前言 2. 交叉熵损失函数 3. 交叉熵损失函数的求导 前言 说明:本文只讨论Logistic回归的交叉熵,对Softmax回归的交叉熵类似(Logistic回归和Softmax回归两者本 ...

  2. 交叉熵代价函数(损失函数)及其求导推导

    转自:http://blog.csdn.net/jasonzzj/article/details/52017438 前言 交叉熵损失函数 交叉熵损失函数的求导 前言 说明:本文只讨论Logistic回 ...

  3. 图像分类_03分类器及损失:线性分类+ SVM损失+Softmax 分类+交叉熵损失

    2.3.1 线性分类 2.3.1.1 线性分类解释 上图图中的权重计算结果结果并不好,权重会给我们的猫图像分配⼀个⾮常低的猫分数.得出的结果偏向于狗. 如果可视化分类,我们为了⽅便,将⼀个图⽚理解成⼀ ...

  4. 神经网络适用于分类问题的最后一层-Softmax和交叉熵损失介绍及梯度推导

    前言 传统机器学习中两大经典任务就是回归与分类.分类在深度学习中也很常见,令我印象最深的是图像分类.当然,在NLP中,分类也无处不在.从RNN与其变体,到Transformer.Bert等预训练模型, ...

  5. softmax回归与交叉熵损失

    前言 回归与分类是机器学习中的两个主要问题,二者有着紧密的联系,但又有所不同.在一个预测任务中,回归问题解决的是多少的问题,如房价预测问题,而分类问题用来解决是什么的问题,如猫狗分类问题.分类问题又以 ...

  6. 【机器学习】 二次损失函数的不足及交叉熵损失softmax详解

    二次代价函数的不足: 以sigmoid激活函数为例,由于初始化是随机的,假设目标值为0,第一次随机初始化使得输入为0.82,那么还可以,多次迭代之后可以收敛到0.09,但如果第一次随机初始化到0.98 ...

  7. sklearn基于make_scorer函数为Logistic模型构建自定义损失函数+代码实战(二元交叉熵损失 binary cross-entropy loss)

    sklearn基于make_scorer函数为Logistic模型构建自定义损失函数+代码实战(二元交叉熵损失 binary cross-entropy loss) # 广义线性模型中的各种连接函数: ...

  8. 【损失函数】NLLLoss损失、CrossEntropy_Loss交叉熵损失以及Label Smoothing示例与代码

      机缘巧合下,近期又详细学习了一遍各损失函数的计算,特此记录以便后续回顾.   为了公式表示更加清晰,我们设 y n ∈ { 1 , 2 , - , K } {{y_n} \in \{ 1,2, \ ...

  9. 均方误差越大越好_直观理解为什么分类问题用交叉熵损失而不用均方误差损失?...

    交叉熵损失与均方误差损失 常规分类网络最后的softmax层如下图所示,传统机器学习方法以此类比, 一共有\(K\)类,令网络的输出为\([\hat{y}_1,\dots, \hat{y}_K]\), ...

最新文章

  1. [20161107]关于数据文件位图区.txt
  2. 【JavaScript】你知道吗?Web的26项基本概念和技术
  3. 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(四)
  4. java在W n8安装_在windows中安装JDK8并配置环境变量-java环境变量设置
  5. Android开发之Scroller
  6. 对分类型变量,进行编码处理——pd.get_dummies()、LabelEncoder()、oneHotEncoder()
  7. CSS外边距合并(塌陷/margin越界)
  8. FPGA语法篇——Verilog 语法知识
  9. 大数据讲课笔记1.6 压缩与打包
  10. 命令提示符命令(cmd)
  11. CS5213 HDMI转VGA带音频DAC输出|HDMI to VGA withDAC转换
  12. PHP获取客户端操作系统,游览器类型及版本号
  13. Java基础01:基础
  14. 如何成为一个漏洞赏金猎人
  15. A man who has iron bone
  16. BUG记录: Exception evaluating SpringEL expression
  17. jdk1.9的安装与环境配置
  18. 交换机和路由器技术-32-命名ACL
  19. keepalived健康检查
  20. ps2021直装版|ps2021中文直装版 v22.0.0.35附安装教程

热门文章

  1. ASSERT_VALID
  2. 鲁迅关于改变的名人名言
  3. 【巧用dm工具解决硬盘低格问题】
  4. 清风数学建模学习笔记——K-means聚类模型详解及SPSS操作流程
  5. 完美世界游戏客户端程序面试
  6. HTML+CSS+JS网页设计期末课程大作业 DW个人博客网站制作 web前端开发技术 web课程设计 网页规划与设计
  7. Unity3D 入门:安装 Unity3D 并配置与 Visual Studio 的协作开发环境
  8. 笔记本电脑java记事本在哪_系统自带有记事本吗_电脑自带的记事本在哪-win7之家...
  9. 【Axure视频教程】用中继器制作排名图
  10. 旺旺 QQ的聊天记录(含图片)保存到自己的服务器