KL散度(Divergence)

一、信息量

首先我们要懂信息量的概念,任何一个事件都会承载一个信息量。当一件事情发生的概率很高时,他承载的信息量就越少,例如“1+1=2”这个事情我们是已知的,所以当别人告诉我们这件事时我们不能获取任何信息,即信息量为0,但是”中国足球世界杯夺冠”这件事给我们的信息量是巨大的,我们将离散型随机变量 X X X包含的信息量如下表示:

设 X X X是一个离散型随机变量,概率分布 P = p ( X = x i ) P=p(X=x_i) P=p(X=xi​),则定义事件 X = x i X=x_i X=xi​的信息量为: I ( x i ) = − l o g ( p ( x i ) ) I(x_i)=-log(p(x_i)) I(xi​)=−log(p(xi​))

二、信息熵

信息量是单个事件发生的情况下我们所获得的信息量,当然一个离散型随机变量 X X X包含不止一个事件,我们将其全部列出,得到所有可能发生的事件的信息量的期望,这个期望就是信息熵。数学表达如下所是:

假设 X X X是一个离散型随机变量,且有 n n n种可能性,发生 x i x_i xi​事件的概率为 p ( x i ) p(x_i) p(xi​),则 X X X的信息熵为: H ( X ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) H(X)=-\sum_{i=1}^{n}p(x_i)log(p(x_i)) H(X)=−∑i=1n​p(xi​)log(p(xi​))

特别的,对于二项分布的问题(0-1分布),信息熵的计算如下:

H ( X ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) = − p ( x ) l o g ( p ( x ) ) − ( 1 − p ( x ) ) l o g ( 1 − p ( x ) ) H(X)=-\sum_{i=1}^{n}p(x_i)log(p(x_i))=-p(x)log(p(x))-(1-p(x))log(1-p(x)) H(X)=−i=1∑n​p(xi​)log(p(xi​))=−p(x)log(p(x))−(1−p(x))log(1−p(x))

三、KL散度(相对熵)

D K L ( p ∣ ∣ q ) = ∑ i = 1 N [ p ( x i ) l o g p ( x i ) − p ( x i ) l o g q ( x i ) ] D_{KL}(p||q)=\sum_{i=1}^{N}[p(x_i)log{p(x_i)}-p(x_i)log{q(x_i)}] DKL​(p∣∣q)=i=1∑N​[p(xi​)logp(xi​)−p(xi​)logq(xi​)]

对于同一个随机变量 X X X,有两个单独的概率分布 P ( x )   a n d   Q ( x ) P(x) ~and ~Q(x) P(x) and Q(x),用KL散度来衡量这两个分布的差异。

通常情况下: P ( x ) P(x) P(x)表示真实分布, Q ( x ) Q(x) Q(x)表示模型所预测的分布,KL散度用来计算两个分布的差异,即 D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) D_{KL}(p||q)=\sum_{i=1}^{n}p(x_i)log(\frac{p(x_i)}{q(x_i)}) DKL​(p∣∣q)=∑i=1n​p(xi​)log(q(xi​)p(xi​)​),公式表示当 Q Q Q的分布越来越接近 P P P(即 Q Q Q的分布拟合 P P P)时,散度越小,损失值越小

KL散度不具有对称性,即分布 P P P到分布 Q Q Q的距离不等于分布 Q Q Q到分布 P P P的距离 D K L ( P ∣ ∣ Q ) ≠ D K L ( Q ∣ ∣ P ) D_{KL}(P||Q)\neq D_{KL}(Q||P) DKL​(P∣∣Q)​=DKL​(Q∣∣P)KL散度非负

KL非负证明:

要证: D K L ( p ∣ ∣ q ) = ∑ i = 1 N [ p ( x i ) l o g p ( x i ) − p ( x i ) l o g q ( x i ) ] ⩾ 0 D_{KL}(p||q)=\sum_{i=1}^{N}[p(x_i)log{p(x_i)}-p(x_i)log{q(x_i)}]\geqslant 0 DKL​(p∣∣q)=∑i=1N​[p(xi​)logp(xi​)−p(xi​)logq(xi​)]⩾0

即证: ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) ⩽ 0 \sum_{i=1}^{n}p(x_i)log(\frac{p(x_i)}{q(x_i)})\leqslant 0 ∑i=1n​p(xi​)log(q(xi​)p(xi​)​)⩽0

又: l n ( x ) ⩽ x − 1 ln(x)\leqslant x-1 ln(x)⩽x−1,当且仅当 x = 1 x=1 x=1时等号成立

故: ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) ⩽ ∑ i = 1 n p ( x i ) ( p ( x i ) q ( x i ) − 1 ) = ∑ i = 1 n [ p ( x i ) − q ( x i ) ] = 0 \sum_{i=1}^{n}p(x_i)log(\frac{p(x_i)}{q(x_i)})\leqslant \sum_{i=1}^{n}p(x_i)(\frac{p(x_i)}{q(x_i)}-1)=\sum_{i=1}^{n}[p(x_i)-q(x_i)]=0 ∑i=1n​p(xi​)log(q(xi​)p(xi​)​)⩽∑i=1n​p(xi​)(q(xi​)p(xi​)​−1)=∑i=1n​[p(xi​)−q(xi​)]=0

四、交叉熵

H ( p , q ) = H ( p ) + D K L ( p ∣ ∣ q ) = − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) H(p,q)=H(p)+D_{KL}(p||q)=-\sum_{i=1}^{n}p(x_i)log(q(x_i)) H(p,q)=H(p)+DKL​(p∣∣q)=−i=1∑n​p(xi​)log(q(xi​))

由于交叉熵和相对熵之间仅差了一个信息熵,而信息熵又是一个确定的值,因此可以直接用交叉熵作为Loss进行反向传播

上一篇:kubelet源码分析——关闭Pod


下一篇:KL算法