KL散度(Kullback-Leibler Divergence)

KL散度(Kullback-Leibler Divergence)介绍及详细公式推导

 发表于 2019-05-22 |  更新于 2019-05-26 |  分类于 Deep Learning , Math |  阅读次数:

 本文字数: 11k |  阅读时长 ≈ 10 分钟

KL散度简介

KL散度的概念来源于概率论和信息论中。KL散度又被称为:相对熵、互熵、鉴别信息、Kullback熵、Kullback-Leible散度(即KL散度的简写)。在机器学习、深度学习领域中,KL散度被广泛运用于变分自编码器中(Variational AutoEncoder,简称VAE)、EM算法、GAN网络中。


KL散度定义

KL散度的定义是建立在熵(Entropy)的基础上的。此处以离散随机变量为例,先给出熵的定义,再给定KL散度定义。

若一个离散随机变量XX的可能取值为X={x1,x2,⋯,xn}X={x1,x2,⋯,xn},而对应的概率为pi=p(X=xi)pi=p(X=xi),则随机变量XX的熵定义为:

H(X)=−∑i=1np(xi)logp(xi)H(X)=−∑i=1np(xi)log⁡p(xi)

规定当p(xi)=0p(xi)=0时,p(xi)logp(xi)=0p(xi)log⁡p(xi)=0

若有两个随机变量P、QP、Q,且其概率分布分别为p(x)、q(x)p(x)、q(x),则pp相对qq的相对熵为:

DKL(p||q)=∑i=1np(x)logp(x)q(x)DKL(p||q)=∑i=1np(x)log⁡p(x)q(x)

之所以称之为相对熵,是因为其可以通过两随机变量的交叉熵(Cross-Entropy)以及信息熵推导得到:
针对上述离散变量的概率分布p(x)、q(x)p(x)、q(x)而言,其交叉熵定义为:

H(p,q)==∑xp(x)log1q(x)−∑xp(x)logq(x)H(p,q)=∑xp(x)log⁡1q(x)=−∑xp(x)log⁡q(x)

在信息论中,交叉熵可认为是对预测分布q(x)q(x)用真实分布p(x)p(x)来进行编码时所需要的信息量大小。

因此,KL散度或相对熵可通过下式得出:

DKL(p||q)====H(p,q)−H(p)−∑xp(x)logq(x)−∑x−p(x)logp(x)−∑xp(x)(logq(x)−logp(x))−∑xp(x)logq(x)p(x)DKL(p||q)=H(p,q)−H(p)=−∑xp(x)log⁡q(x)−∑x−p(x)log⁡p(x)=−∑xp(x)(log⁡q(x)−log⁡p(x))=−∑xp(x)log⁡q(x)p(x)


KL散度的数学性质

KL散度可以用来衡量两个分布之间的差异,其具有如下数学性质:

正定性

DKL(p||q)≥0DKL(p||q)≥0

可用Gibbs 不等式直接得出。先给出Gibbs不等式的内容:

若∑ni=1pi=∑ni=1qi=1∑i=1npi=∑i=1nqi=1,且pi,qi∈(0,1]pi,qi∈(0,1],则有:

−∑inpilogpi≤−∑inpilogqi−∑inpilog⁡pi≤−∑inpilog⁡qi

当且仅当pi=qi∀ipi=qi∀i等号成立。

Gibbs不等式的证明可见后文附录。

不对称性

KL散度并不是一个真正的度量或者距离,因为它不具有对称性:

D(p∥q)≠D(q∥p)D(p‖q)≠D(q‖p)

各种散度中,Jensen-Shannon divergence(JS散度)是对称的。

对KL散度不对称性的直观解释可见链接


从不同角度解读KL散度

统计学意义上的KL散度:

在统计学意义上来说,KL散度可以用来衡量两个分布之间的差异程度。若两者差异越小,KL散度越小,反之亦反。当两分布一致时,其KL散度为0。正是因为其可以衡量两个分布之间的差异,所以在VAE、EM、GAN中均有使用到KL散度。

