一文带你搞懂熵、交叉、KL散度

一文带你搞懂熵、交叉、KL散度

第一次接触熵,似乎是在高中和大学化学,第二次接触熵,就在机器学习与深度学习中的交叉熵,用的很多,但交叉熵到底是怎么来的?让我们知其所以然。

熵是用来描述不确定性的,熵越高,表示随机变量的不确定性越大,因为每个事件发生的概率更加均匀。熵越低,表示随机变量的不确定性越小,因为某些事件的概率更高,我们更容易预测随机变量的取值。

对于一件事情 X = 0 X=0 X=0 X = 0 X=0 X=0它发生的概率越高, X = 0 X=0 X=0不确定性就越低,描述 X = 0 X=0 X=0的不确定性,我们可以用它的负对数来表示,记为自信息|(x), P ( X = 0 ) P(X=0) P(X=0)越高,自信息越高,说明不确定性越高,P越低自信息越低,说明不确定性越小。

那么对于一个 0 − 1 0-1 01分布, X = 1 X=1 X=1发生的概率为 P ( X = 1 ) P(X=1) P(X=1),那么就可以计算自信息 I ( X = 1 ) I(X=1) I(X=1),同理 X = 0 X=0 X=0发生的概率为 P ( X = 1 ) P(X=1) P(X=1),那么就可以计算自信息 I ( X = 0 ) I(X=0) I(X=0),那么对于 X X X的信息量如何描述呢,我们把 I ( X = 1 ) I(X=1) I(X=1) I ( X = 0 ) I(X=0) I(X=0)做一个平均就好了,相当于信息期望。

对于0-1分布如此,对于任意一个分布就是: ∑ i = 1 n p i ⋅ l o g ( 1 p i ) \sum_{i=1}^np_i\cdot log(\frac1{p_i}) i=1npilog(pi1)(一样的,求信息期望嘛)

熵编码

从熵编码的角度来讲,更容易解释交叉熵

如果我们考虑一串由相互独立的事件组成的信息流,每个事件 x i x_i xi都有相应的概率 P ( x i ) P(x_i) P(xi)

为了编码这些事件,就是说我们要为每个事件分配一个编码,而且要使得平均编码长度最小化,怎么做呢?

做法就是发生概率越大的事件,用最短的编码来表示,就更可能达到这个编码最短的目的。

对于一个发生概率为 P ( x i ) P(x_i) P(xi)的事件,当对它的编码长度为 − log ⁡ 2 p ( x i ) -\log_2p(x_i) log2p(xi) 时,我们实际上达到了这个下界(证明就不管啦~),这个时候,总编码就是最短编码,熵就是编码长度的期望,就被称为最短编码(最优编码)。

简单来说,为了编码这些事件,我们希望为每个事件分配一个编码,使得平均编码长度最小化。信息熵$H(X) $表示了这个平均编码长度的下界,即:
H ( X ) ≤ ∑ i p ( x i ) ⋅ 编码长度 ( x i ) H(X)\leq\sum_ip(x_i)\cdot\text{编码长度}(x_i) H(X)ip(xi)编码长度(xi)
当我们选择编码长度为 − log ⁡ 2 p ( x i ) -\log_2p(x_i) log2p(xi)时,我们实际上达到了这个下界。

H ( X ) = ∑ i p ( x i ) ⋅ ( − log ⁡ 2 p ( x i ) ) H(X)=\sum_ip(x_i)\cdot(-\log_2p(x_i)) H(X)=ip(xi)(log2p(xi))
这个表达式在信息论中被称为香农熵,它确保了在给定概率分布的情况下,平均编码长度是最短的。

掌握交叉熵的意义以及在分类任务中的计算

熵是什么 从编码的角度看——熵是最优编码长度,最省事的编码长度

交叉熵,很明显编码长度不是 − log ⁡ 2 p ( x i ) -\log_2p(x_i) log2p(xi),所以期望编码长度就不是最优最短的,交叉熵 H ( p , q ) H\left(p,q\right) H(p,q)就会比上面说的熵 H ( X ) H(X) H(X)
H ( p , q ) = ∑ i = 1 n p i ⋅ l o g ( 1 q i ) > ∑ i = 1 n p i ⋅ l o g ( 1 p i ) \begin{gather} H\left(p,q\right)& =\sum_{i=1}^np_i\cdot log(\frac1{q_i})>\sum_{i=1}^np_i\cdot log(\frac1{p_i}) \end{gather} H(p,q)=i=1npilog(qi1)>i=1npilog(pi1)
交叉熵越大,说明 − log ⁡ 2 q ( x i ) -\log_2q(x_i) log2q(xi) − log ⁡ 2 p ( x i ) -\log_2p(x_i) log2p(xi)差得越多,所以交叉熵可以描述p和q之间的差异大小。

KL散度

交叉熵不是最短编码,熵是最短编码,非最短编码的比最短编码长多少呢,那让他俩相减就得到了呗,而得到的这个值就是KL散度
L K ( p , q ) = ∑ i = 1 n p i ⋅ l o g ( 1 q i ) − ∑ i = 1 n p i ⋅ l o g ( 1 p i ) \begin{gather} LK\left(p,q\right)& =\sum_{i=1}^np_i\cdot log(\frac1{q_i})-\sum_{i=1}^np_i\cdot log(\frac1{p_i}) \end{gather} LK(p,q)=i=1npilog(qi1)i=1npilog(pi1)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

熊熊想读研究生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值