幾個常用機器學習算法 - 最大熵模型

作者:xg123321123

出處:http://blog.csdn.net/xg123321123/article/details/54286514

聲明:版權所有,轉載請聯繫作者並註明出處

熵是隨機變量不確定性的度量,不確定性越大,熵值越大;若隨機變量退化成定值,熵爲0。
如果沒有外界干擾,隨機變量總是趨向於無序,在經過足夠時間的穩定演化,它應該能夠達到的最大程度的熵。
假設離散隨機變量X 的概率分佈是P(X) ,則其熵是

H(P)=xP(x)logP(x)

且熵滿足下列不等式:
0H(P)log|X|
其中|X|X 的取值個數,當且僅當X 的分佈是均勻分佈時右邊的等號成立,這就是說,當X 服從均勻分佈時,熵最大。

1 最大熵原理

爲了準確的估計隨機變量的狀態,我們一般習慣性最大化熵,認爲在所有可能的概率模型(分佈)的集合中,熵最大的模型是最好的模型。
換言之,在已知部分知識的前提下,關於未知分佈最合理的推斷就是符合已知知識最不確定或最隨機的推斷,其原則是承認已知事物(知識),且對未知事物不做任何假設,沒有任何偏見。

例如,投擲一個骰子,如果問”每個面朝上的概率分別是多少”,你會說是等概率,即各點出現的概率均爲1/6。因爲對這個”一無所知”的色子,什麼都不確定,而假定它每一個朝上概率均等則是最合理的做法。
從投資的角度來看,這是風險最小的做法,而從信息論的角度講,就是保留了最大的不確定性,也就是說讓熵達到最大。

所以,最大熵原理也可以表述爲在滿足約束條件的模型集合中選取熵最大的模型。

2 無偏原則

下面抄來一個有關最大熵模型的文章中都喜歡舉的例子。

例如,一篇文章中出現了“學習”這個詞,那這個詞是主語、謂語、還是賓語呢?換言之,已知“學習”可能是動詞,也可能是名詞,故“學習”可以被標爲主語、謂語、賓語、定語等等。

令x1表示“學習”被標爲名詞, x2表示“學習”被標爲動詞。
令y1表示“學習”被標爲主語, y2表示被標爲謂語, y3表示賓語, y4表示定語。

且這些概率值加起來的和必爲1,即:

p(x1)+p(x2)=1
p(y1)+p(y2)+p(y3)+p(y4)=1
則根據無偏原則,認爲這個分佈中取各個值的概率是相等的,故得到:

p(x1)=p(x2)=0.5
p(y1)=p(y2)=p(y3)=p(y4)=0.25
因爲沒有任何的先驗知識,所以這種判斷是合理的。如果有了一定的先驗知識呢?
即進一步,若已知:“學習”被標爲定語的可能性很小,只有0.05,即

p(y4)=0.05
剩下的依然根據無偏原則,可得:

p(x1)=p(x2)=0.5
p(y1)=p(y2)=p(y3)=0.953
再進一步,當“學習”被標作名詞x1的時候,它被標作謂語y2的概率爲0.95,即

p(y2|x1)=0.95
此時仍然需要堅持無偏見原則,使得概率分佈儘量平均。但怎麼樣才能得到儘量無偏見的分佈?

熵的理論中,在完全無約束狀態下,均勻分佈等價於熵最大(有約束的情況下,不一定是概率相等的均勻分佈。 比如,給定均值和方差,熵最大的分佈就變成了正態分佈 )。
於是,問題便轉化爲了:計算X和Y的分佈,使得H(Y|X)達到最大值,並且滿足下述條件:

p(x1)+p(x2)=1
p(y1)+p(y2)+p(y3)+p(y4)=1
p(y4)=0.05
p(y2|x1)=0.95
因此,也就引出了最大熵模型的本質,它要解決的問題就是已知X,計算Y的概率,且儘可能讓Y的概率最大(實踐中,X可能是某單詞的上下文信息,Y是該單詞翻譯成me,I,us、we的各自概率),從而根據已有信息,儘可能最準確的推測未知信息,這就是最大熵模型所要解決的問題。

相當於已知X,計算Y的最大可能的概率,轉換成公式,便是要最大化下述式子H(Y|X):

maxH(Y|X)={xx1,x2}{yy1,y2,y3,y4}p(x,y)log1p(y|x)
且滿足以下4個約束條件:

p(x1)+p(x2)=1
p(y1)+p(y2)+p(y3)+p(y4)=1
p(y4)=0.05
p(y2|x1)=0.95

3.2 最大熵模型的表示

有了目標函數跟約束條件,我們就能寫出最大熵模型的一般表達式了:

maxH(Y|X)pP=(x,y)p(x,y)log1p(y|x)

其中,P={p | p是X上滿足條件的概率分佈}
繼續闡述之前,先定義特徵、樣本和特徵函數。
特徵:(x,y)
  • y:這個特徵中需要確定的信息
  • x:這個特徵中的上下文信息