信息论角度的KL散度:

KL散度在信息论中的专业术语为相对熵。其可理解为编码系统对信息进行编码时所需要的平均附加信息量。其中信息量的单位随着计算公式中loglog运算的底数而变化。

  • log底数为2:单位为比特(bit)
  • log底数为e:单位为奈特(nat)

若对从统计学角度直观解释KL散度感兴趣,可参阅以下文章:


连续随机变量的KL散度推导

服从一维高斯分布的随机变量KL散度

定义

假设 p 和 q 均是服从N (μ1,σ21)N (μ1,σ12)和N (μ2,σ22)N (μ2,σ22)的随机变量的概率密度函数 (probability density function) ,则从 q 到 p 的KL散度定义为:

DKL(p||q)==∫[log(p(x))−log(q(x))]p(x) dx∫[ p(x)log(p(x))−p(x)log(q(x))] dxDKL(p||q)=∫[log⁡(p(x))−log⁡(q(x))]p(x) dx=∫[ p(x)log⁡(p(x))−p(x)log⁡(q(x))] dx

已知正态分布的概率密度函数(probability density function)如下式:

p(x)=12π−−√σ1exp(−(x−μ1)22σ21)q(x)=12π−−√σ2exp(−(x−μ2)22σ22)p(x)=12πσ1exp⁡(−(x−μ1)22σ12)q(x)=12πσ2exp⁡(−(x−μ2)22σ22)

KL散度推导

根据KLKL散度公式可以将其分为两项进行计算,第一项∫p(x)log(p(x))dx∫p(x)log⁡(p(x))dx计算如下:

∫p(x)log(p(x))dx======∫p(x)log[12π−−√σ1exp(−(x−μ1)22σ21)]dx∫p(x)[log12π−−√σ1+logexp(−(x−μ1)22σ21)]dx−12log(2πσ21)+∫p(x)(−(x−μ1)22σ21)dx−12log(2πσ21)−∫p(x)x2dx−∫p(x)2xμ1dx+∫p(x)μ21dx2σ21−12log(2πσ21)−(μ21+σ21) −(2μ1×μ1) +μ212σ21−12[1+log(2πσ21)]∫p(x)log⁡(p(x))dx=∫p(x)log⁡[12πσ1exp(−(x−μ1)22σ12)]dx=∫p(x)[log⁡12πσ1+log⁡exp(−(x−μ1)22σ12)]dx=−12log⁡(2πσ12)+∫p(x)(−(x−μ1)22σ12)dx=−12log⁡(2πσ12)−∫p(x)x2dx−∫p(x)2xμ1dx+∫p(x)μ12dx2σ12=−12log⁡(2πσ12)−(μ12+σ12) −(2μ1×μ1) +μ122σ12=−12[1+log⁡(2πσ12)]

第二项可以同第一项按照类似的方式进行展开化简,如下:

∫p(x)log(q(x))dx======∫p(x)log[12π−−√σ2exp(−(x−μ2)22σ22)]dx∫p(x)[log12π−−√σ2+logexp(−(x−μ2)22σ22)]dx−12log(2πσ22)+∫p(x)(−(x−μ2)22σ22)dx−12log(2πσ22)−∫p(x)x2dx−∫p(x)2xμ2dx+∫p(x)μ22dx2σ22−12log(2πσ22)−(μ21+σ21) −(2μ2×μ1) +μ222σ22−12log(2πσ22)−σ21 +(μ1−μ2)22σ22∫p(x)log⁡(q(x))dx=∫p(x)log⁡[12πσ2exp(−(x−μ2)22σ22)]dx=∫p(x)[log⁡12πσ2+log⁡exp(−(x−μ2)22σ22)]dx=−12log⁡(2πσ22)+∫p(x)(−(x−μ2)22σ22)dx=−12log⁡(2πσ22)−∫p(x)x2dx−∫p(x)2xμ2dx+∫p(x)μ22dx2σ22=−12log⁡(2πσ22)−(μ12+σ12) −(2μ2×μ1) +μ222σ22=−12log⁡(2πσ22)−σ12 +(μ1−μ2)22σ22

