KL散度=交叉熵-熵

  • 熵:可以表示一个事件A的自信息量,也就是A包含多少信息。
  • KL散度:可以用来表示从事件A的角度来看,事件B有多大不同。
  • 交叉熵:可以用来表示从事件A的角度来看,如何描述事件B。

一种信息论的解释是:

  • 熵的意义是对A事件中的随机变量进行编码所需的最小字节数
  • KL散度的意义是“额外所需的编码长度”如果我们用B的编码来表示A
  • 交叉熵指的是当你用B作为密码本来表示A时所需要的“平均的编码长度”

一、熵

1.定义

衡量一个事件所包含的信息量

$$S(A)=-sum_i P_A(x_i)logP_A(x_i)$$

二、交叉熵

1.定义

$$H(A,B)=-sum_iP_A(x_i)log(P_B(x_i))$$

2.性质

  • 不对称性
  • cross主要是用于描述两个事件之间的相互关系,对自己求交叉熵等于熵。即$H(A,A)=S(A)$,注意只是非负而不一定等于0.

三、KL散度

1.定义

又名“相对熵”,衡量两个事件/分布之间的不同

  KL散度由A自己的熵与B在A上的期望共同决定。当使用KL散度来衡量两个事件(连续或离散),上面的公式意义就是求 A与B之间的对数差 在 A上的期望值。

2.性质

  • 如果$P_A=P_B$,即两个事件分布完全相同,那么KL散度等于0.
  • KL散度是不对称的
  • $D_{KL}(A||B)=-S(A)+H(A,B)$,如果$S(A)$是一个常量,那么$D_{KL}(A||B)=H(A,B)$,也就是说KL散度和交叉熵在特定条件下等级。

3.KL散度 VS 交叉熵

训练数据的分布A是给定的。那么根据我们在第四部分说的,因为A固定不变,那么求$D_{KL}(A||B)$  等价于求$H(A,B)$ ,也就是A与B的交叉熵。得证,交叉熵可以用于计算“学习模型的分布”与“训练数据分布”之间的不同。当交叉熵最低时(等于训练数据分布的熵),我们学到了“最好的模型”。

参考文献:

【1】KL散度 - 搜索结果 - 知乎

原文地址:https://www.cnblogs.com/nxf-rabbit75/p/11694985.html