ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

为什么交叉熵常被用作分类问题的损失函数

2022-01-25 17:07:11  阅读:245  来源: 互联网

标签:函数 用作 交叉 ln bm sum 散度 KL pj


1. 前言

在深度学习领域,交叉熵(Cross Entropy)常被用作分类问题的损失函数。
为知其所以然,本文将详细讲解交叉熵熵(Entropy)KL散度(Kullback-Leibler Divergence) 的基本概念,并分析常用交叉熵作为分类问题损失函数的原因。

2. 交叉熵(Cross Entropy)

设向量 p = [ p 1 , p 2 , ⋯   , p m ] T \bm{p}=[p_1,p_2,\cdots,p_m]^T p=[p1​,p2​,⋯,pm​]T和 q = [ q 1 , q 2 , ⋯   , q m ] T \bm{q}=[q_1,q_2,\cdots,q_m]^T q=[q1​,q2​,⋯,qm​]T表示两个 m m m维的离散概率分布。其中,向量 p \bm{p} p和 q \bm{q} q的元素都非负,且 ∑ j = 1 m p j = 1 , ∑ j = 1 m q j = 1 \sum_{j=1}^mp_j=1,\sum_{j=1}^mq_j=1 ∑j=1m​pj​=1,∑j=1m​qj​=1。则向量 p \bm{p} p和 q \bm{q} q之间的交叉熵定义为:
H ( p , q ) = − ∑ j = 1 m p j ⋅ ln ⁡ q j                                ( 1 ) H(\bm{p},\bm{q})=-\sum_{j=1}^mp_j\cdot\ln{q_j}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(1) H(p,q)=−j=1∑m​pj​⋅lnqj​                              (1)

在分类问题中,向量 p \bm{p} p一般是训练数据的标签,即一个独热(one-hot)向量。向量 q \bm{q} q一般是神经网络前向计算的输出;
很容易记忆和理解向量 p \bm{p} p、 q \bm{q} q与数据标签、神经网络输出的对应关系:因为 ln ⁡ 0 = − ∞ , ln ⁡ 1 = 0 \ln{0}=-\infty,\ln{1}=0 ln0=−∞,ln1=0,且标签是一个某个元素值为1,其余元素值均为0的独热向量,因此计算神经网络输出与数据标签之间交叉熵时,会依照如上处理。

3. 熵(Entropy)

熵是交叉熵的一种特例: H ( p , p ) = − ∑ j = 1 m p j ⋅ ln ⁡ p j H(\bm{p},\bm{p})=-\sum_{j=1}^mp_j\cdot\ln{p_j} H(p,p)=−∑j=1m​pj​⋅lnpj​是概率分布 p \bm{p} p的熵,简写为 H ( p ) H(\bm{p}) H(p)。
熵可以用来衡量概率分布 p \bm{p} p的信息量,详细解释见我的另一篇博客小样本学习(Few-Shot Learning)(二)中3.1.2 Entropy Regularization部分。

4. KL散度(Kullback-Leibler Divergence)

KL散度也被称作相对熵(Relative Entropy),用来衡量两个概率分布的区别有多大。对于离散分布,KL散度的定义为:
K L ( p , q ) = ∑ j = 1 m p j ⋅ ln ⁡ p j q j                         ( 2 ) KL(\bm{p},\bm{q})=\sum_{j=1}^mp_j\cdot\ln\frac{p_j}{q_j}~~~~~~~~~~~~~~~~~~~~~~~(2) KL(p,q)=j=1∑m​pj​⋅lnqj​pj​​                       (2)
其中,约定 ln ⁡ 0 0 = 0 \ln\frac{0}{0}=0 ln00​=0。

因为向量 p \bm{p} p和 q \bm{q} q是两个离散概率分布,因此 p j ∈ [ 0 , 1 ] , q j ∈ [ 0 , 1 ] , f o r   j = 1 ∼ m p_j\in[0,1],q_j\in[0,1],for~j=1\sim{m} pj​∈[0,1],qj​∈[0,1],for j=1∼m且 ∑ j = 1 m p j = 1 , ∑ j = 1 m q j = 1 \sum_{j=1}^mp_j=1,\sum_{j=1}^mq_j=1 ∑j=1m​pj​=1,∑j=1m​qj​=1,KL散度总是非负的。又因为 ln ⁡ 1 = 0 \ln{1}=0 ln1=0,根据式(2)可知,当概率分布 p \bm{p} p和 q \bm{q} q越接近(即向量 p \bm{p} p和 q \bm{q} q的每个对应分量值趋近于相等)则 K L ( p , q ) KL(\bm{p},\bm{q}) KL(p,q)越小,而且 K L ( p , q ) = 0 KL(\bm{p},\bm{q})=0 KL(p,q)=0当且仅当 p = q \bm{p}=\bm{q} p=q,即两个概率分布一致时,它们的KL散度达到最小值

5. 常用交叉熵作为分类问题损失函数的原因

KL散度可以衡量两个概率分布的区别大小,将KL散度作为损失函数,更新模型参数来最小化损失,可以使神经网络输出的概率分布与数据标签更接近。
根据交叉熵、熵和KL散度的定义可知:
K L ( p , q ) = ∑ j = 1 m p j ⋅ ln ⁡ p j q j                                                = ∑ j = 1 m p j ⋅ ( ln ⁡ p j − ln ⁡ q j )                 = ∑ j = 1 m p j ln ⁡ p j − ∑ j = 1 m p j ln ⁡ q j             = − ∑ j = 1 m p j ln ⁡ q j − ( − ∑ j = 1 m p j ln ⁡ p j ) = H ( p , q ) − H ( p )                            KL(\bm{p},\bm{q})=\sum_{j=1}^mp_j\cdot\ln\frac{p_j}{q_j}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\ =\sum_{j=1}^mp_j\cdot(\ln{p_j}-\ln{q_j})~~~~~~~~~~~~~~~\\ =\sum_{j=1}^mp_j\ln{p_j}-\sum_{j=1}^mp_j\ln{q_j}~~~~~~~~~~~\\ =-\sum_{j=1}^mp_j\ln{q_j}-(-\sum_{j=1}^mp_j\ln{p_j})\\ =H(\bm{p},\bm{q})-H(\bm{p})~~~~~~~~~~~~~~~~~~~~~~~~~~ KL(p,q)=j=1∑m​pj​⋅lnqj​pj​​                                              =j=1∑m​pj​⋅(lnpj​−lnqj​)               =j=1∑m​pj​lnpj​−j=1∑m​pj​lnqj​           =−j=1∑m​pj​lnqj​−(−j=1∑m​pj​lnpj​)=H(p,q)−H(p)                          
由于熵 H ( p ) H(\bm{p}) H(p)是不依赖于 q \bm{q} q的常数,一旦固定 p \bm{p} p,则KL散度等于交叉熵加上常数。
由于在分类问题中,向量 p \bm{p} p一般是训练数据的标签,即 p \bm{p} p是固定不变的,因此关于 q \bm{q} q优化KL散度等价于优化交叉熵,因此常用交叉熵作为分类问题的损失函数。

标签:函数,用作,交叉,ln,bm,sum,散度,KL,pj
来源: https://blog.csdn.net/qq_24178985/article/details/122682830

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有