前置知识
高中数学:对数:高中数学基础——对数logarithm -
工具与编程 / 数学 - 始徒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