K-L散度

K-L散度,量化两种概率分布P和Q之间差异的方式,又叫相对熵。
如果数据的分布模型非常复杂,可以使用另外一种简单的、近似的分布来替代原模型,用K-L散度来很度量替代过程损失的信息量。

1、K-L散度的定义

KL散度计算方法 python k-l散度_概率分布

2、熵

最重要的信息度量单位:Entropy

KL散度计算方法 python k-l散度_KL散度计算方法 python_02


对数的底数取2的时候,可以把该等式的数值看作是编码信息所需要的最少二进制位个数bits。

如果有一个信息给我们,我们可以求解熵的数值获取这个信息数据最优编码方案的理论下界,也可以用于度量该信息的信息量。

3、信息损失

设p为观察得到的概率分布,q为另一分布来近似p,则p、q的K-L散度如下:

KL散度计算方法 python k-l散度_概率分布_03


当对数的底数取2,则K-L散度表示信息损失的二进制位数。

前半部分形式和熵计算公式基本一致,后半部分则有不同,故K-L散度不是简单的熵值相减

K-L散度的计算公式不符合对称性(距离度量应该满足对称性),故也不能理解为不同分布之间的距离

也就是说,用p近似q和用q近似p,二者所损失的信息并不是一样的。

另外:用一个新分布去度量原始分布,信息必定有损失,故K-L散度必定大于0,这里可以用Jensen不等式证明上面等式始终大于0。

DKL(Q||P) = -∑Q(x)log[P(x)/Q(x)] = E[-logP(x)/Q(x)] ≥ -logE[P(x)/Q(x)] = -log∑Q(x)P(x)/Q(x) = 0

4、优化模型

一般通过最小化K-L散度,优化等效模型
给出新的分布模型,该模型的参数向量作为输入量
可以通过计算给出一个最小化K-L散度的参数向量,就是新的分布模型参量

5、交叉熵

在神经网络中往往使用交叉熵损失函数,而不是相对熵?
后续学习补充……

6、应用于推荐系统

在使用LDA(Latent Dirichlet Allocation)计算物品的内容相似度时
先计算出物品在话题上的分布,然后利用两个物品的话题分布计算物品的相似度。
比如,如果两个物品的话题分布相似,则认为两个物品具有较高的相似度,反之则认为两个物品的相似度较低。计算分布的相似度可以利用KL散度来计算:KL散度越大说明分布的相似度越低。