1. 程式人生 > >邏輯斯諦迴歸與最大熵模型-《統計學習方法》學習筆記

邏輯斯諦迴歸與最大熵模型-《統計學習方法》學習筆記

 0. 概述:

Logistic迴歸是統計學中的經典分類方法,最大熵是概率模型學習的一個準則,將其推廣到分類問題得到最大熵模型,logistic迴歸模型與最大熵模型都是對數線性模型。

本文第一部分主要講什麼是logistic(邏輯斯諦)迴歸模型,以及模型的引數估計,使用的是極大對數似然估計以及梯度下降法,第二部分介紹什麼是最大熵模型,首先介紹最大熵原理, 然後根據最大熵原理推出最大熵模型,在求解最大熵模型時候,要引入拉格朗日對偶性(在下一篇文章中)的講解,將最大熵模型的學習歸結為對偶函式的極大化,隨後我們證明得對偶函式的極大化等價於最大熵模型的極大似然估計。那麼這樣的話邏輯斯諦迴歸模型和最大熵模型的學習歸結為以似然函式為目標的最優化問題。最後提出模型學習的方法:IIS(改進的迭代尺度演算法)(

還有其他的方法,梯度下降法,牛頓和擬牛頓法)。

1.邏輯斯諦迴歸模型

在介紹logistic迴歸模型之前,首先簡單的講解一下線性迴歸模型,這樣引入邏輯斯諦會比較容易一些。線上性迴歸模型中,給定的資料集合D = {(x1, y1), (x2, y2),,…(xm,ym)},其中xi為輸入的特徵,yi為輸出,線性迴歸試圖學得一個線性模型以儘可能的準確的預測實值輸出標記。即線性迴歸試圖學得:

通過衡量h(x)y之間的差別來確定wb。使用的方法是試圖讓均方誤差最小,即:


基於均方誤差的最小化求解模型的方法稱為“最小二乘法”.

下面正式開始介紹logistic迴歸,線上性迴歸的基礎上我們考慮二分類問題,也就是說其輸出y的取值為0或者是1。而前面提到的線性模型的輸出值為實值,於是我們要想辦法把線性模型的輸出值轉化為0/1值,為此我們引入logistic函式:

將線性模型的輸出作為logistic函式的輸入則得到:

經過變換可以得到:

若將y視為x為正例的可能性,則1-y是其為反例的可能性,兩者的比值y/(1 - y)稱為機率,反應的是x為正例的相對可能性,對機率取對數則得到的對數機率ln y / (1 −y),由此可以看出(2)式實際上是在使用線性迴歸模型的預測結果去逼近真實標記的對數機率,因此該模型稱為“對數機率模型”(logisticre  gression)。或者也可以認為logisticre gression就是被sigmoid函式(形狀為S型的模型)歸一化後的線性模型。

2 模型引數的估計:極大似然估計

若將y視作p(y = 1 | x),

也就是x等於1的概率,則由公式(2)可得:

進一步可得:

那麼每一個觀察到的樣本出現的概率為:

(解釋一下上面的這個式子,可以看到當y=1時,後面的一項為1(指數為0),那麼得到的是y=1的概率(只剩下前面的一項);同樣的當y=0的時候,前面的一項為0, 那麼得到的是y=0的概率,所以其始終得到的是在給定的x的條件下得到y的概率,或者說是(x,y)出現的概率)。

此時可以得到似然函式如下:

 

對其取對數得到對數似然函式為:(簡單介紹下極大似然估計的原理, 就是要讓我們收集到的樣本的概率最大,也就是要讓上式的值最大).

這樣問題就變成了以對數似然函式為目標函式的最優化問題,通常採用梯度下降或者擬牛頓法求取引數。

(3).資訊理論中關於熵的基礎知識

在介紹最大熵之前,首先簡單的介紹下資訊理論中的熵的有關的基礎的知識。

熵是隨機變數的不確定性的度量,一個隨機變數X的熵H(X)定義為:


我們知道,如果X服從p(x),則隨機變數g(X)的期望可記為Eg(x) = ∑g(x)p(x),那麼當g(X)= -log(p(X))時候,X的熵可以解釋為變數-log(p(X))的期望值,也就是自資訊的期望值。其中自資訊是指事件自身所包含的資訊,定義為概率的負對數。

直觀解釋:

  熵描述事物的不確定性,或者說事物的資訊量。當我們不知道事物的具體狀態卻知道其所有的可能性時,顯然可能性越多,不確定性越大,被獲知時得到的資訊量越大。反之,當事物是確定的,其資訊量為0.假設有Xp(x),對於隨機變數的某一個狀態x_i,其所包含的資訊量由它的不確定性決定,設x_i發生的概率p(x_i),那麼他的自資訊量可以表示為-log(P(x_i)),另外需要考慮的是,不同的狀態發生的概率不同,則資訊量也不同,所以自資訊不可以用來表徵信源的不確定性。而要使用平均自資訊量來表徵整個信源的資訊量。

