相对熵(KL散度)计算过程
KL散度(Kullback-Leibler Divergence)也叫做相对熵,用于度量两个概率分布之间的差异程度。
KL散度(Kullback-Leibler Divergence)也叫做相对熵,用于度量两个概率分布之间的差异程度。
离散型
DKL(P∥Q)=∑i=1nPilog(PiQi) D_{KL}(P \parallel Q)= \sum_{i=1}^{n}P_i log(\frac{P_i}{Q_i}) DKL(P∥Q)=i=1∑nPilog(QiPi)
比如随机变量X∼PX \sim PX∼P取值为1,2,31,2,31,2,3时的概率分别为[0.2,0.4,0.4][0.2, 0.4, 0.4][0.2,0.4,0.4],随机变量Y∼QY \sim QY∼Q取值为1,2,31,2,31,2,3时的概率分别为[0.4,0.2,0.4][0.4, 0.2, 0.4][0.4,0.2,0.4],则:
D(P∥Q)=0.2×log(0.20.4)+0.4×log(0.40.2)+0.4×log(0.40.4)=0.2×−0.69+0.4×0.69+0.4×0=0.138 \begin{aligned} D(P \parallel Q) & =0.2 \times log(\frac{0.2}{0.4}) + 0.4 \times log(\frac{0.4}{0.2}) + 0.4 \times log(\frac{0.4}{0.4}) \\ & =0.2 \times -0.69 + 0.4 \times 0.69 + 0.4\times0 \\ & = 0.138 \end{aligned} D(P∥Q)=0.2×log(0.40.2)+0.4×log(0.20.4)+0.4×log(0.40.4)=0.2×−0.69+0.4×0.69+0.4×0=0.138
Python代码实现,离散型KL散度可通过SciPy进行计算:
from scipy import stats
P = [0.2, 0.4, 0.4]
Q = [0.4, 0.2, 0.4]
stats.entropy(P,Q) # 0.13862943611198905
P = [0.2, 0.4, 0.4]
Q = [0.5, 0.1, 0.4]
stats.entropy(P,Q) # 0.3712595980731252
P = [0.2, 0.4, 0.4]
Q = [0.3, 0.3, 0.4]
stats.entropy(P,Q) # 0.03397980735907956
KL散度的性质:
1、 DKL(P∥Q)≥0D_{KL}(P \parallel Q) \geq 0DKL(P∥Q)≥0,即非负性。
2、 DKL(P∥Q)≠DKL(Q∥P)D_{KL}(P \parallel Q) \ne D_{KL}(Q \parallel P)DKL(P∥Q)=DKL(Q∥P),即不对称性。
连续型
DKL(P∥Q)=∫−∞+∞p(x)logp(x)q(x)dx D_{KL}(P \parallel Q) =\int_{-\infty }^{+ \infty} p(x) log \frac{p(x)}{q(x)} dx DKL(P∥Q)=∫−∞+∞p(x)logq(x)p(x)dx
(没怎么用到,后面再补吧)
更多推荐


所有评论(0)