KL散度KL divergence

前置知识

高中数学:对数:高中数学基础——对数logarithm - :hammer_and_wrench:工具与编程 / 数学 - 始徒Beginner
初中数学:开根

正文

KL散度(Kullback-Leibler divergence,KL divergence)用来描述差异,比如人工智能中模型预测结果和真实结果的差异

离散概率公式

D_{KL}(P \parallel Q) = \sum_{i} P(i) \log \left( \frac{P(i)}{Q(i)} \right)

连续概率公式

D_{KL}(P \parallel Q) = \int P(x) \log \left( \frac{P(x)}{Q(x)} \right) dx

KL散度从哪来?

为了测量概率分布之间的距离
比如一个标准硬币,正面和反面的概率都是0.5

但此时你拿到一个有误差的硬币,它抛出正面的概率更高,如何判断误差有多大?直接比一下两个硬币抛出来正面的比例就行

现在我们手上有两个硬币,都有误差,我们怎么比较他们的误差有多大?还是一样,比较两者出现正面的比例,就可以判断误差有多大了

当然我们也可以换一种计算方法,为了投出一样的序列,比如这个序列

H(正、head)HHTHHTHHHTHT

一号硬币想投出这个序列的概率就是$p_1 \cdot p_1 \cdot p_2 \cdot p_1 \cdot p_1 \cdot p_2 \cdot p_1 \cdot p_1 \cdot p_1 \cdot p_2 \cdot p_1 \cdot p_1$
二号硬币是$q_1 \cdot q_1 \cdot q_2 \cdot q_1 \cdot q_1 \cdot q_2 \cdot q_1 \cdot q_1 \cdot q_1 \cdot q_2 \cdot q_1 \cdot q_2$


简化一下就是
一号硬币的概率是$p_1^{N_H} p_2^{N_T}$
二号硬币是$q_1^{N_H} q_2^{N_T}$

然后计算一下两者概率比,就是两者差异程度

接下来我们开始公式的转换,先变换一下形式,方便后续的转换

\left(\frac{p_1^{N_H} p_2^{N_T}}{q_1^{N_H} q_2^{N_T}}\right) = \log \left(\frac{p_1^{N_H} p_2^{N_T}}{q_1^{N_H} q_2^{N_T}}\right)^{\frac{1}{N}}

继续转换

\log \left(\frac{p_1^{N_H} p_2^{N_T}}{q_1^{N_H} q_2^{N_T}}\right)^{\frac{1}{N}} = \frac{1}{N} \log \left(\frac{p_1^{N_H} p_2^{N_T}}{q_1^{N_H} q_2^{N_T}}\right)

利用对数的性质将对数展开。这里使用了对数的幂规则 log(a^b) = b\times log(a)

\frac{1}{N} \log \left(\frac{p_1^{N_H} p_2^{N_T}}{q_1^{N_H} q_2^{N_T}}\right) = \frac{1}{N} \log p_1^{N_H} + \frac{1}{N} \log p_2^{N_T} - \frac{1}{N} \log q_1^{N_H} - \frac{1}{N} \log q_2^{N_T}

将公式$\frac{1}{N}替换为 \frac{N_H}{N}\frac{N_T}{N}$

\frac{1}{N} \log p_1^{N_H} + \frac{1}{N} \log p_2^{N_T} - \frac{1}{N} \log q_1^{N_H} - \frac{1}{N} \log q_2^{N_T} = \frac{N_H}{N} \log p_1 + \frac{N_T}{N} \log p_2 - \frac{N_H}{N} \log q_1 - \frac{N_T}{N} \log q_2

调整一下顺序

\frac{N_H}{N} \log p_1 + \frac{N_T}{N} \log p_2 - \frac{N_H}{N} \log q_1 - \frac{N_T}{N} \log q_2 = (\frac{N_H}{N} \log p_1 - \frac{N_H}{N} \log q_1)+ (\frac{N_T}{N} \log p_2 - \frac{N_T}{N} \log q_2)

最后就转化成了

(\frac{N_H}{N} \log p_1 - \frac{N_H}{N} \log q_1)+ (\frac{N_T}{N} \log p_2 - \frac{N_T}{N} \log q_2) = p_1 \log \frac{p_1}{q_1} + p_2 \log \frac{p_2}{q_2}

跟KL散度的离散变量公式是不是很像,只不过这里是两个硬币,如果是多个,就要用 \sum_{i}

D_{KL}(P \parallel Q) = \sum_{i} P(i) \log \left( \frac{P(i)}{Q(i)} \right)

补充

离散概率用于离散变量,比如血压分类
连续概率用于连续变量,比如血压值

参考

本篇内容主要来自 Intuitively Understanding the KL Divergence - YouTube