所以可以简化KL散度公式如下:

KL(p,q)===∫[ p(x)log(p(x))−p(x)log(q(x))] dx−12[1+log(2πσ21)]−[−12log(2πσ22)−σ21 +(μ1−μ2)22σ22] logσ2σ1 +σ21 +(μ1−μ2)22σ22 −12KL(p,q)=∫[ p(x)log⁡(p(x))−p(x)log⁡(q(x))] dx=−12[1+log⁡(2πσ12)]−[−12log⁡(2πσ22)−σ12 +(μ1−μ2)22σ22]= log⁡σ2σ1 +σ12 +(μ1−μ2)22σ22 −12

服从多元高斯分布的随机变量KL散度

定义

其定义与一元高斯分布假设下一致,只是 p 和 q 服从的分布形式产生了改变:

p(x)∼N (μ1,Σ21)=1(2π)n/2|Σ1|1/2exp(−12(x−μ1)TΣ−11(x−μ1))p(x)∼N (μ1,Σ12)=1(2π)n/2|Σ1|1/2exp⁡(−12(x−μ1)TΣ1−1(x−μ1))

q(x)∼N (μ2,Σ22)=1(2π)n/2|Σ2|1/2exp(−12(x−μ2)TΣ−12(x−μ2))q(x)∼N (μ2,Σ22)=1(2π)n/2|Σ2|1/2exp⁡(−12(x−μ2)TΣ2−1(x−μ2))

其中:

μ1,μ2∈Rn×1μ1,μ2∈Rn×1

Σ1,Σ2∈Rn×nΣ1,Σ2∈Rn×n

KL散度推导

与一元高斯分布类似,可将DKL(p||q)DKL(p||q)分为两部分:

第一部分:

=====∫p(x)log(p(x))dx∫p(x)log[1(2π)n/2|Σ1|1/2exp(−12(x−μ1)TΣ−11(x−μ1))]dx∫p(x)[log1(2π)n/2|Σ1|1/2+logexp(−12(x−μ1)TΣ−11(x−μ1))]dxlog1(2π)n/2|Σ1|1/2+∫p(x)(−12(x−μ1)TΣ−11(x−μ1))dxlog1(2π)n/2|Σ1|1/2+Ep(x)[−12(x−μ1)TΣ−11(x−μ1)]log1(2π)n/2|Σ1|1/2−12Ep(x)[(x−μ1)TΣ−11(x−μ1)]∫p(x)log⁡(p(x))dx=∫p(x)log⁡[1(2π)n/2|Σ1|1/2exp(−12(x−μ1)TΣ1−1(x−μ1))]dx=∫p(x)[log⁡1(2π)n/2|Σ1|1/2+log⁡exp(−12(x−μ1)TΣ1−1(x−μ1))]dx=log⁡1(2π)n/2|Σ1|1/2+∫p(x)(−12(x−μ1)TΣ1−1(x−μ1))dx=log⁡1(2π)n/2|Σ1|1/2+Ep(x)[−12(x−μ1)TΣ1−1(x−μ1)]=log⁡1(2π)n/2|Σ1|1/2−12Ep(x)[(x−μ1)TΣ1−1(x−μ1)]

同理,第二部分可写为:

=∫p(x)log(q(x))dxlog1(2π)n/2|Σ2|1/2−12Ep(x)[(x−μ2)TΣ−12(x−μ2)]∫p(x)log⁡(q(x))dx=log⁡1(2π)n/2|Σ2|1/2−12Ep(x)[(x−μ2)TΣ2−1(x−μ2)]

