1 信息熵的抽象定义
信息熵是由信息论之父香农提出来的,它用于随机变量的不确定性度量,先上信息熵的公式。
我们可以用log ( 1/P )来衡量不确定性。P是一件事情发生的概率,概率越大,不确定性越小。
可以看到信息熵的公式,其实就是log ( 1/P )的期望,就是不确定性的期望,它代表了一个系统的不确定性,信息熵越大,不确定性越大。
霍夫曼编码就是利用了这种大概率事件分配短码的思想,而且可以证明这种编码方式是最优的。我们可以证明上述现象:
为了获得信息熵为 H(X) 的随机变量 X 的一个样本,平均需要抛掷均匀硬币(或二元问题) H(X) 次 信息熵是数据压缩的一个临界值(参考码长部分的案例, 所以,信息熵H(X)可以看做,对X中的样本进行编码所需要的编码长度的期望值。
2 交叉熵和KL散度
信息熵H(X)可以看做,对X中的样本进行编码所需要的编码长度的期望值。
这里可以引申出交叉熵的理解,现在有两个分布,真实分布p和非真实分布q,我们的样本来自真实分布p。
按照真实分布p来编码样本所需的编码长度的期望为, −∑ip(i)logp(i) − ∑ i p ( i ) log p ( i ) 这就是上面说的信息熵H(p)
按照不真实分布q来编码样本所需的编码长度的期望为, −∑ip(i)logq(i) − ∑ i p ( i ) log q ( i ) 这就是所谓的交叉熵H( p,q )
这里引申出KL散度 D(p||q)=H(p,q)−H(p)=−∑ip(i)logp(i)q(i) D ( p | | q ) = H ( p , q ) − H ( p ) = − ∑ i p ( i ) l o g p ( i ) q ( i ) ,也叫做相对熵,它表示两个分布的差异,差异越大,相对熵越大。
机器学习中,我们用非真实分布q去预测真实分布p,因为真实分布p是固定的,D(p||q) = H(p,q) - H(p) 中 H(p) 固定,也就是说交叉熵H(p,q)越大,相对熵D(p||q)越大,两个分布的差异越大。
所以交叉熵用来做损失函数就是这个道理,它衡量了真实分布和预测分布的差异性。
3 另外
哈夫曼编码和使用概率和获胜概率对应,二进制码长和二元问题的数量相对应,最后算出来的平均码长和平均使用的二元问题数量相对应。
香农也证明了哈夫曼这样的编码是最佳编码(平均码长为能达到的最小的极限)。
从编码的角度,可以这样简单总结,信息熵是最优编码(最短的平均码长),交叉熵是非最优编码(大于最短的平均码长),KL散度是两者的差异(距离最优编码的差距)。