继续创造,加速生长!这是我参与「日新计划 10 月更文应战」的第20天,点击检查活动概况


本文从两方面进行解说:数学和编码方面。总有一个视点能让你更好理解。

数学解说

熵 Entropy

熵用于核算一个离散随机变量的信息量。关于一个概率散布XXXX的熵便是它的不确定性。 用大白话来说,假设你猜测一个东西,有时分成果会出人意料,熵就表示出人意料的程度。熵越大你越不简单猜测对,事情就越简单出人意料。

离散型概率散布XX的熵界说为自信息的均匀值:

H(X)=Ep(x)[I(x)]=−∑xp(x)log⁡p(x)H(X)=E_{p(x)}[I(x)]=-\sum_{x} p(x) \log p(x)

留意: 熵的单位可所以比特(bits)也可所以奈特(nats)。二者区别在于前者是用log⁡2\log_2核算,后者是用log⁡e\log_e核算。咱们这里是用log⁡2\log_2核算。

举个栗子算一下熵。

两个城市明日的气候状况如下:

两个视角给你解读 熵、交叉熵、KL散度
现在有两个事情:

  • A市明日的气候状况
  • B市明日的气候状况

H(A)=−0.8log⁡0.8−0.15log⁡0.15−0.05log⁡0.05=0.884H(A)=-0.8 \times \log 0.8-0.15 \times \log 0.15-0.05 \times \log 0.05=0.884

H(B)=−0.4log⁡0.4−0.3log⁡0.3−0.3log⁡0.3=1.571H(B)=-0.4 \times \log 0.4-0.3 \times \log 0.3-0.3 \times \log 0.3=1.571

能够看到B的熵比A大,因此B城市的气候具有更大的不确定性。

穿插熵 Cross-Entropy

穿插熵用于衡量两个概率散布间的差异性信息。 再用大白话说一下,比方你认为一件事有六成概率能成功,实践上你去做的时分你又八成概率能成功。这时分成果出人意料的程度便是穿插熵。

穿插熵的数学界说:

H(A,B)=−iPA(xi)log⁡(PB(xi))H(A, B)=-\Sigma_{i} P_{A}\left(x_{i}\right) \log \left(P_{B}\left(x_{i}\right)\right)

举个栗子算一下穿插熵。

改了一下表头。

两个视角给你解读 熵、交叉熵、KL散度
现在仍是有两个事情:

  • PP实践A城市明日的气候状况
  • QQ你认为的A城市的气候状况

H(P,Q)=−0.8log⁡0.4−0.15log⁡0.3−0.05log⁡0.3=1.405H(P,Q)=-0.8 \times \log0.4-0.15 \times \log0.3 – 0.05 \times \log 0.3 = 1.405

KL散度 Kullback-Leibler divergence

KL散度又称相对熵、信息增益,相关于穿插熵来说,是从另一个视点核算两个散布的差异程度。相关于散布X,散布Y有多大的不同?这个不同的程度便是KL散度。

留意,KL散度是不对称的,也便是说X关于Y的KL散度 不等于 Y关于X的KL散度。

AABB 为界说在同一概率空间的两个概率测度,界说 AA 相关于 BB 的相对熵为

D(A∥B)=∑xPA(x)log⁡PA(x)PB(x)D(A \| B)=\sum_{x} P_A(x) \log \frac{P_A(x)}{P_B(x)}

举个栗子算一下KL散度。

仍是用这个比如:

两个视角给你解读 熵、交叉熵、KL散度
现在仍是有两个事情:

  • PP实践A城市明日的气候状况
  • QQ你认为的A城市的气候状况

D(P∥Q)=0.8log⁡(0.80.4)+0.15log⁡(0.150.3)+0.05log⁡(0.0.50.3)=0.521D(P \|Q) = 0.8 \times \log(0.8 \div0.4) + 0.15 \times \log(0.15 \div 0.3) + 0.05 \times \log(0.0.5\div 0.3) =0.521

熵、KL散度和穿插熵的联系

咱们从上边三个比如中能够看到:

  • A城市明日实践气候状况的熵H(A)=0.884H(A)=0.884
  • A城市明日实践气候状况和你猜测的气候状况的穿插熵为H(P,Q)=1.405H(P,Q)=1.405
  • A城市明日实践气候状况和你猜测的气候状况的KL散度为D(P∥Q)=0.521D(P \|Q) =0.521

