生活中我們經常聽到人們說“不要把雞蛋放到一個籃子裡”,這樣可以降低風險。深究一下,這是為什麼呢?其實,這裡邊包含了所謂的最大熵原理(The Maximum Entropy Principle)。
最大熵原理
在已知約束的情況下,我們建模時應該滿足這些約束,並且對其他條件作最複雜最一般的假設。這樣會得出更貼近於真實的結果。一般來說,這種假設就是最大熵原理。因為熵最大資訊量最大,不確定性最大。
最大熵原理認為,學習概率模型時,在所有可能的概率分佈模型中,熵最大的模型,為最好的模型。
最大熵模型
將最大熵原理應用於分類問題,我們便得到了最大熵模型。我們的目標便是:利用最大熵原理選擇一個最好的分類模型,即對於任意給定的輸入x∈X,可以以概率p(y|x)輸出y∈Y。
特徵函式
我們對於實際的特徵通常會採用特徵函式的方法將其量化成數,這樣我們才可以進行計算。我們通常採用二值定義的方式:
這樣我們便可以使用這個函式值來計算我們的經驗分佈
經驗分佈
我們首先要明確一點,我們的最大熵模型是未知目標分佈的。也就是說我們對於約束條件以外的分佈並不可知,所以我們才用最大熵來假設等概同分布。
那第一個條件概率分佈就已經是未知了,那還如何去計算後續的熵呢?要知道熵的計算公式都離不開概率。這時候我們就引入一個經驗分佈,就是將已經觀察的資料作為經驗,來模擬一下真實分佈。感覺和我們計算概率的方法很接近,但是從嚴格的數學意義上來說,這並不能代表真實資料的分佈情況,哪怕樣本足夠多。
有特徵函式作為資料的輸入源頭,我們計算經驗分佈: f(x,y) = 1的個數/總個數。,原計算公式為:
約束條件
如果我們選擇模型能夠獲取真實訓練集中的資訊,那麼我們便可以假設這兩個模型的期望值相等。這樣便有:
其中這兩個計算公式為:
當然這只是一個預設的約束條件,也就是最終選擇的目標模型一定需要滿足此條約束。但是不表示僅僅是這一條約束,我們對待實際問題需要區別處理。比如說我們我們已知骰子的1和6朝上概率為3/20,(假設骰子不均勻)那麼這就是一個額外的條件約束。
為了幫助大家理解約束條件,這裡還有比較完整詳細的約束條件幾何解釋:
熵的計算
這是我們所要優化的目標,熵。我們的目的就是要將模型的熵提高到最大,來將此模型作為我們最終使用的模型。 假設滿足所有約束條件的模型集合為:
我們將定義在概率分佈P(Y|X)上的條件熵定義為:對條件熵不太熟悉的朋友可以看維基百科中對於條件熵的描述。
最大熵模型的學習
最大熵模型的學習過程就是一個求解最大熵模型的過程。我們將此過程也可以簡化稱為一種約束最優化的過程,等價約束最優化問題如下:
我們首先按照一般習慣,將此求最大問題轉化為求最小問題。對原式取負就可以。 轉化之後的公式如下:
然後就開始求解此約束條件的最優化問題:
由於原始問題是凸問題,所以其對偶問題與原始問題同解,我們便著力求解其對偶問題。這裡我貼上《統計學習方法》裡面的解法,幫助大家理解: