Attention!
我的Dr.Sure项目正式上线了,主旨在分享学习Tensorflow以及DeepLearning中的一些想法。期间随时更新我的论文心得以及想法。
Github地址:https://github.com/wangqingbaidu/Dr.Sure
CSDN地址:http://blog.csdn.net/wangqingbaidu
个人博客地址:http://www.wangqingbaidu.cn/
KL散度
相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence),信息增益(information gain)。
KL散度是两个概率分布P和Q差别的非对称性的度量。
KL散度是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的比特个数。 典型情况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布,或P的近似分布。
熵的定义:
H(x)=∑x∈XP(x)log(1P(x))
H
(
x
)
=
∑
x
∈
X
P
(
x
)
l
o
g
(
1
P
(
x
)
)
KL散度用来衡量两个分布之间的距离:
DKL(Q|P)=∑x∈XQ(x)log(1P(x))−∑x∈XQ(x)log(1Q(x))
D
K
L
(
Q
|
P
)
=
∑
x
∈
X
Q
(
x
)
l
o
g
(
1
P
(
x
)
)
−
∑
x
∈
X
Q
(
x
)
l
o
g
(
1
Q
(
x
)
)
性质
- 不对称性,KL散度可以看成是一种距离度量的方式,所以她并不具备对称性,即
D{Q|P}≠D{P|Q}
。 非负性。即KL散度的值一定是非负的。
证明一:
利用对数和不等式或者延森不等式
D(Q|P)=∑x∈XQ(x)log(1P(x))−∑x∈XQ(x)log(1Q(x))=−∑x∈XQ(x)log(P(x)Q(x)) D ( Q | P ) = ∑ x ∈ X Q ( x ) l o g ( 1 P ( x ) ) − ∑ x ∈ X Q ( x ) l o g ( 1 Q ( x ) ) = − ∑ x ∈ X Q ( x ) l o g ( P ( x ) Q ( x ) )D(Q|P)=−E(logP(x)Q(x))≥−logE(P(x)Q(x))=−log∑x∈XQ(x)P(x)Q(x) D ( Q | P ) = − E ( l o g P ( x ) Q ( x ) ) ≥ − l o g E ( P ( x ) Q ( x ) ) = − l o g ∑ x ∈ X Q ( x ) P ( x ) Q ( x )由于
∑x∈XP(x)=1 ∑ x ∈ X P ( x ) = 1所以
D(Q|P)≥0 D ( Q | P ) ≥ 0证明二:
已知
ln(x)≤x−1ifx≤1 l n ( x ) ≤ x − 1 i f x ≤ 1D(Q|P)=−∑x∈XQ(x)log(P(x)Q(x))≥−∑x∈XQ(x)(P(x)Q(x)−1)=0 D ( Q | P ) = − ∑ x ∈ X Q ( x ) l o g ( P ( x ) Q ( x ) ) ≥ − ∑ x ∈ X Q ( x ) ( P ( x ) Q ( x ) − 1 ) = 0
tips: 注意负号。
应用
- 神经网络中,存在多个并行的网络,而最后又希望并行网络输出的结果再一个相同或者相近的分布事,使用KL散度作为一个监督信息。
- 不同的信息源在映射到一个相同的语义空间的时候,可以引入KL散度,用来度量这两个映射的空间处于一个相同的分布。