100天搞定機器學習 Day55 最大熵模型

2021-09-29 19:24:36 字數 4128 閱讀 7452

1、熵的定義

熵最早是乙個物理學概念,由克勞修斯於2023年提出,它是描述事物無序性的引數,跟熱力學第二定律的巨集觀方向性有關:在不加外力的情況下,總是往混亂狀態改變。熵增是宇宙的基本定律,自然的有序狀態會自發的逐步變為混沌狀態。2023年,夏農將熵的概念引申到通道通訊的過程中,從而開創了」資訊理論「這門學科。香農用「資訊熵」來描述隨機變數的不確定程度,也即資訊量的數學期望。關於資訊熵、條件熵、聯合熵、互資訊、相對熵、交叉熵藍字直達

2、最大熵模型這裡引用吳軍博士《數學之美》中關於最大熵的論述

最大熵原理指出,當我們需要對乙個隨機事件的概率分布進行**時,我們的**應當滿足全部已知的條件,而對未知的情況不要做任何主觀假設。在這種情況下,概率分布最均勻,**的風險最小。因為這時概率分布的資訊熵最大,所以人們稱這種模型叫「最大熵模型」

理解最大熵原理,最簡單的例子就是擲色子,當我們對這個色子一無所知時,我們一般會假定它每面朝上的概率是均等的,即各點出現的概率均為 1/6。這就保留了最大的不確定性,也就是說讓熵達到最大。當我們假定這個色子是韋小寶的,六點朝上的概率是 1/2,這樣其他面朝上的概率是多少呢?在無其他資訊情況下,其他面朝上的概率均為 1/10.在滿足已知條件前提下,如果沒有更多的資訊,則那些不確定部分都是「等可能的」。而等可能性通過熵最大化來刻畫。最大熵模型要解決的問題就是已知 x,計算 y 的概率,且盡可能讓 y 的概率最大。

由此,就可以引出最大熵模型的定義:

最大熵模型假設分類模型是乙個條件概率分布$p(y|x)$,x 為特徵,y 為輸出。給定乙個訓練集$,y^), (x^,y^), ... ,(x^,y^)}$,其中 x 為n維特徵向量,y 為類別輸出。我們的目標就是用最大熵模型選擇乙個最好的分類型別。在給定訓練集的情況下,我們可以得到總體聯合分布$p(x,y)$的經驗分布$overline(x,y)$,和邊緣分布$p(x)$的經驗分布$overline(x)$。$overline(x,y)$即為訓練集中 x,y 同時出現的次數除以樣本總數 m,$overline(x)$即為訓練集中 x 出現的次數除以樣本總數 m。用特徵函式$f(x,y)$描述輸入 x 和輸出 y 之間的關係。定義為:

$$f(x,y)=

begin

1& \

0& end$$

可以認為只要出現在訓練集**現的$(x^,y^)$,其$f(x^,y^) = 1$. 同乙個訓練樣本可以有多個約束特徵函式。特徵函式$f(x,y)$關於經驗分布$overline(x,y)$的期望值,用$e_}(f)$表示為: $$e}(f) = sumlimitsoverline(x,y)f(x,y)$$   特徵函式$f(x,y)$關於條件分布$p(y|x)$和經驗分布$overline(x)$的期望值,用$e_(f)$表示為:$$e(f) = sumlimitsoverline(x)p(y|x)f(x,y)$$如果模型可以從訓練集中學習,我們就可以假設這兩個期望相等。即:$$e}(f) = e(f)$$上式就是最大熵模型學習的約束條件,假如我們有 m 個特徵函式$f_i(x,y) (i=1,2...,m)$就有 m 個約束條件。可以理解為我們如果訓練集裡有 m 個樣本,就有和這 m 個樣本對應的 m 個約束條件。這樣我們就得到了最大熵模型的定義如下:假設滿足所有約束條件的模型集合為:$$e}(fi) = e(fi) (i=1,2,...m)$$定義在條件概率分布$p(y|x)$上的條件熵為:$$h(p) = -sumlimits_overline(x)p(y|x)logp(y|x)$$我們的目標是得到使$h(p)$最大的時候對應的$p(y|x)$,這裡可以對$h(p)$加了個負號求極小值,這樣做的目的是為了使$-h(p)$為凸函式,方便使用凸優化的方法來求極值。

最大熵模型的學習

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

$$beginmaxlimits}& h(p)=-sumtilde(x)p(y|x)log p(y|x)nonumber \4 ep(fk)=etilde(fk),k=1,2,cdots,knonumber \&& sum_yp(y|x)=1nonumberend$$

對應的最小化問題為:

$$begin&minlimits}& -h(p)=sumtilde(x)p(y|x)log p(y|x)nonumber \&s.t.& ep(fk)-etilde(fk)=0,k=1,2,cdots,knonumber \&& sum_yp(y|x)=1nonumberend$$

引入拉格朗日乘子$beta0,beta1,cdots,beta_k$,定義拉格朗日函式$l(p,beta)$

