1. 程式人生 > >最大熵原理

最大熵原理

相關數學知識:
1、拉格朗日乘子法
2、拉格朗日對偶性
3、凸函式
4、Jensen 不等式
5、經驗分佈
---

參考資料1:皮果提的文章《最大熵學習筆記》系列

https://blog.csdn.net/itplus/article/details/26550597

其他參考資料:

李航·統計學習方法筆記·第6章 logistic regression與最大熵模型(2)·最大熵模型
https://blog.csdn.net/tina_ttl/article/details/53542004

2、條件熵定義的最原始形式要記住

\[ H(Y|X)=\sum_{x\in X} p(x)H(Y|X=x) \]

或者寫成這樣

\[ H(Y|X)=\sum_{i=1}^{n} p(x_i)H(Y|X=x_i) \]

這裡又假設隨機變數 \(Y\)\(m\) 個取值,將 \(H(Y|X=x_i)\) 用定義式 \(H(Y|X=x_i) = - \sum_{j=1}^{m} p(y_j|X=x_i)\log p(y_j|X=x_i)\) 代入上式,得

\[ H(Y|X)=\sum_{i=1}^{n} p(x_i)H(Y|X=x_i) = \sum_{i=1}^{n} p(x_i)\left(- \sum_{j=1}^{m} p(y_j|X=x_i) \log p(y_j|X=x_i)\right)=-\sum_{i=1}^{n}p(x_i) \sum_{j=1}^{m} p(y_j|x_i) \log p(y_j|x_i) \]


\[ H(Y|X)=\sum_{i=1}^{n} p(x_i)H(Y|X=x_i) =-\sum_{i=1}^{n}p(x_i) \sum_{j=1}^{m} p(y_j|x_i) \log p(y_j|x_i) \]

  • 條件熵表示在已知隨機變數 \(X\) 的條件下,\(Y\)條件概率分佈的熵對隨機變數 \(X\)的數學期望。
  • 熵是數學期望(資訊量的數學期望),條件熵也是數學期望,是數學期望的數學期望,有點拗口,不妨把定義多看幾遍,就清楚了。

3、最大熵原理的理解

  • 這裡討論的分類模型是概率模型,區別於決策函式模型;
  • 最大熵原理的字面理解:在(滿足約束條件的)所有可能的概率模型中(在概率空間裡),找熵最大(最不確定,最隨機)的概率模型,認為是最好的概率模型;

  • 已知的資訊,我們在建模的時候,寫成了約束的樣子,除了已知的知識以外,其餘的資訊不能做任何假設,即做“等概率”處理,“等概論”即“熵最大”;
  • “熵最大”是什麼“熵”呢?上面介紹的“條件熵”,即 \(H(Y|X)\) 最大。

    4、最大熵模型的理解

  • 利用最大熵原理選擇一個最好的分類模型,這個分類模型輸入一個 \(x\) 可以得到關於輸出 \(y\) 的條件概率 \(p(y|x)\) ,取最大,作為最終的分類預測的結果;
  • 這些分類模型中,在滿足已知資訊的前提下(作為約束),條件熵最大的模型就是最好的分類模型;
  • 下面這一點不好理解:輸入 \(x\) 和輸出 \(y\) 之間的關係,使用特徵函式 \(f(x, y)\) 來表示,可以想象 \(x\) 取某個值的時候,\(y\) 就有一個值與之對應,這正是輸入變數和輸出變數的關係,用特徵函式來刻畫。
  • 經驗分佈:通過在訓練資料集進行統計得到的分佈。我們需要計算的是(1)聯合概率分佈(2)邊緣分佈,只要是經驗分佈,我們在表示概率的時候,都在上面加上“一彎”進行區別。

\[ \sum_{x,y}\widetilde P(x,y)f(x,y) = \sum_{x,y}P(x,y)f(x,y) \]

  • 左邊 \(E_{\widetilde P}(f) = \sum_{x,y}\widetilde P(x,y)f(x,y)\) 表示特徵函式 \(f(x,y)\) 在訓練資料集上關於經驗分佈 \(\widetilde P(x,y)\) 的數學期望
  • 右邊 \(E_{P}(f) =\sum_{x,y}P(x,y)f(x,y)\) 表示特徵函式 \(f(x,y)\) 在模型上關於理論分佈 \(P(x,y)\) 的數學期望

如果模型能夠獲取訓練資料中的資訊,那麼就可以假設這兩個期望值相等。

\(P(x,y)\) 未知,\(P(y|x)\) 為所求,又有 \(P(x,y)=P(x)P(y|x)\)\(P(x)\) 也未知,但是可以用 \(\widetilde P(x)\) 代替,這樣就有:

\[ \sum_{x,y}\widetilde P(x,y)f(x,y) = \sum_{x,y}\widetilde P(x)P(y|x)f(x,y) \]
這就是模型的約束條件。

