版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tfcy694/article/details/84780785
最近需要比较两个集合的KL散度,特意翻了一下PRML中的相关章节,做个小结。如果不够的化还得翻information theory的书TAT
离散随机变量的信息量
首先从最简单的离散随机变量
X
∈
{
x
1
,
x
2
,
.
.
.
x
M
}
X\in\{x_1,x_2,...x_M\}
X ∈ { x 1 , x 2 , . . . x M } 说起,假设
P
r
(
x
i
)
=
p
i
Pr(x_i)=p_i
P r ( x i ) = p i ,则有
∑
i
=
1
\sum_i=1
∑ i = 1 。如果我们采样到了
X
X
X 的一个具体值
x
x
x ,考虑到我们关心的是
X
X
X 及其分布
p
p
p ,而不是某次观测到的具体的
x
x
x ,所以我们肯定要问,这个观测值给我们提供了多少(关于
X
X
X (或
p
p
p )的)信息?PRML用“degree of surprise”来描述这个信息量
h
(
x
)
h(x)
h ( x ) 。这怎么理解呢? 我们举个极端的例子:太阳已经东升西落了上亿年,但是我们假设其升落方向其实是一个随机变量。那么有一天太阳从北方升起来了,这次采样的信息量就远远大于采样到从东方升起,同时“degree of surprise”也更大。我们不妨换一个角度,也可以把信息量看作此次采样对于我们认识真实分布
p
p
p 的帮助程度(或有用程度),采到概率越小的点,越有助于我们认识整体分布。 由上直觉可知
h
(
x
i
)
h(x_i)
h ( x i ) 必须得是
p
i
p_i
p i 的单调减函数。另一方面对于两个独立事件
x
,
y
x,y
x , y ,他们总的信息量
h
(
x
,
y
)
h(x,y)
h ( x , y ) 应当是各自信息量之和
h
(
x
)
+
h
(
y
)
h(x)+h(y)
h ( x ) + h ( y ) ,而总的概率
P
r
(
x
,
y
)
Pr(x,y)
P r ( x , y ) 应当是各自概率之积
P
r
(
x
)
P
r
(
y
)
Pr(x)Pr(y)
P r ( x ) P r ( y ) ,所以很自然有了定义:
h
(
x
)
=
−
l
o
g
2
P
r
(
x
)
h(x)=-log_2Pr(x)
h ( x ) = − l o g 2 P r ( x ) 这里底数的选择比较灵活,如果以2为底,则信息量的单位是bit;如果以
e
e
e 为底,单位则是nat。
h
(
x
)
h(x)
h ( x ) 也正好具有非负的特性。
离散随机变量的平均信息量——熵
信息量描述的对象是一次采样样本,推广到统计意义上,便有了平均信息量的概念——随机变量
X
X
X 的熵:
H
[
X
]
=
−
∑
x
P
r
(
x
)
l
o
g
2
P
r
(
x
)
=
−
∑
i
p
i
l
o
g
2
p
i
H[X]=-\sum_xPr(x)log_2Pr(x)=-\sum_ip_ilog_2p_i
H [ X ] = − x ∑ P r ( x ) l o g 2 P r ( x ) = − i ∑ p i l o g 2 p i 其中,由洛必答法则,
l
i
m
p
i
→
0
∑
i
p
i
l
o
g
2
p
i
=
0
lim_{p_i\rarr0}\sum_ip_ilog_2p_i=0
l i m p i → 0 ∑ i p i l o g 2 p i = 0 PRML中给了个例子:对于一个包含8状态
{
a
,
b
,
c
,
d
,
e
,
f
,
g
,
h
}
\{a,b,c,d,e,f,g,h\}
{ a , b , c , d , e , f , g , h } 的随机变量,出现概率分别是
{
1
2
,
1
4
,
1
8
,
1
16
,
1
64
,
1
64
,
1
64
,
1
64
,
}
\{\dfrac{1}{2},\dfrac{1}{4},\dfrac{1}{8},\dfrac{1}{16},\dfrac{1}{64},\dfrac{1}{64},\dfrac{1}{64},\dfrac{1}{64},\}
{ 2 1 , 4 1 , 8 1 , 1 6 1 , 6 4 1 , 6 4 1 , 6 4 1 , 6 4 1 , } ,其熵是2bits。另一方面,通过霍夫曼编码得到的
{
1
,
01
,
001
,
0001
,
000011
,
000010
,
000001
,
000000
}
\{1,01,001,0001,000011,000010,000001,000000\}
{ 1 , 0 1 , 0 0 1 , 0 0 0 1 , 0 0 0 0 1 1 , 0 0 0 0 1 0 , 0 0 0 0 0 1 , 0 0 0 0 0 0 } ,其加权平均的编码长度正好是2bits:)事实上香侬证明过了,熵是传输一个随机变量状态所需的的比特位的下界。 还有一个结论是,随机变量的分布越均匀,其熵就越大;随机变量的分布越集中在某个状态,其熵就越小。直观理解,分布越集中,混乱程度越小、平均信息量越小,熵自然也就越小。从数学的角度,拉格朗日乘子法也可以求解这个最优化问题:(为了易于计算,以下取底数为
e
e
e )
H
=
−
∑
i
p
i
l
n
p
i
+
λ
(
∑
i
p
i
−
1
)
H=-\sum_ip_ilnp_i+\lambda(\sum_ip_i-1)
H = − i ∑ p i l n p i + λ ( i ∑ p i − 1 )
∂
H
∂
p
i
=
−
l
n
p
i
−
1
+
λ
\dfrac{\partial H}{\partial p_i}=-lnp_i-1+\lambda
∂ p i ∂ H = − l n p i − 1 + λ 令上式等于0,
p
i
=
e
λ
−
1
p_i=e^{\lambda-1}
p i = e λ − 1 是与
i
i
i 无关的常数,则
p
i
=
1
M
p_i=\dfrac{1}{M}
p i = M 1 ,其中
M
M
M 为状态总数。带入求解Hessen矩阵:
∂
2
H
∂
p
i
∂
p
j
=
−
I
i
j
1
p
i
\dfrac{\partial^2H}{\partial p_i\partial p_j}=-I_{ij}\dfrac{1}{p_i}
∂ p i ∂ p j ∂ 2 H = − I i j p i 1 负定,确实是最大值。
连续随机变量的熵——微分熵
这里首先要确保我们对微积分有一点分析学上的认识(这里 的图不错),然后当
p
(
x
)
p(x)
p ( x ) 连续,以宽度
Δ
\Delta
Δ 划分定义域,则
∃
x
i
∈
[
i
Δ
,
(
i
+
1
)
Δ
]
,
∫
i
Δ
(
i
+
1
)
Δ
p
(
x
)
d
x
=
p
(
x
i
)
Δ
\exist x_i\in[i\Delta,(i+1)\Delta],\ \int_{i\Delta}^{(i+1)\Delta}p(x)dx=p(x_i)\Delta
∃ x i ∈ [ i Δ , ( i + 1 ) Δ ] , ∫ i Δ ( i + 1 ) Δ p ( x ) d x = p ( x i ) Δ 所以用上面的
x
i
x_i
x i 等效区间
[
i
Δ
,
(
i
+
1
)
Δ
]
[i\Delta,(i+1)\Delta]
[ i Δ , ( i + 1 ) Δ ] 内的所有
x
x
x (如果看了上面的链接还不明白为什么能等效的话,不妨看看微积分或数学分析教材中关于微分和积分的内容),则采样到
x
i
x_i
x i 的概率是
p
(
x
i
)
Δ
p(x_i)\Delta
p ( x i ) Δ (=矩形面积=长
×
\times
× 宽),这样我们把连续变量离散化,并用离散变量的处理方法求熵
H
Δ
=
−
∑
i
p
(
x
i
)
Δ
l
n
(
p
(
x
i
)
Δ
)
=
−
∑
i
p
(
x
i
)
Δ
l
n
(
p
(
x
i
)
)
−
l
n
Δ
H_\Delta=-\sum_ip(x_i)\Delta ln(p(x_i)\Delta)=-\sum_ip(x_i)\Delta ln(p(x_i))-ln\Delta
H Δ = − i ∑ p ( x i ) Δ l n ( p ( x i ) Δ ) = − i ∑ p ( x i ) Δ l n ( p ( x i ) ) − l n Δ 忽略其中第二项
−
l
n
Δ
-ln\Delta
− l n Δ ,然后求极限
Δ
→
0
\Delta\rarr0
Δ → 0 ,则根据微积分的定义
lim
Δ
→
0
∑
i
p
(
x
i
)
Δ
l
n
(
p
(
x
i
)
)
=
−
∫
p
(
x
)
l
n
p
(
x
)
d
x
\lim_{\Delta\rarr0}\sum_ip(x_i)\Delta ln(p(x_i))=-\int p(x)lnp(x)dx
Δ → 0 lim i ∑ p ( x i ) Δ l n ( p ( x i ) ) = − ∫ p ( x ) l n p ( x ) d x 我们把等号右边的部分称做连续变量的微分熵 ,其和离散变量的熵相差
−
l
n
Δ
-ln\Delta
− l n Δ 。这一发散项说明:要全面获取一个连续随机变量的信息,需要大量的比特位。 同样可以由拉格朗日乘数法求得
X
X
X 服从高斯分布时微分熵有最大值
1
2
[
1
+
l
n
(
2
π
σ
2
)
]
\dfrac{1}{2}[1+ln(2\pi\sigma^2)]
2 1 [ 1 + l n ( 2 π σ 2 ) ] ,这个值是可以取负的。
条件熵
假设我们有联合分布
p
(
x
,
y
)
p(x,y)
p ( x , y ) ,我们从中采样得到
(
x
,
y
)
(x,y)
( x , y ) ,则边缘分布
p
(
x
)
=
∫
p
(
x
,
y
)
d
y
p(x)=\int p(x,y)dy
p ( x ) = ∫ p ( x , y ) d y 已知
x
x
x 时,y所增加的额外信息量即
−
l
n
p
(
y
∣
x
)
-lnp(y|x)
− l n p ( y ∣ x ) ,在概率分布下的平均信息量即条件熵 :
H
[
Y
∣
X
]
=
∫
p
(
x
)
H
[
Y
∣
X
=
x
]
d
x
H[Y|X]=\int p(x)H[Y|X=x]dx
H [ Y ∣ X ] = ∫ p ( x ) H [ Y ∣ X = x ] d x
=
−
∫
p
(
x
)
∫
p
(
y
∣
x
)
l
n
p
(
y
∣
x
)
d
y
d
x
=-\int p(x)\int p(y|x)lnp(y|x)dydx
= − ∫ p ( x ) ∫ p ( y ∣ x ) l n p ( y ∣ x ) d y d x
=
−
∫
∫
p
(
x
)
p
(
y
∣
x
)
l
n
p
(
y
∣
x
)
d
x
d
y
=-\int\int p(x)p(y|x)lnp(y|x)dxdy
= − ∫ ∫ p ( x ) p ( y ∣ x ) l n p ( y ∣ x ) d x d y
−
∫
∫
p
(
x
,
y
)
l
n
p
(
y
∣
x
)
d
x
d
y
-\int\int p(x,y)lnp(y|x)dxdy
− ∫ ∫ p ( x , y ) l n p ( y ∣ x ) d x d y 描述了在已知随机变量
X
X
X 的条件下随机变量
Y
Y
Y 的不确定性。 容易知道,
H
[
X
,
Y
]
=
H
[
Y
∣
X
]
+
H
[
X
]
H[X,Y]=H[Y|X]+H[X]
H [ X , Y ] = H [ Y ∣ X ] + H [ X ]
相对熵(KL散度)
下面要把上面的概念拓展到模式识别领域去。假设我们要对一个真实分布
p
(
x
)
p(x)
p ( x ) 建模,获得了
q
(
x
)
q(x)
q ( x ) 。由上文可知,
q
(
x
)
q(x)
q ( x ) 必然携带了比
p
(
x
)
p(x)
p ( x ) 更加多的信息量(因为
p
(
x
)
p(x)
p ( x ) 是最优的),这个多出来的信息量即
相
对
熵
相对熵
相 对 熵 (KL散度、KL距离):
K
L
(
p
∣
∣
q
)
=
−
∫
p
(
x
)
l
n
q
(
x
)
d
x
−
(
−
∫
p
(
x
)
l
n
p
(
x
)
d
x
)
KL(p||q)=-\int p(x)lnq(x)dx-(-\int p(x)lnp(x)dx)
K L ( p ∣ ∣ q ) = − ∫ p ( x ) l n q ( x ) d x − ( − ∫ p ( x ) l n p ( x ) d x )
=
−
∫
p
(
x
)
l
n
q
(
x
)
p
(
x
)
d
x
=-\int p(x)ln\dfrac{q(x)}{p(x)}dx
= − ∫ p ( x ) l n p ( x ) q ( x ) d x 由上面的定义可知,这里没有交换律:
K
L
(
p
∣
∣
q
)
≠
K
L
(
q
∣
∣
p
)
KL(p||q)\neq KL(q||p)
K L ( p ∣ ∣ q ) ̸ = K L ( q ∣ ∣ p )