一文读懂交叉熵的基本概念

在模型构建完毕后,下面的工作就是定义损失函数。损失函数的功能在于,衡量实际输出值和预期输出值之间的差异程度,井借此调节网络的参数。
对于多分类问题,最常用的损失函数就是交叉熵函数( Cros-enrorp)那什么是交叉熵呢?说到交叉熵,就不得不提一下“熵”的概念。熵的概念源自热力学。它是系统混乱度的度量,越有序,熵越小。反之,越杂乱无序,熵就越大。
在信息领域,信息论的开创者香农(Claude Shannon )在他的一篇经典论文 “通信的数学原理(A mathematic Theory of Communication)中,借用了热力学的“熵”,提出了“信息熵”的概念。
简单来说,“信息熵”描述了这样一件事情: 一条信息的信息量和它的不确定程度有密切关系。比如,我们要搞清楚一件非常不确定的事情,就得知道关于这件事的大量信息。相反,如果我们已经对某件事情了如指掌,那么就不需要掌握太多的信息就能把它搞明白。所以,从这个角度来看,信息量就等于一个系统的不确定性程度。用大白话来说,熵就是一个从“不知道”变成“知道”的差值。
那么,如何衡量事件的不确定程度呢?香农发明了一个叫“比特(bit)”的概念,并给出了信息熵的计算公式::
H ( X ) = − ∑ i = 1 n p ( x i ) l o g p ( x i ) H(X)=-\sum _{i=1}^{n}p(x_i)logp(x_i) H(X)=i=1np(xi)logp(xi)
其中 p ( x ) p(x) p(x)代表随机事件 X X X x i x_i xi的概率。简单来说,信息量的大小跟随机事件发生的概率有关。越小概率的事情发生了,不确定程度越高, 产生的信息量越大。从信息论的角度来看, − l o g p ( x i ) -logp(x_i) logp(xi)表示的是编码长度(如果log是以2为底,长度单位就是比特), − l o g p ( x i ) p ( x i ) -logp(x_i) p(x_i) logp(xi)p(xi)其实就是在计算加权长度(权值为概率)。所以,对于编码而言,信息熵的意义就是最小的平均编码长度。
举例说明,对于单词"HELLO",我们可根据上述描述来计算它的熵:
p ( ′ H ′ ) = p ( ′ E ′ ) = p ( ′ O ′ ) = 1 / 5 = 0.2 p ( L ′ ) = 2 / 5 = 0.4 H ( ′ H E L L O ′ ) = − 0.2 ∗ l o g 2 0.2 ∗ 3 − 0.4 ∗ l o g 2 0.4 = 1.9293 \begin{aligned} &p('H')=p('E')= p('O')=1/5=0.2 \\ &p(L')=2/5=0.4\\ &H('HELLO')= -0.2*log_20.2*3-0.4*log_20.4=1.9293 \end{aligned} p(H)=p(E)=p(O)=1/5=0.2p(L)=2/5=0.4H(HELLO)=0.2log20.230.4log20.4=1.9293
通过上面计算可知,如果采用最优编码方案的化,“HELLO”中的每个字符大概需要2个比特来编码。
上面熵的计算,是基于每个字符出现的真实概率 p i p_i pi计算得到的。假设在对字符编码时,采用的不是真实概率 p i p_i pi,而采用的是其他概率 q i q_i qi来近似 p i p_i pi,现在的问题是,如果用概率分布 q i q_i qi近似概率 p i p_i pi,那么该如何评价这个“近似”的好与坏呢?这就要用到相对熵的概念了。
相对嫡的理论基础是KL散度,也称KL距离、它可以用来衡量两个随机分布之间的距离,记为 D K L ( p ∣ ∣ q ) D_{KL}(p||q) DKL(pq):
D K L ( p ∣ ∣ q ) = ∑ x ϵ X p ( x ) l o g p ( x ) q ( x ) = ∑ x ϵ X p ( x ) l o g p ( x ) − ∑ x ϵ X p ( x ) l o g q ( x ) = − H ( p ) − ∑ x ϵ X p ( x ) l o g q ( x ) \begin{aligned} D_{KL}(p||q)&=\sum_{x\epsilon X}p(x)log\frac{p(x)}{q(x)}\\ &=\sum_{x\epsilon X}p(x)logp(x)-\sum_{x\epsilon X}p(x)logq(x)\\ &=-H(p)-\sum_{x\epsilon X}p(x)logq(x) \end{aligned} DKL(pq)=xϵXp(x)logq(x)p(x)=xϵXp(x)logp(x)xϵXp(x)logq(x)=H(p)xϵXp(x)logq(x)
参考公式可知,公式的第一部分就是 p p p 的负熵,记作 − H ( p ) - H(p) H(p)
假设 p p p q q q代表两种不同的分布,它们在给定样本集合中的交叉熵可描述为公式的第二部分:
C E ( p , q ) = − ∑ x ϵ X p ( x ) l o g q ( x ) CE(p,q)=-\sum_{x\epsilon X}p(x)logq(x) CE(p,q)=xϵXp(x)logq(x)
这里的“交叉”之意,主要用于描述这是两个事件之间的相互关系。通过对公式实施变形,很容易推导出交叉嫡和相对摘之间的关系,如下所示:
C E ( p , q ) = H ( p ) + D K L ( p ∣ ∣ q ) CE(p,q)=H(p)+D_{KL}(p||q) CE(p,q)=H(p)+DKL(pq)从公式可知,交叉熵和相对熵之间相差了一个熵 H ( p ) H(p) H(p)。如果当p为已知时, H ( p ) H(p) H(p)是一个常数,此时交叉嫡与KL距离(即相对熵)在意义上是等价的,它们都反映了分布p和q的相似程度。最小化交叉熵,实质上就等价于最小化KL距离。它们都在p=q时,取得最小值 H ( p ) H(p) H(p),因为此时 D K L ( p ∣ ∣ q ) = 0 D_{KL}(p||q)=0 DKL(pq)=0
如果信息熵是一种最优编码的体现,那么交叉熵的存在,它允许我们以另外一种“次优”编码方案来计算同一个字符串编码所需的平均最小位数。如前文捕述, − l o g q ( x i ) -logq(x_i) logq(xi)表示编码的长度,下面还以字符串"HELLO"为何来说明这个“次优”编码方案。
我们知道,ASCI 编码表有256个不同的字符,如果对每个字符都赋于相同的概率,那么这个概率 q i = 1 / 256 q_i=1/256 qi=1/256。于是,根据公式“HELLO”的交叉熵计算如下:
q ( ′ H ) = q ( ′ E ′ ) = q ( ′ O ′ ) = q ( ′ L ′ ) = 1 / 256 C E ( ′ H E L L O ′ ) = − 0.2 ∗ l o g 2 ( 1 / 256 ) ∗ 3 − 0.4 ∗ l o g 2 ( 1 / 256 ) = 8 \begin {aligned} &q('H)=q('E')= q('O')=q('L')=1/256\\ &CE('HELLO')= -0.2*log_2(1/256)*3-0.4*log_2(1/256)=8\end{aligned} q(H)=q(E)=q(O)=q(L)=1/256CE(HELLO)=0.2log2(1/256)30.4log2(1/256)=8
也就说。如果采用ASCII编码时,每个字符需要8位,这与ASCII所用的实际编码长度是相符合的。在当前条件下,编码长度远大于它的最优编码(约等于2位)。
从前面的分析可知,如果真实概率与预测概率相差很小,那么交又熵就会很小。反之,如果二者相差较大,则交叉熵就较大。假设某个神经网络的输出值和预期值都是概率,交叉熵岂不是一个绝佳的损失函数?
的确是这样。对于多分类问题,在 s o f t m a x softmax softmax 函数的“加工”下,它的实际输出值就是个概率向量,如[0.96, 0.04, 0],设其概率分布为 q q q。而实际上,它的预期输出值,就是标签的one-hot编码:
从本质上看,one-hot操作就是把具体的标签空间,变换到一个概率测度空间(设为 p p p).如,[1,0,0]。可以这样理解这个概率,标签分类的标量输出为1(即概率为100),其他值为0(即概率为0%)现在要做的工作是,利用交又熵评估实际输出的微率分布 q q q,与预期概率的分布 p p p之间的差异程度。如果差别较大,就接着调节网络参数,直至二者的差值小于给定的阈值。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅唱战无双

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值