KL散度,交叉熵和编码之间的关系

·2454·6 分钟·
AI摘要: 本文介绍了KL散度与交叉熵的关系,指出信息量的期望为$-log(p)$,而熵是期望的和。通过KL散度衡量两个概率分布的差异,并解释了其非对称性和不对称性。进一步地,文章探讨了信息熵与编码之间的关系,以及如何利用香农编码定理来计算熵,从而导出平均编码长度的概念。最后,文章讨论了条件熵和极大似然估计在交叉熵损失函数中的应用,强调了交叉熵作为损失函数的另一种理解。

KL散度与交叉熵的关系

信息量log(p)-log(p), (这里的log是以e为底)。

信息量的的期望:i=1np(xi)log(1p(xi))\sum_{i = 1}^n p(x_i)log(\frac{1}{p(x_i)})

对于两个不同的概率分布,可以使用KL散度来衡量两个概率分布的差异:

DKL(pq)=i=1np(xi)log(p(xi)q(xi))=i=1np(xi)log(p(xi))i=1np(xi)log(q(xi))=[i=1np(xi)log(1q(xi))]i=1np(xi)log(1p(xi)) D_{KL}(p||q) = \sum_{i = 1}^n p(x_i) log\left( \frac{p(x_i)}{q(x_i)} \right)\\ = \sum_{i = 1}^n p(x_i) log(p(x_i)) - \sum_{i = 1}^n p(x_i) log(q(x_i))\\ = \left[ \sum_{i = 1}^n p(x_i) log(\frac{1}{q(x_i)}) \right] -\sum_{i = 1}^n p(x_i) log(\frac{1}{p(x_i)})

也就是说,KL散度 = 交叉熵 - 信息熵。 而信息熵在分布确定后就是个常数,所以优化交叉熵就等价于优化KL散度

注意,KL散度的非对称性,不能把KL散度看作是不同分布之间距离的度量,因为从KL散度的计算公式就可以看出它不符合对称性(距离度量应该满足对称性),即DKL(PQ)DKL(QP)D_{KL}(P||Q) \neq D_{KL}(Q||P)

TD-IDF算法就可以理解为相对熵的应用:词频在整个语料库的分布与词频在具体文档中分布之间的差异性

因此,如果要推导交叉熵损失函数,网络上常见的讲解是从对数几率回归来推导交叉熵损失函数,但是也可以从KL散度出发推导

信息熵和编码之间的关系

先说结论:信息熵 是信息量的期望 ,那么可以反映所需要编码的比特量

比如:一个随机变量X,一共只有四种状态(a, b, c, d),每种状态的概率是相同的(14\frac{1}{4}),那么信息熵就是 2,为了把 X 的值传给接收者,需要传输2比特的消息

如果上面的四个状态并不是均匀分布,比如说 (12,14,18,18)(\frac{1}{2}, \frac{1}{4},\frac{1}{8}, \frac{1}{8}) ,那么需要的信息熵为 1.75, 为了把 X 的值传给接收者,我们需要传输1.75比特的消息

暗藏一个数学规律:均匀分布的信息熵比非均匀分布的信息熵,所需要的编码的位数更多,需要更多的比特;

那么,对于非均匀分布,可以使用更短的码字来表述高概率事件,使用更长的码字来表述低概率事件

(和霍夫曼编码一个道理)

香农编码定理:熵是传输一个随机变量状态值所需的比特位下界(最短平均编码长度)

也就是说,给定一组信息的各个类别概率,能够轻易计算出熵,也就能直接得到最短平均编码长度

上述的讲解可以导出交叉熵作为损失函数的另外一种理解:

所谓优化损失函数,就是用函数的分布q(可计算) 去尽可能拟合真实分布p(未知)。

所谓交叉熵i=1nplog(1q)\sum_{i = 1}^n p log(\frac{1}{q}),指用分布 qq 来表示分布 pp平均编码长度

优化交叉熵等价于让函数去拟合真实分布

KL散度就是相对熵

p(x)q(x)p(x)、q(x) 是 离散随机变量 XX 中取值的两个概率分布,则 ppqq 的相对熵是:

DKL(pq)=xp(x)logp(x)q(x)=E{p(x)logp(x)q(x)} D_{KL}(p||q)=∑_xp(x) log \frac{p(x)}{q(x)}=E \{p(x)log \frac{p(x)}{q(x)} \}

性质:

  1. 如果 p(x)p(x)q(x)q(x) 两个分布相同,那么相对熵等于0

  2. DKL(pq)DKL(qp)D_{KL}(p||q)≠D_{KL}(q||p) ,相对熵具有不对称性。大家可以举个简单例子算一下。

  3. DKL(pq)0D_{KL}(p||q)≥0 证明如下(利用Jensen不等式)(非负性)

相对熵是指用 qq (非真实分布) 来表示分布 pp (真实分布) 额外需要的编码长度。

KL散度是用来度量使用基于 “q的编码” 来编码来自 “p的样本” 平均所需的额外的位元数

条件熵

条件熵 H(YX)H(Y|X) 表示在已知随机变量 XX 的条件下随机变量 YY 的不确定性。

条件熵 H(YX)H(Y|X) 定义为 XX 给定条件下 YY 的条件概率分布的熵对 XX 的数学期望:

极大似然估计角度

当然,交叉熵还有种从对数几率回归的角度的推导方式,说明交叉熵损失等价于对数几率回归的极大似然估计

然后,对数几率中分子分母当做概率只是人为加上去的意义。

具体推导见简单的交叉熵损失函数,你真的懂了吗? - 知乎

参考资料

损失函数:交叉熵详解

Kaggle学习赛初探