机器学习基础知识—KL 散度

1,301 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

今天将探讨一种比较两个概率分布的方法,称为 Kullback-Leibler 散度(通常简称为KL散度)。我们先给出公式

DKL(PQ)=iP(i)logP(i)Q(i)DKL(PQ)=P(x)logP(x)Q(x)dxD_{KL}(P||Q) = \sum_i P(i) \log \frac{P(i)}{Q(i)}\\ D_{KL}(P||Q) = \int P(x) \log \frac{P(x)}{Q(x)} dx\\

上面公式是看 Q(i)Q(i) 与目标 P(i)P(i) 概率的差距。对于KL散度具有非对称性和非负性。

对于投硬币的问题我们假设我们观察到的是在投掷了 N 次中,正面朝上的次数为 NHN_H,而背面朝上的次数为 NTN_T。假设有两个概率分布分别为 P (real coin)和 Q,其中 P 概率分布表示为 p1,p2p_1,p_2 这两概率表示在 P 概率分布中正面朝上的概率为 p1p_1 而背面朝上的概率为 p2p_2。而预测概率分布为 Q(coin1),其中 分布中正面朝上的概率为 q1q_1 而背面朝上的概率为 q2q_2

P(Observationsrealcoin)=p1NHp2NTP(Observationscoin1)=q1NHq2NTP(Observations|real\,coin) = p_1^{N_H}p_2^{N_T}\\ P(Observations|coin1 ) = q_1^{N_H}q_2^{N_T}\\

分别用概率分布 P 和概率分布 Q 前提,看到 N 次中,正面朝上的次数为 NHN_H,而背面朝上的次数为 NTN_T观察值,也就是似然。

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

上面对其比值进行正则化,也就是取 1N\frac{1}{N} 后取 log

NHNlogp1+NTNlogp2NHNlogq1NTNlogq2q1logp1+q1logp2q1logp1q2logp2q1q1logp1q1+q2logp2q2=iqipiqi\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\\ q_1 \log p_1 + q_1 \log p_2 - q_1 \log p_1 - q_2 \log p_2\\ q_1\\ q_1 \log \frac{p_1}{q_1} + q_2 \log \frac{p_2}{q_2}\\ =\sum_i q_i \frac{p_i}{q_i}

这就是整个推导过程。