$$beginl(p,beta)&=& -h(p) beta0(1-sumyp(y|x)) sum^kbetak(etilde(fi)-ep(fi)) nonumber\&=&sumtilde(x)p(y|x)log p(y|x) beta0(1-sumyp(y|x))nonumber\& &sum^kbetak(sumlimitstilde(x,y)f(x,y)-sumlimits_tilde(x)p(y|x)f(x,y))nonumberend$$

將其解記作:$pbeta=argminlimits}l(p,beta)=p_beta(y|x)$

求$l(p,β)$對$p(y|x)$的偏導數為 0

$$beginfrac&=&sumtilde(x)(log p(y|x) 1)-sumybeta0-sum(tilde(x)sum^kbetakf_k(x,y)) nonumber\&=&sumtilde(x)biglog p(y|x) 1-beta0-sum^kbetakf_k(x,y)bignonumber\&=&0nonumberend$$

得:$$p(y|x)=exp(sumlimits^kbetakfk(x,y) beta0-1)=frac^kbetakfk(x,y))}$$

由$sum_yp(y|x)=1$所以

$$pbeta(y|x)=fracexp(sumlimits^kbetak f_k(x,y))$$

其中$zbeta(x)=sumlimitsyexp(sumlimits^kbetak f_k(x,y))$

當選定合適的特徵函式時,最大熵模型可以匯出多項邏輯模型,這個很顯然。但二者並不等價,最大熵可以選擇其他特徵函式。當選定合適的特徵函式時,最大熵模型可以匯出多項邏輯模型,這個很顯然。但二者並不等價,最大熵可以選擇其他特徵函式。記對偶函式為$psi(beta)=minlimits}l(p,beta)=l(pbeta,beta)$,接下來最大化$psi(beta)$得到其解$beta^*$.則最大熵模型為:

$$p^=p_(y|x)$$

可證明,對偶函式等價於條件概率分布$p(y|x)$的對數似然函式

$$ltilde(pbeta)=sumlimits_tilde(x,y)log p(y|x)$$

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

3.2 模型對比最大熵模型與lr模型的關係:最大熵模型和 lr 模型都屬於對數線性模型,lr 及最大熵模型學習一般採用極大似然估計,或正則化的極大似然估計。lr 及最大熵模型學習可以形式化為無約束最優化問題,求解時有改進的迭代尺度法、梯度下降法、擬牛頓法。邏輯回歸跟最大熵模型沒有本質區別。邏輯回歸是最大熵對應類別為二類時的特殊情況,也就是當邏輯回歸類別擴充套件到多類別時,就是最大熵模型。

最大熵模型與決策樹模型的關係:最大熵原理選取熵最大的模型,而決策樹的劃分目標選取熵最小的劃分。原因在於:

最大熵原理認為在滿足已知條件之後,選擇不確定性最大(即:不確定的部分是等可能的)的模型。也就是不應該再施加任何額外的約束。因此這是乙個求最大不確定性的過程,所以選擇熵最大的模型。

決策樹的劃分目標是為了通過不斷的劃分從而不斷的降低例項所屬的類的不確定性,最終給例項乙個合適的分類。因此這是乙個不確定性不斷減小的過程,所以選取熵最小的劃分。

3.4 關於最大熵和樸素貝葉斯的聯絡最大熵和樸素貝葉斯的聯絡兩者都使用了p(y|x),區別在於樸素貝葉斯使用先驗概率求解,最大熵利用最大化條件熵求解。

樸素貝葉斯傾向於從基本資訊中提取新的資訊,而最大熵將提取資訊的程度進行了量化(就好像強迫自己獲得概率一定是要均勻分布一樣)。

最大熵模型的 python 實現

這裡就不再貼**,網上有許多優秀的博主已經共享過了,這裡推薦大家看一下smirkcao

乙個具體的案例是 dod-o 用最大熵模型來做手寫數字識別,正確率 96.9%,執行時長:8.8h

參考文獻:李航《統計學習方法》6.2 最大熵模型統計學習/chapters/14_maxent.html

本文由部落格一文多發平台 openwrite 發布!

100天搞定機器學習

新增好友麻煩備註 github 100天搞定機器學習 day1資料預處理 100天搞定機器學習 day2簡單線性回歸分析 100天搞定機器學習 day3多元線性回歸 100天搞定機器學習 day4 6 邏輯回歸 100天搞定機器學習 day7 k nn 100天搞定機器學習 day8 邏輯回歸的數學...

100天搞定機器學習 Day7 K NN

機器學習100天 day1資料預處理 100天搞定機器學習 day2簡單線性回歸分析 100天搞定機器學習 day3多元線性回歸 100天搞定機器學習 day4 6 邏輯回歸 最近事情無比之多,換了工作 組隊參加了乙個比賽 和朋友搞了一些小專案,公號荒廢許久。堅持是多麼重要,又是多麼艱難,目前事情都...

100天搞定機器學習 Day11 實現KNN

機器學習100天 day1資料預處理 100天搞定機器學習 day2簡單線性回歸分析 100天搞定機器學習 day3多元線性回歸 100天搞定機器學習 day4 6 邏輯回歸 100天搞定機器學習 day7 k nn 100天搞定機器學習 day8 邏輯回歸的數學原理 100天搞定機器學習 day9...