最近需要比较两个集合的KL散度,特意翻了一下PRML中的相关章节,做个小结。如果不够的化还得翻information theory的书TAT
离散随机变量的信息量
首先从最简单的离散随机变量
X
∈
{
x
1
,
x
2
,
.
.
.
x
M
}
X\in\{x_1,x_2,...x_M\}
X∈{x1,x2,...xM}说起,假设
P
r
(
x
i
)
=
p
i
Pr(x_i)=p_i
Pr(xi)=pi,则有
∑
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(xi)必须得是
p
i
p_i
pi的单调减函数。另一方面对于两个独立事件
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)
Pr(x,y)应当是各自概率之积
P
r
(
x
)
P
r
(
y
)
Pr(x)Pr(y)
Pr(x)Pr(y),所以很自然有了定义:
h
(
x
)
=
−
l
o
g
2
P
r
(
x
)
h(x)=-log_2Pr(x)
h(x)=−log2Pr(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∑Pr(x)log2Pr(x)=−i∑pilog2pi
其中,由洛必答法则,
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
limpi→0∑ipilog2pi=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},\}
{21,41,81,161,641,641,641,641,},其熵是2bits。另一方面,通过霍夫曼编码得到的
{
1
,
01
,
001
,
0001
,
000011
,
000010
,
000001
,
000000
}
\{1,01,001,0001,000011,000010,000001,000000\}
{1,01,001,0001,000011,000010,000001,000000},其加权平均的编码长度正好是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∑pilnpi+λ(i∑pi−1)
∂
H
∂
p
i
=
−
l
n
p
i
−
1
+
λ
\dfrac{\partial H}{\partial p_i}=-lnp_i-1+\lambda
∂pi∂H=−lnpi−1+λ
令上式等于0,
p
i
=
e
λ
−
1
p_i=e^{\lambda-1}
pi=eλ−1是与
i
i
i无关的常数,则
p
i
=
1
M
p_i=\dfrac{1}{M}
pi=M1,其中
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}
∂pi∂pj∂2H=−Iijpi1
负定,确实是最大值。
连续随机变量的熵——微分熵
这里首先要确保我们对微积分有一点分析学上的认识(这里的图不错),然后当
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
∃xi∈[iΔ,(i+1)Δ], ∫iΔ(i+1)Δp(x)dx=p(xi)Δ
所以用上面的
x
i
x_i
xi等效区间
[
i
Δ
,
(
i
+
1
)
Δ
]
[i\Delta,(i+1)\Delta]
[iΔ,(i+1)Δ]内的所有
x
x
x(如果看了上面的链接还不明白为什么能等效的话,不妨看看微积分或数学分析教材中关于微分和积分的内容),则采样到
x
i
x_i
xi的概率是
p
(
x
i
)
Δ
p(x_i)\Delta
p(xi)Δ(=矩形面积=长
×
\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(xi)Δln(p(xi)Δ)=−i∑p(xi)Δln(p(xi))−lnΔ
忽略其中第二项
−
l
n
Δ
-ln\Delta
−lnΔ,然后求极限
Δ
→
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
Δ→0limi∑p(xi)Δln(p(xi))=−∫p(x)lnp(x)dx
我们把等号右边的部分称做连续变量的微分熵,其和离散变量的熵相差
−
l
n
Δ
-ln\Delta
−lnΔ。这一发散项说明:要全面获取一个连续随机变量的信息,需要大量的比特位。
同样可以由拉格朗日乘数法求得
X
X
X服从高斯分布时微分熵有最大值
1
2
[
1
+
l
n
(
2
π
σ
2
)
]
\dfrac{1}{2}[1+ln(2\pi\sigma^2)]
21[1+ln(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)dy
已知
x
x
x时,y所增加的额外信息量即
−
l
n
p
(
y
∣
x
)
-lnp(y|x)
−lnp(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]dx
=
−
∫
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)lnp(y∣x)dydx
=
−
∫
∫
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)lnp(y∣x)dxdy
−
∫
∫
p
(
x
,
y
)
l
n
p
(
y
∣
x
)
d
x
d
y
-\int\int p(x,y)lnp(y|x)dxdy
−∫∫p(x,y)lnp(y∣x)dxdy
描述了在已知随机变量
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
)
=
H
(
p
,
q
)
−
H
(
p
)
KL(p||q)=H(p,q)-H(p)
KL(p∣∣q)=H(p,q)−H(p)
=
∫
p
(
x
)
l
n
1
q
(
x
)
d
x
−
(
∫
p
(
x
)
l
n
1
p
(
x
)
d
x
)
=\int p(x)ln\dfrac{1}{q(x)}dx-(\int p(x)ln\dfrac{1}{p(x)}dx)
=∫p(x)lnq(x)1dx−(∫p(x)lnp(x)1dx)
=
∫
p
(
x
)
l
n
p
(
x
)
q
(
x
)
d
x
=\int p(x)ln\dfrac{p(x)}{q(x)}dx
=∫p(x)lnq(x)p(x)dx
由上面的定义可知,这里没有交换律:
K
L
(
p
∣
∣
q
)
≠
K
L
(
q
∣
∣
p
)
KL(p||q)\neq KL(q||p)
KL(p∣∣q)̸=KL(q∣∣p)