因此可将服从多元高斯分布随机变量的KL散度写为:

DKL(p||q)=∫p(x)log(p(x))dx−∫p(x)log(q(x))dx=log(2π)n/2|Σ2|1/2(2π)n/2|Σ1|1/2−12Ep(x)[(x−μ1)TΣ−11(x−μ1)]+12Ep(x)[(x−μ2)TΣ−12(x−μ2)]=12log|Σ2||Σ1|+12Ep(x)[(x−μ2)TΣ−12(x−μ2)−(x−μ1)TΣ−11(x−μ1)]DKL(p||q)=∫p(x)log⁡(p(x))dx−∫p(x)log⁡(q(x))dx=log⁡(2π)n/2|Σ2|1/2(2π)n/2|Σ1|1/2−12Ep(x)[(x−μ1)TΣ1−1(x−μ1)]+12Ep(x)[(x−μ2)TΣ2−1(x−μ2)]=12log⁡|Σ2||Σ1|+12Ep(x)[(x−μ2)TΣ2−1(x−μ2)−(x−μ1)TΣ1−1(x−μ1)]

其中Ep(⋅)Ep(⋅)代表⋅⋅在概率密度函数p(x)p(x)的期望。此处需引入涉及多元变量的期望矩阵化求解方法。具体证明见后续附录,此处直接给出多元正态分布下期望矩阵化的表示结果:

E(xTAx)=tr(AΣ)+μTAμE(xTAx)=tr(AΣ)+μTAμ

因此:

DKL(p||q)=12log|Σ2||Σ1|+12Ep(x)[(x−μ2)TΣ−12(x−μ2)−(x−μ1)TΣ−11(x−μ1)]=12log|Σ2||Σ1|+12tr(Σ−12Σ1)+(μ1−μ2)TΣ−12(μ1−μ2)T−12tr(Σ−11Σ1)+(μ1−μ1)TΣ−12(μ1−μ1)T=12log|Σ2||Σ1|+12tr(Σ−12Σ1)+(μ1−μ2)TΣ−12(μ1−μ2)T−12nDKL(p||q)=12log⁡|Σ2||Σ1|+12Ep(x)[(x−μ2)TΣ2−1(x−μ2)−(x−μ1)TΣ1−1(x−μ1)]=12log⁡|Σ2||Σ1|+12tr(Σ2−1Σ1)+(μ1−μ2)TΣ2−1(μ1−μ2)T−12tr(Σ1−1Σ1)+(μ1−μ1)TΣ2−1(μ1−μ1)T=12log⁡|Σ2||Σ1|+12tr(Σ2−1Σ1)+(μ1−μ2)TΣ2−1(μ1−μ2)T−12n


附录

多元高斯分布下期望证明:

为证明多元高斯分布下,下式:

E(xTAx)=tr(AΣ)+μTAμE(xTAx)=tr(AΣ)+μTAμ

成立,需引入以下性质:

  • 矩阵的迹的性质:

    tr(αA+βB)tr(A)tr(AB)=αtr(A)+βtr(B)=tr(AT)=tr(BA)⇒tr(ABC)=tr(CAB)=tr(BCA)tr(αA+βB)=αtr(A)+βtr(B)tr(A)=tr(AT)tr(AB)=tr(BA)⇒tr(ABC)=tr(CAB)=tr(BCA)

若λ∈Rn×1λ∈Rn×1,即λλ为列向量时,则λTAλλTAλ为标量,存在以下性质:

λTAλ=tr(λTAλ)=tr(AλλT)λTAλ=tr(λTAλ)=tr(AλλT)

  • 多元高斯分布中均值μμ和方差ΣΣ的性质:

    • E[xxT]=Σ+μμTE[xxT]=Σ+μμT:

      证明:

    Σ∵(A−B)T=AT−BT∴∵x:随机变量μ:const∴=E[(x−μ)(x−μ)T]=E[(x−μ)(xT−μT)]=E[xxT−xμT−μxT−μμT]=E(xxT)−E(x)μT−μE(xT)−μμT=E(xxT)−μμTΣ=E[(x−μ)(x−μ)T]∵(A−B)T=AT−BT∴=E[(x−μ)(xT−μT)]=E[xxT−xμT−μxT−μμT]∵x:随机变量μ:const∴=E(xxT)−E(x)μT−μE(xT)−μμT=E(xxT)−μμT

    • E(xTAx)=tr(AΣ)+μTAμE(xTAx)=tr(AΣ)+μTAμ:

      证明:
      由于xTAxxTAx最终结果为标量,利用前述矩阵的迹的性质可有:

    E(xTAx)∵A=const∴∵E[xxT]=Σ+μμT∴∵μTAμ∈R∴=E[tr(xTAx)]=E[tr(AxxT)]=tr[E(AxxT)]=tr[AE(xxT)]=tr[A(Σ+uuT)]=tr(AΣ)+tr(AμμT)=tr(AΣ)+tr(μTAμ)=tr(AΣ)+μTAμE(xTAx)=E[tr(xTAx)]=E[tr(AxxT)]=tr[E(AxxT)]=tr[AE(xxT)]∵A=const∴=tr[A(Σ+uuT)]∵E[xxT]=Σ+μμT∴=tr(AΣ)+tr(AμμT)=tr(AΣ)+tr(μTAμ)∵μTAμ∈R∴=tr(AΣ)+μTAμ

Gibbs不等式的证明

Gibbs不等式的内容如下:

若∑ni=1pi=∑ni=1qi=1∑i=1npi=∑i=1nqi=1,且pi,qi∈(0,1]pi,qi∈(0,1],则有:

−∑inpilogpi≤−∑inpilogqi−∑inpilog⁡pi≤−∑inpilog⁡qi

当且仅当pi=qi∀ipi=qi∀i等号成立。

Gibbs不等式等价于下式:

0≥∑i=1npilogqi−∑i=1npilogpi=∑i=1npilogqipi=−DKL(P∥Q)0≥∑i=1npilog⁡qi−∑i=1npilog⁡pi=∑i=1npilog⁡qipi=−DKL(P‖Q)

以下证明∑ni=1pilog(qi/pi)≤0∑i=1npilog⁡(qi/pi)≤0:

法一:

已知ln(x)≤x−1ln(x)≤x−1,如下图所示:

ln(x) 与 x-1 的数学图像-w50

ln(x) 与 x-1 的数学图像-w50

由上图或者严格数学证明可知,当且仅当x=1x=1时ln(x)=x−1ln(x)=x−1,即等号成立。

法二:

根据Jensen不等式在凸积分中的命题:

若gg是任意实值可测函数,ϕϕ在gg的值域中是凸函数,则:

ϕ(∫+∞−∞g(x)f(x)dx)≤∫+∞−∞ϕ(g(x))f(x)dxϕ(∫−∞+∞g(x)f(x)dx)≤∫−∞+∞ϕ(g(x))f(x)dx

若g(x)=xg(x)=x,则上式可简化为一常用特例:

ϕ(∫+∞−∞xf(x)dx)≤∫+∞−∞ϕ(x)f(x)dxϕ(∫−∞+∞xf(x)dx)≤∫−∞+∞ϕ(x)f(x)dx

因此:

DKL(p∥q)=−∫p(x)logq(x)p(x)dx≥−log∫q(x)dx=0DKL(p‖q)=−∫p(x)log⁡q(x)p(x)dx≥−log⁡∫q(x)dx=0

其中DKL(p|q)DKL(p|q)与Jensen不等式有以下对应关系:

ϕ(x)=log(x)f(x)=p(x)ϕ(x)=log(x)f(x)=p(x)

由此得证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值