樣本:關於某個特徵(x,y)的樣本,特徵所描述的語法現象在標準集合裏的分佈:(xi,yi) 對,其中,yi 是y的一個實例,xiyi 的上下文。
對於一個特徵(x0,y0) ,定義特徵函數:

f(x,y)=(1:y=y0x=x00:)

特徵函數關於經驗分佈p¯(x,y) 在樣本中的期望值是:
p¯(f)=(xi,yi)p¯(x,y)f(x,y)
其中p¯(x)=xp¯(x,y)=xy

特徵函數關於模型P(Y|X)與經驗分佈P¯(X) 的期望值爲:

p(f)=(xi,yi)p(xi,yi)f(xi,yi)
=(xi,yi)p(yi|xi)p(xi)f(xi,yi)
=(xi,yi)p(yi|xi)p¯(xi)f(xi,yi)

如果能夠獲取訓練數據中的信息,那麼上述這兩個期望值相等,即:

p(f)=p¯(f)
將上式作爲模型學習的約束條件,假如有n個特徵函數fi(x,y) ,那麼就有n個約束條件。

從而得到最大熵模型的完整表述如下:

p^=argmaxpP(x,y)p(y|x)p¯(x)log1p(y|x)

其約束條件爲: 這裏寫圖片描述

也就是說,讓定義在條件概率分佈P(Y|X) 上的條件熵H(P) 最大的模型稱作最大熵模型,其中

H(P)=(x,y)p(y|x)p¯(x)logp(y|x)

3.3 最大熵模型的學習

上述問題已知若干條件,要求若干變量的值使到目標函數(熵)最大,其數學本質是最優化問題(Optimization Problem),其約束條件是線性的等式,而目標函數是非線性的,所以該問題屬於非線性規劃(線性約束)(non-linear programming with linear constraints)問題,故可通過引入拉格朗日函數將原有約束的最優化問題轉換爲無約束的最優化的對偶問題。

最大熵模型的學習等價於約束最優化問題:

maxpCH(P)=(x,y)p¯(x)p(y|x)logp(y|x)
其中,約束條件爲:
p(fi)=p¯(fi),i=1,2,...,n
yp(y|x)=1

按照最優化問題的習慣,將求最大值問題改寫爲等價的求最小值問題:
minpC(H(P))=(x,y)p¯(x)p(y|x)logp(y|x)
其中,約束條件爲:
p(fi)p¯(fi)=0,i=1,2,...,n
yp(y|x)=1

求解上面式子,得出的解,就是最大熵模型學習的解。

這裏,將約束最優化的原始問題轉換爲無約束最優化的對偶問題,通過求解對偶問題求解原始問題。

先引進拉格朗日乘子w0,w1,...,wn ,定義拉格朗日函數L(P,w) :

L(P,w)=H(P)+w01yp(y|x)+i=1nwi(p¯(fi)p(fi))
=x,yp¯(x)p(y|x)logp(y|x)+w01yp(y|x)+i=1nwix,yp¯(x,y)fi(x,y)x,yp¯(x)p(y|x)fi(x,y)

最優化的原始問題是

minpCmaxwL(P,w)
對偶問題是
maxwminpCL(P,w)

由於拉格朗日函數L(P,w) 是P的凸函數,原始問題的解與對偶問題的解是等價的

這樣一來,就可以通過求解對偶問題來求解原始問題:

首先,求解對偶問題內部的極小化問題minpCL(P,w)
minpCL(P,w)w 的函數,記爲

ψ(w)=minpCL(P,w)=L(Pw,w)

ψ(w) 就稱爲對偶函數,同時,將其解記爲
Pw=argminPCL(P,w)=pw(y|x)....(why?)

具體的,求L(P,w)P(y|x) 的偏導數
L(P,w)P(y|x)=x,yp¯(x)(logp(y|x)+1)yw0x,y(p¯(x)i=1nwifi(x,y))
=x,yp¯(x)(logp(y|x)+1w0i=1nwifi(x,y))
令偏導數等於0,在p¯(x)>0 的條件下,解得
p(y|x)=exp(i=1nwifi(x,y)+w01)
=exp(ni=1wifi(x,y))exp(1w0)

由於yP(y|x)=1 ,得
Pw(y|x)=exp(ni=1wifi(x,y))Zw(x)
其中
Zw(x)=yexp(i=1nwifi(x,y))
Zw(x) 就稱爲規劃化因子;而fi(x,y) 是特徵函數;wi 是特徵的權值

Pw=Pw(y|x) 就是最大熵模型,這裏w 是最大熵模型的參數向量

然後求解對偶問題外部的極大化問題

maxwψ(w)
將其解記爲w ,即
w=argmaxwψ(w)

在這裏,可以用最優化算法求對偶函數ψ(w) 的極大化,得到w ,用來表示PC

P=Pw=Pw(y|x) 就是學習到的最優模型(最大熵模型),亦即,最大熵模型的學習歸結爲對偶函數ψ(w) 的極大化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章