【深度学习】K-L 散度

K-L 散度


K-L 散度

K-L 散度在信息系统中称为相对熵,可以用来量化两种概率分布 P 和 Q 之间的差异,它是非对称性的度量。在概率学和统计学上,我们经常会使用一种更简单的、近似的分布来替代观察数据或太复杂的分布。K-L散度能帮助我们度量使用一个分布来近似另一个分布时所损失的信息量。一般情况下,P 表示数据的真实分布,Q 表示数据的理论分布,估计的模型分布或者 P 的近似分布。

K-L 散度定义

​ Note:KL 散度仅当概率 \(P\)\(Q\) 各自总和均为1,且对于任何 \(i\) 皆满足 \(Q(i)>0\)\(P(i)>0\) 时,才有定义。

​ 离散随机变量:
\[ D_{KL}(P||Q) = - \sum_i P(i) \ln \frac{Q(i)}{P(i)} = \sum_i P(i) \ln \frac{P(i)}{Q(i)} \]
​ 连续随机变量:
$$

$$

对比两种分布

​ 假设真实分布为 \(P\)\(P\) 的两个近似分布为 \(Q_1, Q_2\),对于这两个近似分布我们应该选择哪一个?K-L 散度可以解决这个问题:如果 \(D_{KL}(P||Q_1) < D_{KL}(P||Q_2)\),那么我们选择 \(Q_1\) 作为 \(P\) 的近似分布。

散度并非距离

​ 我们不能把 K-L 散度看作是两个分布之间距离的度量。首先距离度量需要满足对称性,但是 K-L 散度不具备对称性,即:
\[ D_{KL}(P||Q) \neq D_{KL}(Q||P) \]


Q1:信息熵,交叉熵,相对熵的区别是什么?

A1:(1)信息熵,即熵,是编码方案完美时的最短平均编码长度;(2)交叉熵,即 Cross Entropy,是编码方案不一定完美时(对概率分布的估计不一定正确)的平均编码长度,在神经网络中常用作损失函数;(3)相对熵,即 K-L 散度,是编码方案不一定完美时,平均编码长度相对于最短平均编码长度的增加值。

Q2:为什么在深度学习中使用 Cross Entropy 损失函数,而不是 K-L 散度?

A2:因为 K-L 散度 = 交叉熵 - 熵,即 \(D_{KL}(p||q) = H(p,q)-H(p)\),在神经网络所设计的范围内,\(H(p)\) 不变,则 \(D_{KL}(p||q)\) 等价于 \(H(p,q)\)


References:

​ [1] 如何理解K-L散度(相对熵)

​ [2] 相对熵——维基百科

你可能感兴趣的