(更容易的關於熵的理解,摘自http://hutby.blog.163.com/blog/static/1343673122014320229941/)

熵是資訊理論與編碼理論的中心概念。至於條件熵以及互資訊都是某種意義上的熵。對於熵的理解是最根本的。幾乎所有的資訊理論教材無一列外的提到熵是刻畫資訊的多少或者不確定性的。這當然也沒有什麼問題,但是卻立即讓人如墮五里霧中,不知熵到底是什麼意義。只要稍微鑽一下牛角尖,刻畫資訊或者不確定性為什麼非要用這種形式不可呢?在這些書上就難以找到好的答案了。實際上這些定義可以直接從對數的定義得到很清晰的解釋。而不需要繞一個圈子從什麼資訊量、不確定性的角度。刻畫資訊量或者不確定性可以作為某種解說,但不是最根本最清晰的解說。假定熵的定義公式中對數都是以2為底,那麼一個字元序列的熵就是用二進位制程式碼來表示這個字元序列的每個字的最少的平均長度,也就是平均每個字最少要用幾個二進位制程式碼。這種說法才是熵的本質意義所在。所以熵這個概念天然地和編碼聯絡在一起,而不是單純的為了刻畫什麼資訊量或者不確定度之類不著邊際的概念。熵就是用來刻畫編碼的程度或者效率的。

對於一個離散的隨機變數X,取值為{x_1,x_2,…x_n}相應的概率為{p_1,p_2,…,p_n}。熵的定義為H(X)=Sum_{i}p_i*log(1/p_i)。在引入比較細緻一點的書中,一般會先介紹一個概率事件[X=x_1]的資訊量定義為log(1/p_1)=-log(p_1)。一般的書會用小的概率事件含有很大的資訊量,大的概率事件含有較少的資訊量來解說這個定義。在Shannon的[1]文中還用公理化的方法推導了這個形式。然而這些都掩蓋了這種定義內涵的直觀含義。實際上這些定義可以直接從對數的定義得到很清晰的解釋。為確定起見,這裡假定公式中出現的對數(log)都是以2為底的。從對數的定義可以知道log(N)可以理解為用二進位制來表示N大約需要多少位。比如log(7)=2.8074,用二進位制表示7為三位數字111。那麼概率的倒數(1/p_1)是什麼意思呢?概率我們知道可以理解為頻率,比如一個字元在一個字元序列中出現的概率(頻率)是0.1,那麼,頻率的倒數1/0.1=10。按照比例的意思來理解就是大約在長度為10的字串中這個字元很可能出現一次,因為這樣頻率才能是1/10等於概率0.1了。所以一個概率事件的資訊量就是觀測到這個字元一次(這個事件發生一次)相應的字串大約多長(用相應的二進位制程式碼長度)。

一個概率事件的資訊量按照以上的二進位制程式碼長度來理解之後,那麼,熵的意義就很明顯了。那就是所有概率事件的相應的二進位制程式碼的平均長度。

再給出條件熵的定義:

條件熵的定義:一個隨機變數在給定另一個隨機變數下的條件熵,它是條件分佈熵關於起條件作用的那個隨機變數取平均之後的期望。若(X,Y)~p(x, y),條件熵H(Y|X)定於為:


4.最大熵原理

    最大熵原理是概率模型學習的一個準則,最大熵原理認為,學習概率模型時,在所有的可能的概率模型中,熵最大的模型是最好的模型。通常用約束條件來確定概率模型的集合,所以,熵最大原理也可以描述為在滿足約束條件的模型集合中選取熵最大的模型。

直觀講, 最大熵原理認為要選擇的概率模型

  (1)首先必須滿足已有的事實,即約束條件。

  (2)在沒有更多資訊的情況下,就假設那些不確定的部分都是等可能的。

但是等可能不容易操作,而熵是一個可優化的數值指標。最大熵原理通過熵的最大化來表示等可能性。

舉個例子:假設隨機變數X5個取值{A,B,C,D,E},現在在沒有更多的資訊的情況下要估計取各個值的概率P(A),P(B),P(C),P(D),P(E).

這些概率值滿足以下的約束條件,P(A)+P(B)+P(C)+P(D)+P(E)=1,而滿足這些條件的概率有無窮多個,在沒有其他的任何資訊的條件下,最大熵原理告訴我們認為這個分佈中去各個值得概率相同是最好的選擇,即P(A)=P(B)=P(C)=P(D)=P(E)=1/5.

而在實際問題中,約束條件遠遠不止一個,很難直接得到概率的分佈,所以最大熵模型應運而生。

5.最大熵模型

假設分類模型是一個條件概率分佈p(Y|X),這個模型表示的是對於給定的輸入X以條件概率P(Y|X)輸出Y

給一個訓練集:T ={(x1, y1),(x2, y2),(x3, y3),…(xn,yn)}

學習的目標是用最大熵原理選擇最好的分類模型。

該模型能夠準確表示隨機過程的行為。該模型任務是預測在給定x的情況下,輸出y的概率p(y| x).

(1). 考慮模型應該滿足的條件(或者說是樣本的特性),給定的訓練集合,可以確定的是聯合分佈P(XY)的經驗分佈和邊緣分佈P(X)的經驗分佈,分別以Pt(X,Y)Pt(X)表示(這裡t表示的是經驗的意思)這裡:


其中V(X = x, Y = y)表示的是訓練資料中樣本(x,y)出現的頻數,V(X =x)表示的是x出現的頻數。N是訓練集合的大小。

(2).假設給出了很多關於資料的先驗資訊,也可以理解為約束條件,我們要將這些資訊新增到模型中去,為了完成這個目標我們引入了特徵函式這個概念。用特徵函式f(x, y)描述x和輸出y之間的某一個事實,其定義是:


(3). 特徵函式f(x, y)關於經驗分佈的Pt(x, y)的期望值,用EPt(f)表示:(特徵的經驗概率期望值是所有滿足特徵要求的經驗概率之和):


特徵函式f(xy)關於模型P(Y|X)與經驗分佈Pt(X)的期望值, 用Ep(f)表示:(特徵的真實期望概率是特徵在所學習的隨機事件中的真實分佈) :


如果模型能夠獲取訓練資料集中的資訊,那麼就可以假設兩個期望值是相等的,即:(特徵的經驗概率與期望概率應該一致),也就是滿足下式的要求:

或者是

這些稱之為模型學習的約束條件,如果有n個特徵函式f_i(x,y)就有n個約束條件。

(4)最大熵模型的定義:

  假設滿足所有的約束條件的模型的集合是:

   定義在條件概率分佈上的條件熵為:


則模型集合C中條件熵H(P)最大的模型稱為最大熵模型。(在滿足約束條件中選擇熵最大的那個。這是一個有約束的優化問題)

5.最大熵模型的學習

最大熵模型的學習過程就是求解最大熵模型的過程,最大模型的學習可以形式化為約束最優化問題:


按照最優化的習慣,將求最大值的問題改寫為等價的求最小值問題:


(1)首先引入拉格朗日乘子w0,w1,…,wn。定義拉格朗日函式L(P,w).


最優化的原始問題是:


對偶問題是:


(2)求解對偶問題內部的極小化問題,它是關於w的函式,將其記作:


同時,將其解記為:


L(P, w)P(y|x)的偏導數:


令偏導數為0,P(x)>0的情況下,解得:


由於:

可得:


最後得到:


其中f_i(x,y)為特徵函式,w_i為特徵的權值,(3)表示的模型P_w = P_w(y | x)就是最大熵模型,w是最大熵模型中的引數向量。

(3)

之後,求解對偶問題外部的極大化問題:

將其解記為w*, 即:

這就是說。可以應用最優化演算法求解對偶函式的極大化,得到w*,用來表示P* ∈C,

這裡P* = Pw*= Pw*(y|x)是學習到的最優化模型(最大熵模型),也就是說,最大熵模型的學習歸結為對偶函式的極大化。

至此,我們得到了最大熵模型,由以下的條件概率分佈表示:

下面我們要證明的是對偶函式的極大化等價於最大熵模型的極大似然估計。

6.極大似然估計

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

訓練資料的經驗概率分佈Pt(x,y),條件概率分佈P(Y|X)的對數似然函式表示為:

(note:標準的對數似然函式log∏P(y|x),但是在這裡為了更好的反應出現x,y關於經驗分佈Pt(x,y)的分佈特徵,通過在每個概率上新增相應的指數運算來給出更多的關於經驗分佈的資訊)

(1)P(y|x)是最大熵模型時,對數似然函式為:


(2)當條件概率分佈是P(y|x),再看對偶函式 ψ(w) = min L(P, w) = L(Pw , w)


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

7結束

最大熵模型和logistic迴歸模型有類似的形式,它們又稱為對數線性模型。模型學習就是在給定的訓練資料條件下對模型進行極大似然估計。也就是說logistic迴歸模型和最大熵模型學習歸結為以似然函式為目標函式的最優化問題,通常通過迭代演算法求解。