接上文:信息论随笔1
参考以下:
如何通俗的解释交叉熵与相对熵; https://www.zhihu.com/question/41252833/answer/108777563
https://blog.csdn.net/qq547276542/article/details/78370245
交叉熵
一个变量X,可能有多种取值,每个取值结果对应一个事件,对于一个随机事件x,其真实概率分布为p(x),从数据中得到的概率分布为q(x),则交叉熵为:
( H(p, q) = -sumlimits_{x} p(x)log_{2}q(x) )
交叉熵反映的是概率分布q所估计的变量X的信息量;
相对的,真实分布p所表达的变量X的真实信息量是信息熵H(X),但这里我们在讨论的是对同一个变量X的p、q两种概率分布所带来的信息量差异,因而只将p、q当做变量,信息熵用H(p)表示;
相对熵
根据Gibbs' inequality可知,( H(p, q) >= H(p) ),当q为真实分布p时取等号;
由概率分布q估计所多出来的冗余信息量,即为相对熵:
( D(p||q) = H(p,q) - H(p) = sumlimits_{x} p(x)log_{2}frac{p(x)}{q(x)} )
相对熵又称KL散度;
相对熵也用来衡量相关性,但和变量的互信息不同,它用来衡量两个取值为正数的函数的相似性。在这里,它描述q分布与p分布的相似性;
因为( H(p,q)=H(p)+D_{KL}(p||q) ),真实分布的信息熵H(p)固定不变,因而交叉熵可以用做机器学习中的损失函数;
例子:
含有4个字母(A,B,C,D)的数据集中,真实分布p=(1/2, 1/2, 0, 0),即A和B出现的概率均为1/2,C和D出现的概率都为0。计算H(p)为1,即只需要1位编码即可识别A和B。如果使用分布Q=(1/4, 1/4, 1/4, 1/4)来编码则得到H(p,q)=2,即需要2位编码来识别A和B(当然还有C和D,尽管C和D并不会出现,因为真实分布p中C和D出现的概率为0);
多出来的这1位编码就是分布Q估计所引入的冗余信息量即相对熵;