交叉熵

信息论

交叉熵是信息论中的一个概念,要想了解交叉熵的本质,需要先从最基本的概念讲起。

1 信息量

每件事情都有一定的发生概率,不同概率的事情发生带来的信息量是不同的。举例来说:
事件A:巴西队进入了2018世界杯决赛圈。
事件B:中国队进入了2018世界杯决赛圈。
可以知道,B事件发生的信息量是比A事件发生的信息量要大的,因为A事件的概率明显比B事件的概率大。那么我们如何来衡量不同事件发生带来的信息量呢?公式如下:
其中p(x)表示事件x发生的概率
信 息 量 = − l o g ( p ( x ) ) 信息量=-log(p(x)) =log(p(x))

2 熵

熵用来表示所有信息量的期望。熵衡量了预测随机变量的不确定度,不确定性越大熵越大。
公式如下:
H ( X ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) H(X)=-\sum_{i=1}^{n}p(x_{i})log(p(x_{i})) H(X)=i=1np(xi)log(p(xi))
其中n代表所有可能发生的事件数量。
举例来说:

序号事件概率p信息量I
A电脑正常开机0.6 − l o g ( p ( A ) ) = 0.22 -log(p(A))=0.22 log(p(A))=0.22
B电脑无法开机0.2 − l o g ( p ( B ) ) = 0.69 -log(p(B))=0.69 log(p(B))=0.69
C电脑爆炸0.2 − l o g ( p ( C ) ) = 0.69 -log(p(C))=0.69 log(p(C))=0.69

H ( x ) = − [ p ( A ) l o g ( p ( A ) ) + p ( B ) l o g ( p ( B ) ) + p ( C ) ) l o g ( p ( C ) ) ] = 0.6 ∗ 0.22 + 0.2 ∗ 0.69 + 0.2 ∗ 0.69 = 0.408 H(x) = −[p(A)log(p(A))+p(B)log(p(B))+p(C))log(p(C))] =0.6*0.22+0.2*0.69+0.2*0.69 =0.408 H(x)=[p(A)log(p(A))+p(B)log(p(B))+p(C))log(p(C))]=0.60.22+0.20.69+0.20.69=0.408

3 相对熵(KL散度)

相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异

维基百科对相对熵的定义

In the context of machine learning, DKL(P‖Q) is often called the information gain achieved if P is used instead of Q.

即 使用P来描述问题所带来的信息增量,相对于Q来说。

在机器学习中,P往往用来表示样本的真实分布,比如[1,0,0]表示当前样本属于第一类。Q用来表示模型所预测的分布,比如[0.7,0.2,0.1]
直观的理解就是如果用P来描述样本,那么就非常完美。而用Q来描述样本,虽然可以大致描述,但是不是那么的完美,信息量不足,需要额外的一些“信息增量”才能达到和P一样完美的描述。如果我们的Q通过反复训练,也能完美的描述样本,那么就不再需要额外的“信息增量”,Q等价于P。
KL散度的计算公式:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) D_{KL}(p||q)=\sum_{i=1}^{n}p(x_{i})log( \frac{ p(x_{i}) } {q(x_{i}) }) DKL(pq)=i=1np(xi)log(q(xi)p(xi))
D K L D_{KL} DKL的值越小,表示q分布和p分布越接近。

4 交叉熵

对KL散度公式变形得到:
D K L ( [ ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) = − H ( p ( x ) ) + [ − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) ] D_{KL}([||q) = \sum_{i=1}^{n}p(x_{i})log(p(x_{i})) - \sum_{i=1}^{n}p(x_{i})log(q(x_{i})) =-H(p(x)) + [-\sum_{i=1}^{n}p(x_{i})log(q(x_{i}))] DKL([q)=i=1np(xi)log(p(xi))i=1np(xi)log(q(xi))=H(p(x))+[i=1np(xi)log(q(xi))]
等式的前一部分恰巧就是p的熵,等式的后一部分,就是交叉熵:
H ( p , q ) = − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) H(p,q) = -\sum_{i=1}^{n}p(x_{i})log(q(x_{i})) H(p,q)=i=1np(xi)log(q(xi))
在机器学习中,我们需要评估label和predicts之间的差距,使用KL散度刚刚好,即 D K L ( y ∣ ∣ y ^ ) D_{KL}(y||\hat{y}) DKL(yy^),由于KL散度中的前一部分 − H ( y ) −H(y) H(y)不变,故在优化过程中,只需要关注交叉熵就可以了。所以一般在机器学习中直接用用交叉熵做loss,评估模型。

下一篇将会讲解为什么要使用交叉熵作为损失函数

转自:博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值