【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】信息论:交叉熵与对数似然

信息论

“信息”是指一组用来传递的消息的集合。
假设在一个噪声通道上发送消息,我们要考虑如何对每一个信息进行编码、传输以及解码,使得接收者可以尽可能准确地重构出消息。

在这里插入图片描述

信息论将信息的传递看作一种统计现象,也就是将这个过程看作是概率,然后用概率的方式来解释它。总体来说,从统计现象考虑,信息传递分为两个方面:

  • 信息传输
  • 信息压缩(信息编码)
熵(Entropy)

在信息论中,熵用来衡量一个随机事件的不确定性。随机事件的熵越高,不确定性越高,则随机变量的信息越多;熵越低,不确定性越低,则随机变量的信息越少。
对于如何衡量信息量,需要引入自信息(Self Information),自信息是指一个随机事件包含的信息量。对于一个随机变量 X X X,当 X = x X=x X=x时的自信息 I ( x ) I(x) I(x)定义为:
I ( x ) = − log ⁡ p ( x ) I(x)=-\log p(x) I(x)=logp(x)
如果随机变量为 x x x时的概率 p ( x ) p(x) p(x)越小,对应 − log ⁡   p ( x ) -\log\ p(x) log p(x)越大,对应信息量越大。直观上来看,如果一个事件经常发生,那么它对应的信息量就会很小,反之如果一个事件偶尔发生,对应的信息量就会很大。
这里之所以将自信息函数定义为对数函数形式,是为了满足信息的可加性。例如对于下面假设独立从分布为 p p p的分布中抽取的两个信息:
I ( x ) = − log ⁡ p ( x ) I ( x ′ ) = − log ⁡ p ( x ′ ) \begin{aligned} I(x)&=-\log p(x)\\ I(x')&=-\log p(x') \end{aligned} I(x)I(x)=logp(x)=logp(x)
二者的信息量可加,合在一起的信息量:
I ( x , x ′ ) = − ( log ⁡ p ( x ) + log ⁡ p ( x ′ ) ) = − log ⁡ ( p ( x ) ⋅ p ( x ′ ) ) \begin{aligned} I(x,x') &=-(\log p(x)+\log p(x'))\\ &=-\log (p(x)\cdot p(x')) \end{aligned} I(x,x)=(logp(x)+logp(x))=log(p(x)p(x))
变形后可见,两个随机变量的自信息和等价于两个随机变量的联合概率的自信息。
有了自信息概念之后,就能给出熵的定义:随机变量 X X X的自信息量的数学期望。
H ( x ) = E X [ I ( x ) ] = E X [ − log ⁡ p ( x ) ] = − ∑ x ∈ X p ( x ) log ⁡ p ( x ) \begin{aligned} H(x) &=\mathbb{E}_X[I(x)]\\ &=\mathbb{E}_X[-\log p(x)]\\ &=-\sum_{x\in\mathcal{X}}p(x)\log p(x) \end{aligned} H(x)=EX[I(x)]=EX[logp(x)]=xXp(x)logp(x)
上面给出的是假设随机变量 X X X为离散分布。
下面给出一个例子:
在这里插入图片描述

假设有两个分布分别为分布P和分布Q。分布P取第一种可能性的概率为1,第二种可能性为0,对应的熵 H ( P ) = − 1 ⋅ log ⁡ 1 − 0 ⋅ log ⁡ 0 = 0 H(P)=-1\cdot\log 1-0\cdot\log 0=0 H(P)=1log10log0=0 log ⁡ 0 \log0 log0不存在,这里假设等于0),也就是完全确定的;分布Q取两种可能性的概率都为0.5,熵 H ( Q ) = − 0.5 ⋅ log ⁡ 0.5 − 0.5 ⋅ log ⁡ 0.5 = − log ⁡ 0.5 H(Q)=-0.5\cdot\log0.5-0.5\cdot\log0.5=-\log0.5 H(Q)=0.5log0.50.5log0.5=log0.5 。事实上,如果概率分布越均衡,熵的概率就会越大。

熵编码(Entropy Encoding)

在对分布为 p ( y ) p(y) p(y)的一组符号进行编码时,熵 H ( p ) H(p) H(p)是理论上最优的平均编码长度,利用熵来确定每个编码的长度,从而最终达到最理想的平均编码长度,这种编码方式称为熵编码。
熵编码的大致思想是根据一组符号中某个符号出现的概率,概率越高对应的编码长度越短,反之越长。这样最后整体的编码长度就会尽可能短。也就是说,如果符号的信息量越小,编码长度越短,反之越长。假设有 a 、 b 、 c a、b、c abc三个字符,对应出现的概率为 p ( a ) , p ( b ) , p ( c ) p(a),p(b),p(c) p(a),p(b),p(c),假设编码长度等于其信息量大小,则整个符号组的平均编码长度为 − p ( a ) log ⁡   p ( a ) − p ( b ) log ⁡   p ( b ) − p ( c ) log ⁡   p ( c ) = H ( p ) -p(a)\log\ p(a)-p(b)\log\ p(b)-p(c)\log\ p(c)=H(p) p(a)log p(a)p(b)log p(b)p(c)log p(c)=H(p)

交叉熵

对一组符号进行熵编码时,在不知道这一组符号的真实分布的情况下,可以拟定一个概率分布,计算概率分布的熵编码,这就是交叉熵。也就是说,交叉熵时按照概率分布q的最优编码对真实分布为p的信息进行编码的长度。
H ( p , q ) = E p [ − log ⁡ q ( x ) ] = − ∑ x p ( x ) log ⁡ q ( x ) \begin{aligned} H(p,q) &=\mathbb{E}_p[-\log q(x)]\\ &=-\sum_{x}p(x)\log q(x) \end{aligned} H(p,q)=Ep[logq(x)]=xp(x)logq(x)

  • 在给定q的情况下,如果p和q越接近,交叉熵越小
  • 如果p和q越远,交叉熵就越大
    因此可以通过对比交叉熵来衡量符号集不同分布之间的差异
KL散度(Kullback-Leibler Divergence)

除了对比交叉熵之外,更标准的方法是通过KL散度来衡量上面说的这中差异。
KL散度是用概率分布q来近似p时所造成的信息损失量。说人话就是符号集在概率分布q下的交叉熵和实际分布p下的最优编码长度(也就是p下的熵编码)的差异。
K L ( p , q ) = H ( p , q ) − H ( p ) = − ∑ x p ( x ) log ⁡ q ( x ) + ∑ x p ( x ) log ⁡ p ( x ) = − ∑ x p ( x ) ( log ⁡ q ( x ) − log ⁡ p ( x ) ) = − ∑ x p ( x ) log ⁡ q ( x ) p ( x ) = ∑ x p ( x ) log ⁡ p ( x ) q ( x ) \begin{aligned} KL(p,q) &=H(p,q)-H(p)\\ &=-\sum_{x}p(x)\log q(x)+\sum_{x}p(x)\log p(x)\\ &=-\sum_{x}p(x)(\log q(x)-\log p(x))\\ &=-\sum_x p(x)\log\frac{q(x)}{p(x)}\\ &=\sum_x p(x)\log\frac{p(x)}{q(x)} \end{aligned} KL(p,q)=H(p,q)H(p)=xp(x)logq(x)+xp(x)logp(x)=xp(x)(logq(x)logp(x))=xp(x)logp(x)q(x)=xp(x)logq(x)p(x)
对于上式,p和q若相等,则 log ⁡ p ( x ) q ( x ) = 0 \log\frac{p(x)}{q(x)}=0 logq(x)p(x)=0,KL散度为0;同样,p和q相差越大,KL散度越大

在这里插入图片描述

负对数似然

在机器学习中,可以用KL散度来衡量预测分布 p θ ( y ∣ x ) p_\theta(y\mid x) pθ(yx)与真实分布 p r ( y ∣ x ) p_r(y\mid x) pr(yx)之间的差异。对于分类问题来说,可以用这种方法取代0-1损失函数计算模型损失。
K L ( p r ( y ∣ x ) , p θ ( y ∣ x ) ) = ∑ y p r ( y ∣ x ) log ⁡ p r ( y ∣ x ) p θ ( y ∣ x ) KL(p_r(y\mid x), p_\theta(y\mid x))=\sum_yp_r(y\mid x)\log\frac{p_r(y\mid x)}{p_\theta(y\mid x)} KL(pr(yx),pθ(yx))=ypr(yx)logpθ(yx)pr(yx)
之后进行优化时,由于优化对象是参数 θ \theta θ,与r无关,因此可以将无关项简化:
K L ( p r ( y ∣ x ) , p θ ( y ∣ x ) ) ∝ ∑ y p r ( y ∣ x ) log ⁡ p θ ( y ∣ x ) KL(p_r(y\mid x), p_\theta(y\mid x))\propto\sum_yp_r(y\mid x)\log p_\theta(y\mid x) KL(pr(yx),pθ(yx))ypr(yx)logpθ(yx)
在机器学习中,上式被称为交叉熵损失。
由于 p r ( y ∣ x ) p_r(y\mid x) pr(yx)通常为One-Hot向量,因此通常最后化简后的损失函数就成了:
L ( p θ ) = − log ⁡ p θ ( y ∗ ∣ x ) L(p_\theta)=-\log p_\theta(y^*\mid x) L(pθ)=logpθ(yx)
这个就是负对数似然。在机器学习中,优化参数 θ \theta θ就相当于最小化交叉熵、KL散度,最大化负对数似然

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Don't move

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

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

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

打赏作者

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

抵扣说明:

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

余额充值