然后咱们能够发现:0.884+0.521=1.4050.884+0.521=1.405

这里能够引出一个结论

熵+KL散度=穿插熵熵 + KL散度 = 穿插熵

从编码的视点解说

留意:下边这个举的比如是能整除的情况下,不能整除的情况下是算不出来的。

能整除的比如

假设咱们现在有一条音讯皮皮卡皮,皮卡丘

让咱们对这条音讯统计一下:

数量 4 2 1 1
份额 48\frac{4}{8} 28\frac{2}{8} 18\frac{1}{8} 18\frac{1}{8}

画个哈夫曼树:

两个视角给你解读 熵、交叉熵、KL散度

数量 4 2 1 1
份额 48\frac{4}{8} 28\frac{2}{8} 18\frac{1}{8} 18\frac{1}{8}
哈夫曼编码 0 11 100 101
编码长度 1 2 3 3

最短编码均匀长度:

481+282+183+183=1.75\frac{4}{8} \times 1+\frac{2}{8} \times 2+\frac{1}{8} \times 3+\frac{1}{8} \times 3=1.75

上述编码的熵:

−48log⁡48−28log⁡28−18log⁡18−18log⁡18=1.75-\frac{4}{8} \times \log \frac{4}{8}-\frac{2}{8} \times \log \frac{2}{8}-\frac{1}{8} \times \log \frac{1}{8}-\frac{1}{8} \times \log \frac{1}{8}=1.75

从编码视点看,一串编码的熵等于它的最短编码均匀长度。

数量 4 2 1 1
份额 48\frac{4}{8} 28\frac{2}{8} 18\frac{1}{8} 18\frac{1}{8}
哈夫曼编码 0 11 100 101
过错的哈夫曼编码 11 0 100 101

如果你编码时分写错了

现在的均匀编码长度是:

482+281+183+183=2\frac{4}{8} \times 2+\frac{2}{8} \times 1+\frac{1}{8} \times 3+\frac{1}{8} \times 3=2

此时穿插熵为:

−48log⁡28−28log⁡48−18log⁡18−18log⁡18=2-\frac{4}{8} \times \log \frac{2}{8}-\frac{2}{8} \times \log \frac{4}{8}-\frac{1}{8} \times \log \frac{1}{8}-\frac{1}{8} \times \log \frac{1}{8}=2

运用过错的编码时分,编码均匀长度便是穿插熵。

而KL散度呢?

48log⁡(4828)+28log⁡(2848)+18log⁡(1818)+18log⁡(1818)=0.25\frac{4}{8} \times \log(\frac{4}{8}\div\frac{2}{8})+\frac{2}{8} \times \log (\frac{2}{8} \div \frac{4}{8})+\frac{1}{8} \times \log (\frac{1}{8} \div \frac{1}{8})+\frac{1}{8} \times \log (\frac{1}{8} \div \frac{1}{8})=0.25

KL散度便是过错编码均匀长度和正确编码均匀长度的差异。

不能整除的比如

留意:你看,不能整除的情况下是算不出来的。

假设咱们现在有一条音讯皮卡皮卡,皮卡皮,皮卡丘

让咱们对这条音讯统计一下:

数量 5 4 1 2
份额 512\frac{5}{12} 412\frac{4}{12} 112\frac{1}{12} 212\frac{2}{12}

画个哈夫曼树:

两个视角给你解读 熵、交叉熵、KL散度

数量 5 4 2 1
份额 512\frac{5}{12} 412\frac{4}{12} 212\frac{2}{12} 112\frac{1}{12}
哈夫曼编码 0 11 101 100
编码长度 1 2 3 3

最短编码均匀长度:

5121+4122+2123+1123=1.83\frac{5}{12} \times 1 +\frac{4}{12} \times 2+\frac{2}{12} \times 3+\frac{1}{12} \times 3 = 1.83

上述编码的熵:

−512log⁡512−412log⁡412−212log⁡212−112log⁡112=1.78-\frac{5}{12} \times \log\frac{5}{12} -\frac{4}{12} \times \log\frac{4}{12}-\frac{2}{12} \times \log\frac{2}{12}-\frac{1}{12} \times \log\frac{1}{12} = 1.78

后边不算了。能够看到不能整除情况下由于一些差错是不相等的。