0. 前言#
我们有2个分布 P 和 Q, 如何比较二者之间的差异性? 在数理统计上, K-L 散度是一个常用的方法.
1. 定义#
1.1 离散版本#
For discrete probability distributions P and Q defined on the same sample space X .
DKL(P ∣∣ Q)=x∈X∑P(x) log(Q(x)P(x))which is equivalent to
DKL(P ∣∣ Q)=− x∈X∑P(x) log(P(x)Q(x))1.2 连续版本#
DKL(P ∣∣ Q)=∫x∈Xp(x) log(q(x)p(x)) dx
2. 理解#
2.1 公式上#
有人会把KL散度理解为一种”距离”,不过”距离”需要满足以下几个性质
证明
DKL(P ∣∣ Q)=− x∈X∑P(x) log(P(x)Q(x))>=− x∈X∑log(P(x) ∗ P(x)Q(x)) (凸函数:E(f(x))>=f(E(x)))=− x∈X∑log(Q(x))>=− log(x∈X∑Q(x)) (凸函数:Jensen不等式)=0
证明
DKL(P ∣∣ P)= x∈X∑P(x) log(P(x)P(x))=0DKL(P ∣∣ Q)DKL(Q ∣∣ P)= x∈X∑P(x) log(Q(x)P(x))== x∈X∑Q(x) log(P(x)Q(x))
一般来说不等, 所以对称性不满足
假设有 P Q R 三个分布, 探究
DKL(P ∣∣ R) 与 DKL(P ∣∣ Q) 、DKL(Q ∣∣ R) 的关系。
DKL(P ∣∣ R)= x∈X∑P(x) log(R(x)P(x))= x∈X∑P(x) log(R(x)P(x)∗Q(x)Q(x))= x∈X∑P(x) log(Q(x)P(x)∗R(x)Q(x))=DKL(P ∣∣ Q)+ x∈X∑P(x) log(R(x)Q(x))那就需要看后者
x∈X∑P(x) log(R(x)Q(x))与
DKL(Q ∣∣ R)之间的大小关系, 但是很遗憾, 二者大小无法判定. 因此有可能出现以下情况, 所以三角不等式不满足.
DKL(P ∣∣ R)>DKL(P ∣∣ Q)+DKL(Q ∣∣ R)NOTE因此称其为“距离”是不合适的, 充其量只能说其可以度量两个分布之间的差异性。
2.2 从熵的角度#
“熵”通常指的是香农熵(Shannon entropy). 原来是信息论里边的东西, 其公式大家很熟悉:
H(X)=x∈X∑P(x) log P(x)1NOTE如果你不知道这个公式为什么是这样, 而不是那样, 可以看我在 B站 发的视频 : https://www.bilibili.com/video/BV1kg411u7RP
然后来看以下推导:
I(X,Y)=DKL(p(x,y) ∣∣ p(x) × p(y))(定义)= x,y∑pxy log(px×pypxy)= x,y∑pxy log(pxpxy)− x,y∑pxy log py= x,y∑pxy log p(y∣x)− y∑ (x∑pxy) log py= x,y∑pxpy∣x log p(y∣x)− y∑ py log py= x∑px y∑py∣x log p(y∣x)− y∑ py log py=− x∑px H(y∣X=x)− y∑ py log py=−H(Y∣X)+H(Y)=H(Y)−H(Y∣X)其中, I(X,Y) 称为随机变量 X 与 Y 的互信息量,
H(Y ∣ X)
表示在已知随机变量X的情况下,Y的熵,也称条件熵.
假设 P=p(x,y),Q=p(x)∗p(y)
我们从 I(X,Y)=DKL(P ∣∣ Q)=H(Y)−H(Y∣X)
的角度来看, 当
I(X,Y)=0
就是想说
H(Y)−H(Y∣X)=0
NOTE表明已知信息 X , 仍然有 H(Y∥X)=H(Y), 即 X 对 Y 的熵降低无任何作用 <=> X 和 Y 独立 <=> P = Q
这样看来, minimize KL(P,Q) 就是想让二者从信息量上尽量的相近
3. 应用#
DKL(P ∣∣ Q)=x∈X∑P(x) log Q(x)P(x)=x∈X∑P(x) log P(x)−x∈X∑P(x) log Q(x)=−H(P)+x∈X∑P(x) log Q(x)1=−H(P)+H(P,Q)
这里 H(P,Q) 称为 分布 P 和 分布 Q 的交叉熵, 通常我们在机器学习或者深度学习中, 可以把 P 分布理解为真实的概率分布(未知,但是固定) , 因此 - H(P) 就是个常数 ; Q 为我们模型输出的概率分布, 所以可以通过
minimize H(P,Q)
去等价
minimize DKL(P ∣∣ Q)
. 即 交叉熵 损失函数.
Invalid admonition directive. (Admonition directives must be of block type ":::note{name="name"} <content> :::")
4. 补充#
KL divergence between two multivariate Gaussian distributions.
Probabilty density function of multivariate Normal distribution is given by:
p(x)=(2π)k/2∣Σ∣1/21exp(−21(x−μ)TΣ−1(x−μ))假设2个分布分别为 N(μp,Σp) 和 N(μq,Σq) , 其中 μ 为 k 维 列向量.
DKL(p∣∣q)=Ep[log(p)−log(q)]=Ep[21log∣Σp∣∣Σq∣−21(x−μp)TΣp−1(x−μp)+21(x−μq)TΣq−1(x−μq)]=21Ep[log∣Σp∣∣Σq∣]−21Ep[(x−μp)TΣp−1(x−μp)]+21Ep[(x−μq)TΣq−1(x−μq)]=21log∣Σp∣∣Σq∣−21Ep[(x−μp)TΣp−1(x−μp)]+21Ep[(x−μq)TΣq−1(x−μq)]其中
(x−μp)TΣp−1(x−μp)
是一个实数. 所以可以重新写为 :
tr{(x−μp)TΣp−1(x−μp)}其中 tr{} 表示 trace operator , 利用 trace trick (轮换性) , 可以将上式修改为:
tr{(x−μp)(x−μp)TΣp−1}于是第2项可修改为:
21Ep[tr{(x−μp)(x−μp)TΣp−1}]然后, 将 expectation 和 trace 交换位置, 且 Σp−1 是常数矩阵:
=21tr{Ep[(x−μp)(x−μp)TΣp−1]}=21tr{Ep[(x−μp)(x−μp)T]Σp−1}=21tr{ΣpΣp−1}=21tr{Ik}=2k而第3项(证明在最后) :
Ep[(x−μq)TΣq−1(x−μq)]=(μp−μq)TΣq−1(μp−μq)+tr{Σq−1Σp}于是:
DKL(p∣∣q)=21[log∣Σp∣∣Σq∣−k+(μp−μq)TΣq−1(μp−μq)+tr{Σq−1Σp}]当 q∼N(0,I) :
DKL(p∣∣q)=21[μpTμp+tr{Σp}−k−log∣Σp∣]
关于第3项的证明:
Ex∼p(x)[(x−μq)⊤Σq−1(x−μq)]=======Ex∼p(x)[Tr((x−μq)⊤Σq−1(x−μq))]Ex∼p(x)[Tr(Σq−1(x−μq)(x−μq)⊤)]Tr(Σq−1Ex∼p(x)[(x−μq)(x−μq)⊤])Tr(Σq−1Ex∼p(x)[xx⊤−μqx⊤−xμq⊤+μqμq⊤])Tr(Σq−1(Σp+μpμp⊤−μqμp⊤−μpμq⊤+μqμq⊤))Tr(Σq−1Σp+Σq−1(μp−μq)(μp−μq)⊤)Tr(Σq−1Σp)+(μp−μq)⊤Σq−1(μp−μq)注意到当 μq=μp,Σq=Σp, 上式就是 n , 对应正态分布的熵.