天天看點

自然語言處理之一:最大熵模型

一直對自然語言進行中的各種模型一知半解。總是抓不住它們的思想。

今天看了一下這個“最大熵模型”(A  Maximum Entropy Approach to  Natural  Language  Processing),寫寫自己的想法吧。呵呵。

就像論文中所說的:希望找到一個最佳的uniform。也就是在模型的建立時,将所有已知的事實建入模型中,而對于未知的則盡量的使它們一緻。

比如我們目前隻知道的事實是某個随機變量取值的機率分布具有限制條件:

(1) P(A+B)=0.2,

(2) P(C+D+E+F)=0.8。

那麼我們在預測P(A),P(B),P(C),P(D),P(E),P(F)的各個值時,按照直覺應該對(A,B)和(C,D,E,F)平均配置設定機率。

P(A)=0.1;

P(B)=0.1;

P(C)=0.2;

P(D)=0.2;

P(E)=0.2;

P(F)=0.2。

那麼這樣的一種uniform應該在公式上面怎樣展現呢,文章随之就引入了最大熵的思想。

最大化條件熵:

H(p)=-∑{x,y}{~p(x)p(y|x)log p(y|x)}即能夠滿足我們所需要的uniform條件。

而我們的事實應該怎麼表達呢?

原文文章中的公式1,2,3的綜合給了我們他的表示方法。

《文本挖掘》中所寫的式子感覺更加容易了解。

p(f)=∑{x,y}p(x,y)f(x,y)=P(f)=∑{x,y}P(x,y)f(x,y)

在實際中由于不好計算真實的期望值,是以使用經驗值,隻在訓練樣本熵進行求和,則有:

pE(f)=∑{i=1...N}∑{y∈Y}p(y|xi)f(xi,y)/N=PE(f)=∑{i=1...N}f(xi,yi)/N

由于對于每個f都有一個公式,這組公式很像上面例子中給出的(1),(2)兩個公式。公式的右邊已知,而我們希望公式左邊的機率p(y|x)能夠服從這個限制條件。該公式可以了解為特征函數f生成的限制條件。在這個特征函數下的機率和滿足右邊式子的值。

其中引入了一個特征函數f(x,y)。這個特征函數的取值要麼為1,要麼為0。表示了我們希望考慮的一些條件,而我們不想考慮的條件則由于=0的原因而沒有考慮到等式中。是以被叫做特征函數,他表示我們感興趣的特征。

最大上模型的大概思想我感覺就是這個樣子了。當然,具體的尋找最優解的算法還是很複雜的。

繼續閱讀