信息论

时间:2024-03-26 09:06:24

文章参考自:Visual Information Theory

Codes

假设有一个朋友Bob,他只说4个单词:dog、cat、fish、bird,并且交流时使用2进制码表示信息。使用定长的2位二进制码可表示4个单词,此时的平均码长为2。单词和二进制编码的对应关系如下
信息论
可将此编码方式画图显示如下,方块的面积之和越大,表示平均码长越长
信息论
上述编码方式没有考虑每个单词出现的概率。现在已知Bob特别喜欢dog,他说的4个单词的频率分布如下
信息论
为了缩小平均码长,考虑如下变长编码
信息论
变长编码可视化图如下所示,方块的面积之和为1.75,即平均码长为1.75。对于这个概率分布,这种编码方式已经达到最优。
信息论

The Space of Codewords

每定义一个编码,都需要牺牲掉以此编码为前缀的所有编码空间。如下图所示,假设我们定义了一个编码01,为了使解码无歧义,必须舍弃任何以01为前缀的编码,如010、011010110等。此时,牺牲的比例为12L=14\frac{1}{2^L}=\frac{1}{4},如黑色部分所示,L=2L=2是定义编码01的长度
信息论
如果定义编码的长度为LL,那么牺牲的编码空间(可以理解为代价)Cost=12L\text{Cost}=\frac{1}{2^L}

一个很直观的理解是,定义的编码长度越小,所牺牲掉的编码空间也越大。因此,虽然对出现概率高的单词定义长度小的编码,缩短了平均码长,获得了好处,但是牺牲了较大的编码空间,即产生了坏处。于是,我们需要在上述好处和坏处之间做权衡。

Optimal Encodings

一个最优的编码策略是根据单词的出现频率作为比例来分配代价(证明略)。对于出现频率高的单词,我们甘愿为之付出更大的代价,来达到缩短平均码长的目的。

例如一个单词的出现频p(x)=0.5p(x)=0.5,我们付出的代价的数值也为0.5,于是有Cost=12L=p(x)=0.5\text{Cost}=\frac{1}{2^L}=p(x)=0.5,从而算出L=1L=1

Entropy

总结上一节的最优编码策略,对于一个单词,其出现的概率为p(x)p(x),分配的编码长度为L(x)L(x),付出的代价Cost=12L(x)\text{Cost}=\frac{1}{2^{L(x)}},令代价等于概率12L(x)=p(x)\frac{1}{2^{L(x)}}=p(x),解得L(x)=log21p(x)L(x)=\log_2\frac{1}{p(x)},为概率对应的最优编码的长度,这个长度L(x)L(x)可以是小数

于是可以求出离散概率分布p(x)p(x)的最优编码的平均码长,称为熵,记作H(p)H(p)
H(p)=xp(x)log1p(x)=xp(x)logp(x) H(p)=\sum_{x}p(x)\log\frac{1}{p(x)}=-\sum_{x}p(x)\log p(x)

对于连续型变量的概率分布,熵的定义为积分形式
H(p)=xp(x)log1p(x)dx=xp(x)logp(x)dx H(p)=\int_{x}p(x)\log\frac{1}{p(x)}dx=-\int_{x}p(x)\log p(x)dx

熵有3种意义

  1. 数据压缩的程度,即上述的平均码长的理解
  2. 事件或信息的不确定性
    例如太阳从东方/西方升起,熵为0;投掷硬币出现正/反面,熵为1
  3. 数据集的混杂程度
    例如全是大米,看上去一片“纯净”;大米掺入一点绿豆,看上去还算比较“纯净”;一半大米一半绿豆,看上去就是“混杂”的;等量的大米、绿豆、黄豆、黑豆,看上去就及其“混杂”

Cross-Entropy

假设我们还有一位朋友Alice,同样只会说4个单词:dog、cat、fish、bird。但Alice喜欢猫,她和Bob的单词频率分布有所不同(cat的频率最大),如下所示
信息论
Bob的编码方式对他自己是最优的,平均码长为1.75。
而Alice采用了Bob的编码方式,此时平均码长为2.25,显然对Alice来说,因为她的概率分布不同于Bob,因此Bob的编码方式对她不是最优的

于是就有了交叉熵的定义:对于一个概率分布q(x)q(x),使用另一个概率分布p(x)p(x)的最优编码,得到的平均码长,记作Hp(q)H_p(q),称为qqpp的交叉熵,下标pp表示使用pp的最优编码
注:wikipedia中记作H(q,p)H(q,p),第2个变量表示使用的最优编码系统
信息论
Hp(q)=xq(x)log1p(x)=xq(x)logp(x) H_p(q)=\sum_{x}q(x)\log\frac{1}{p(x)}=-\sum_{x}q(x)\log p(x)
连续形式为
Hp(q)=xq(x)log1p(x)dx=xq(x)logp(x)dx H_p(q)=\int_{x}q(x)\log\frac{1}{p(x)}dx=-\int_{x}q(x)\log p(x)dx

对于Alice和Bob,存在以下4种情况:

  • Bob使用自己的最优编码,H(p)=1.75H(p)=1.75
  • Alice使用Bob的最优编码,Hp(q)=2.25H_p(q)=2.25
  • Alice使用自己的最优编码,H(q)=1.75H(q)=1.75
  • Bob使用Alice的最优编码,Hq(p)=2.375H_q(p)=2.375
    信息论
    可以看出Hp(q)Hp(q)H_p(q)\neq H_p(q),即交叉熵是不对称的。

KL Divergence(相对熵)

只要p(x)p(x)q(x)q(x)不相等,那么Hq(p)>H(p)H_q(p)\gt H(p),差值表示了p(x)p(x)使用了另一个概率q(x)q(x)的编码时,相对于自己的最优编码长度增加了多少,称为pp相对于qq的相对熵,记为Dq(p)D_q(p)
信息论
Dq(p)=Hq(p)H(p)=xp(x)log1q(x)xp(x)log1p(x)=xp(x)logp(x)logq(x) \begin{aligned} D_q(p)&=H_q(p)-H(p)\\ &=\sum_{x}p(x)\log\frac{1}{q(x)}-\sum_{x}p(x)\log\frac{1}{p(x)}\\ &=\sum_{x}p(x)\frac{\log p(x)}{\log q(x)} \end{aligned}
注:wikipedia中记作DKL(pq)D_{KL}(p\parallel q),表示pp相对于qq

连续形式
Dq(p)=xp(x)logp(x)logq(x)dx D_q(p)=\int_{x}p(x)\frac{\log p(x)}{\log q(x)}dx

同样的,KL Divergence也是非对称的,Dq(p)Dp(q)D_q(p)\neq D_p(q)

KL Divergence可以理解为两个概率分布之间的距离