有多少個特徵函式,就有多少個約束條件。

於是最大熵模型就成為:

  • 目標函式:條件熵(希望取得最大值);
  • 約束條件1:有多少個特徵函式,就有多少個約束條件
  • 約束條件2:條件概率之和為 1。
    使用拉格朗日乘子法(再次用到),引入拉格朗日乘子,寫出拉格朗日函式。
    接下來利用拉格朗日對偶性,求解對偶問題
    即:原始問題是 $ \min_p \max_w$ 的,對偶問題是 \(\max_w \min_p\) 的。

最大熵模型的學習可以歸結為對偶函式的極大化問題。

對偶函式的極大化等價於最大熵模型的極大似然估計。


(自己在學習的時候記下的筆記)

  • 分類問題的本質是求條件概率,迴歸的本質是求決策函式,最大熵模型用於分類問題,就是求條件熵,最大熵模型的基本假設就是,在滿足約束條件的情況下,條件熵最大的模型就是最好的模型,正如一個著名的投資理念“雞蛋不要放在一個籃子裡”;

  • 目標函式是條件熵最大,即條件概率的期望最大。約束條件是聯合分佈的期望相等(有多少個特徵函式,就有多少個等式,另外,條件概率之和為 1)。

  • 最大熵模型小結(來自劉建平)
    最大熵模型在分類方法裡算是比較優的模型,但是由於它的約束函式的數目一般來說會隨著樣本量的增大而增大,導致樣本量很大的時候,對偶函式優化求解的迭代過程非常慢,scikit-learn 甚至都沒有最大熵模型對應的類庫。但是理解它仍然很有意義,尤其是它和很多分類方法都有千絲萬縷的聯絡。
    慣例,我們總結下最大熵模型作為分類方法的優缺點:
    最大熵模型的優點有:
    (1)最大熵統計模型獲得的是所有滿足約束條件的模型中條件熵極大的模型,作為經典的分類模型時準確率較高。
    (2)可以靈活地設定約束條件,通過約束條件的多少可以調節模型對未知資料的適應度和對已知資料的擬合程度
  • 最大熵模型的缺點有:
    (1)由於約束函式數量和樣本數目有關係,導致迭代過程計算量巨大,實際應用比較難。
    參考資料:https://www.cnblogs.com/pinard/p/6093948.html
    最大熵模型採用了和 SVM 一樣的套路,即拉格朗日數乘法。
    (將一個有約束的最優化問題,轉換成一個無約束的最優化問題,並且)(https://www.matongxue.com/madocs/939.html

1、最大熵原理是概率模型學習的一個準則;
2、最大熵原理認為:要選擇的概率模型首先必須滿足已經有的事實(即約束條件),在沒有更多資訊的情況下,那些不確定的部分都是“等可能的”。
3、最大熵原理通過條件熵的最大化來表示等可能性
4、最大熵模型表示的是對於給定的輸入 \(X\),以條件概率 \(P(Y|X)\) 輸出 \(Y\);給定一個訓練資料集,學習的目標是利用最大熵模型選擇最好的分類模型
5、公式的推導:
從訓練資料集可以得到:

(1)聯合分佈 \(P(Y|X)\) 的經驗分佈:\(\widetilde P(X=x,Y=y) = \frac{v(X=x,Y=y)}{N}\)
(2)邊緣分佈 \(P(X)\) 的經驗分佈:\(\widetilde P(X=x) = \frac{v(X=x)}{N}\)

其中 $v(X=x,Y=y) $ 表示訓練樣本中 \((x,y)\) 出現的頻數;\(v(X=x)\) 表示訓練資料集中輸入 \(x\) 出現的頻數,\(N\) 表示訓練樣本容量。

(3)特徵函式 $
f(x,y)=\begin{cases}
1, & x 與 y 滿足某一事實 \
0, & 否則 \
\end{cases}
$

(4)特徵函式 \(f(x,y)\) 關於經驗分佈(訓練資料集的分佈)$\widetilde P(X,Y) $ 的期望值:
\[ E_{\widetilde P}(f) = \sum_{x,y}\widetilde P(x,y)f(x,y) \]

(5)特徵函式 \(f(x,y)\) 關於模型 \(P(Y|X)\) 與經驗分佈 $\widetilde P(X) $ 的期望值:

\[ E_{P}(f) =\sum_{x,y} \widetilde P(x)P(y|x)f(x,y) \]

如果模型能夠獲取從訓練資料集中的資訊,那麼就可以假設這兩個期望值相等。

\[ E_{P}(f) = E_{\widetilde P}(f) \]
即:
\[ \sum_{x,y} \widetilde P(x)P(y|x)f(x,y) = \sum_{x,y}\widetilde P(x,y)f(x,y) \]

上面的兩個等式作為條件概率的最大熵的約束條件。如果有 \(n\) 個特徵函式,那麼就有 \(n\) 個約束條件。

聯合熵:兩個變數 \(X\)\(Y\) 的聯合熵的表示式:

\[ H(X,Y) = -\sum_{i=1}^{n}p(x_i,y_i) \log p(x_i,y_i) \]

條件熵:條件熵類似於條件概率,它度量了我們的 \(Y\) 在知道了 \(X\) 以後剩下的不確定性:

\[ H(Y|X) = -\sum_{i=1}^{n}p(x_i,y_i) \log p(y_i|x_i) = \sum_{j=1}^{n}H(y|x_j) \]

《統計學習方法》這本書 P61上是這樣敘述的:
設有隨機變數 \((X,Y)\),其聯合概率分佈為:
\[ P(X = x_i,Y=y_j) = p_{ij},i=1,2,\cdots,n;j=1,2,\cdots,m \]

條件熵 \(H{Y|X}\) 表示在已知隨機變數 \(X\) 的條件下隨機變數 \(Y\) 的不確定性。
隨機變數 \(X\) 給定的條件下 \(Y\) 的條件熵 \(H(Y|X)\) ,定義為 \(X\) 給定的條件下 \(Y\) 的條件概率分佈的熵對 \(Y\) 的數學期望:
\[ H(Y|X) = -\sum_{i=1}^{n}p_i H(Y|X=x_i) \]

這裡 \(p_i = P(X=x_i),i=1,2,\cdots,n\)
熵與條件熵之差稱之為互資訊。

(理解條件熵:條件熵即按一個新的變數的每個值對原變數進行分類,比如《統計學習方法》中將是否同意貸款按照申請人是否有自己的房子分為兩類。然後在每一個小類裡面,都計算熵,然後每一個熵乘以各個類別的概率,然後求和。我們用另一個變數對原變數分類後,原變數的不確定性就會減小了,因為新增了 \(Y\) 的資訊。不確定程度減少了多少就是資訊的增益。)

用下面這個圖很容易明白他們的關係。左邊的橢圓代表 \(H(X)\),右邊的橢圓代表 \(H(Y)\),中間重合的部分就是我們的互資訊或者資訊增益 \(I(X,Y)\), 左邊的橢圓去掉重合部分就是 \(H(X|Y)\),右邊的橢圓去掉重合部分就是 \(H(Y|X)\)。兩個橢圓的並就是 \(H(X,Y)\)

image.png

資訊增益:\(g(D,A) = H(D) - H(D,A)\)也叫互資訊
關於熵的一些等式:
(1)條件熵的定義:\(H(Y|X) = H(X,Y)-H(X)\)
(2)\(H(Y|X) = H(Y)-I(X,Y)\) 即 $I(X,Y)= H(Y)-H(Y|X) \(; (3)對偶式:\)H(X|Y) = H(X)-I(X,Y)$ 即 $H(X|Y)= H(X)-I(X,Y) \(; (4)\)I(X,Y) = H(X) + H(Y) - H(X,Y)$
(5)一個性質:\(H(X|Y) \le H(X),H(Y|X)\le H(Y)\)

經驗條件熵如何計算:\(H(D|A)\)

\[ \begin{equation}\begin{split} H(D|A) &= -\sum_{i,k}p(D_k,A_i)\log p(D_k,A_i) \\ &= -\sum_{i,k}p(A_i)p(D_k|A_i)\log p(D_k,A_i)【這一步把 p(D_k|A_i) 化開】\\ &= -\sum_{i=1}^{n}\sum_{k=1}^{K} p(A_i)p(D_k,A_i) \log p(D_k,A_i) \\ &= -\sum_{i=1}^{n} p(A_i) \sum_{k=1}^{K} p(D_k|A_i) \log p(D_k|A_i) \\ &= -\sum_{i=1}^{n} \frac{|D_i|}{|D|}\sum_{k=1}^{K} \frac{|D_{ik}|}{|D_i|} \log \frac{|D_{ik}|}{|D_i|} \end{split}\end{equation} \]

分清楚是對於某個特徵的所有取值的熵(條件熵,是個期望),還是對於某個熵的某個取值的熵。

\[ \begin{equation}\begin{split} H(Y|X) &= -\sum_{x \in X}H(Y|X=x) \\ &= -\sum_{x \in X} p(x) \sum_{y \in Y} p(y|x) \log p(y|x) \\ &= -\sum_{x \in X} \sum_{y \in Y} p(x,y) \log p(y|x) \end{split}\end{equation} \]

\[ H(Y|X=x) = -\sum_{y \in Y} P(y|x) \log P(y|x) \]

關於各種熵的參考資料:https://zhuanlan.zhihu.com/p/35423404