本文主要是介绍PRML1.6 信息论简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近需要比较两个集合的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)
这篇关于PRML1.6 信息论简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!