1. 程式人生 > >統計學習方法6—logistic迴歸和最大熵模型

統計學習方法6—logistic迴歸和最大熵模型

目錄

  • logistic迴歸和最大熵模型
    • 1. logistic迴歸模型
      • 1.1 logistic分佈
      • 1.2 二項logistic迴歸模型
      • 1.3 模型引數估計
    • 2. 最大熵模型
      • 2.1 最大熵原理
      • 2.2 最大熵模型
      • 2.3 最大熵模型的學習
    • 3. 極大似然估計
    • 4. 最大熵與logistic迴歸的關係
    • 5. 總結
    • 6. Reference

logistic迴歸和最大熵模型

1. logistic迴歸模型

  logistic迴歸是一種廣義線性迴歸(generalized linear model),因此與多重線性迴歸分析有很多相同之處。它們的模型形式基本上相同,都具有wx+b,其中w和b是待求引數,其區別在於他們的因變數不同,多重線性迴歸直接將wx+b作為因變數,即y =wx+b,而logistic迴歸則通過函式g(wx+b)讓其對應一個隱狀態p,p =g(wx+b),然後根據p 與1-p的比值大小(機率)決定因變數的值。如果g是logistic函式,就是logistic迴歸,如果g是多項式函式就是多項式迴歸。

  logistic迴歸的因變數可以是二分類的,也可以是多分類的,但是二分類的更為常用,也更加容易解釋,多類可以使用softmax方法進行處理。實際中最為常用的就是二分類的logistic迴歸。

1.1 logistic分佈

  設X是連續隨機變數,X服從的logistic分佈具有如下分佈函式
\[ F(x) = P(X \leqslant x) = \frac {1} {1+exp(\frac {-(x-\mu)} {\gamma})} \]
其中,\(\mu\) 為位置引數,\(\gamma > 0\)為形狀引數。

  我們最常用的是$\mu =0,\gamma =1 $的標準logistic分佈,即sigmoid函式

\[ F(x) = \frac {1} {1+e^{-x}} \]
其影象如下

{zoom:40%;}

1.2 二項logistic迴歸模型

  二項logistic迴歸模型是一種分類模型,以往都是將分類和迴歸作為兩個類別的,為什麼logistic迴歸是一種分類模型呢?原因在於logistic迴歸計算兩個類別的條件概率的大小,再將其比值作為輸出,將類別劃分為比值大的那一類。所以它的輸出是連續值,只是用來分類而已。

  logistic迴歸由條件概率\(P(Y|X)\)的形式表示,其中,隨便變數X取值為實數,隨機變數Y取值為1或0。二項logistic迴歸模型是如下的條件概率分佈:
\[ \begin{aligned} P(Y=1|x) =& \frac {1}{1+exp(-(w\cdot x+b))}\\ P(Y=0|x) =& 1-P(Y=1|x)\\ =& \frac {1}{1+exp(w\cdot x +b)} \end{aligned} \]
  計算出上式兩個概率值後,它們的比值就是logistic迴歸模型的輸出,最後將輸入例項x分類到比值大的那一類。

  若不關心logistic函式作為隨機變數的分佈函式,該模型計算的就是普通的二項分佈,而使用logistic函式使得該二項分佈具有一個很好的特性。logistic迴歸模型計算概率的比值\(\frac {p}{1-p}\),這個比值叫做事件發生的機率。取對數後叫做對數機率。因此logistic迴歸也有人叫做對數機率迴歸。當分佈函式是sigmoid時
\[ log\frac {p}{1-p} = log \frac {P(Y=1|x)}{P(Y=0|x)}=w\cdot x +b \]
  這個式子表明,logistic迴歸模型取對數後是一個線性模型,即它是一個對數線性模型。普通的線性模型\(w\cdot x +b\)的取值範圍可能會非常大,而logistic模型將其值約束在\(0\sim 1\)之間,從根本上解決了因變數不是連續變數的問題。

1.3 模型引數估計

  對logistic迴歸模型的學習可以使用極大似然估計法,X服從二項logistic分佈,對於有N組資料的訓練集,其似然函式為
\[ \prod_{i=1}^N [\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i} \]
對數似然函式為
\[ \begin{aligned} L(w) = & \sum_{i=1}^N[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))]\\ = & \sum_{i=1}^N \left [ y_ilog\frac {\pi(x_i)}{1-\pi(x_i)}+log(1-\pi(x_i)) \right ]\\ = & \sum_{i=1}^N [y_i(w\cdot x_i)-log(1+exp(w\cdot x_i)] \end{aligned} \]
估計
\[ \widehat w = arg\underset w {max} L(w) \]
得到引數\(w\)的估計值

  \(L(w)\)的最大化是一個無約束的最優化問題,求解這類問題的經典方法是梯度下降和牛頓法。這裡不再敘述,應單獨將它們歸納總結。

2. 最大熵模型

2.1 最大熵原理

  最大熵模型根據最大熵原理而來,而最大熵原理是概率模型學習中的一個準則。即在滿足已有的事實(約束條件)的情況下,若沒有其他更多的資訊,那麼剩下的一些不能確定的部分都應當作“等可能的”,也就是一個模型如果是等可能的,它的不確定性就很大。熵就是用於表示這種不確定性,因此在學習中,應儘量滿足熵最大化的原則。這就是最大熵原理。

  假設離散隨機變數X的概率分佈是\(P(X)\),其熵的定義如下
\[ H(P) = - \sum_x P(x)log P(x) \]
它滿足不等式:
\[ 0 \leqslant H(P) \leqslant log | num(X) | \]
當且僅當\(X\)是均勻分佈的時候右邊取等號,即均勻分佈時的熵最大。此時
\[ H(P)=-\sum_n\frac 1 n log\frac 1 n = logn \]
  關於熵的理解在另一篇筆記中《熵、交叉熵、極大似然》。總的來說,熵表示了模型內部的混亂度,或者說資訊量的大小和不確定性的大小。

2.2 最大熵模型

  依據最大熵原理,在沒有獲取充足的模型約束情況下。一個好的方法便是在滿足已有約束的條件下,對未知情況的抉擇使用均勻分佈去代替,也就是選擇一個熵最大(資訊量最大,不確定性最大,最混亂)的模型。這就是最大熵模型的思想,可以分解為兩步。一、根據已有約束條件,得出所有滿足約束的概率模型。二、在得到的模型中選擇一個熵最大的模型作為最優模型。

  假設一個分類模型是一個條件概率分佈\(P(Y|X)\),表示對於給定輸入\(X\),模型給出一個分類結果\(Y\)。已知訓練集後,我們能夠得到該訓練集中\(X,Y\)的聯合分佈\(P(X,Y)\)和邊緣分佈\(P(X)\)的經驗分佈,分別由\(\widetilde P(X,Y),\widetilde P(X)\)表示。

  為了新增一些約束條件,最大熵模型引入了特徵函式來表達\(x\)與\(y\)之間滿足的一些約束
\[ f(x,y) = \begin{cases} 1, &x與y滿足某約束\\ 0,&否則 \end{cases} \]
  如何表達該模型滿足特徵函式的約束條件呢?前面我們由訓練資料集可以得出\(X,Y\)的聯合分佈與\(X\)的邊緣分佈的經驗分佈,那麼首先,模型\(P(Y|X)\)應滿足的條件便是
\[ \widetilde P(X) \cdot P(Y|X) = \widetilde P(X,Y) \]
如果該模型\(P(Y|X)\)同時滿足特徵函式的約束,那麼特徵函式關於上式兩端的期望都應該相同,特徵函式\(f(x,y)\)關於\(\widetilde P(X,Y)\)的期望為
\[ E_{\widetilde P} (f) = \sum_{x,y} \widetilde P(x,y) 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_{\widetilde P} (f)= E_P(f) \]

  • 最大熵模型定義

  假設滿足所有特徵函式的模型集合為
\[ C \equiv \{ P\in \mathbb{P}|E_{\widetilde P} (f_i)= E_P(f_i) \} \]
  在得到滿足特徵函式約束的模型集合後,計算其熵的大小,選擇其中熵最大的模型即是最優模型,\(P(Y|X)\)的條件熵為
\[ H(P) = -\sum_{x,y} \widetilde P(x)P(y|x) log P(y|x) \]
則,最大熵模型\(p^*\)為
\[ P^* = arg\underset {P\in C} {max} H(P) \]

2.3 最大熵模型的學習

  得到最大熵模型的定義後,便可對該模型進行學習,而最大熵模型學習的過程實際上就是其求解過程,因為通過學習選擇的模型就是最大熵模型。最大熵模型的定義分為兩部分,首先是提出約束條件,再選擇最優模型。因此最大熵模型的學習可以形式化為約束最優化問題。

  形式化為如下最優化問題:
\[ \begin{aligned} \underset {P\in C} {max} \;\;\; &H(P) = -\sum_{x,y} \widetilde P(x)P(y|x) log P(y|x) \\ s.t. \;\;\;\; &E_P(f_i) = E_{\widetilde P}(f_i), \;\;\;\;i=1,2,\cdots, n \\ &\sum_yP(y|x) =1 \end{aligned} \]
  依據凸優化,我們常常喜歡處理凸函式,所以將原問題轉化為等價的最小化問題:
\[ \begin{aligned} \underset {P\in C} {min} \;\;\; &-H(P) = \sum_{x,y} \widetilde P(x)P(y|x) log P(y|x) \\ s.t. \;\;\;\; &E_P(f_i) = E_{\widetilde P}(f_i), \;\;\;\;i=1,2,\cdots, n \\ &\sum_yP(y|x) =1 \end{aligned} \]
  這是一個典型的線性規劃問題,求解這種帶約束的線性規劃問題,通常的做法都是將其轉化為無約束的最優化問題,而求解這個無約束的最優化問題用的方法又常常是求解其對偶問題。帶約束問題轉化為無約束問題的方法就是我們常用的拉格朗日乘數法:
\[ \begin{aligned} L(P,w) =& -H(P) +w_0(1-\sum_yP(y|x))+\sum_{i=1}^nw_i(E_p(f_i) - E_{\widetilde P}(f_i))\\ =& \sum_{x,y}\widetilde P(x) P(y|x) log P(Y|x) +w_0(1-\sum_yP(y|x))\\ + &\sum_{i=1}^n w_i \left ( \sum_{x,y} \widetilde P(x,y) logP(y|x) + \sum_{x,y} \widetilde P(x) P(y|x) log P(y|x) \right ) \end{aligned} \]
  得到無約束的廣義拉格朗日函式後,如果按照普通的拉格朗日乘數法求極值的步驟,現在就應該對\(P,w\)求偏導了,然後解一大堆方程組。但是在這個問題中,對\(w\)求偏導的難度較大。其實對\(w\)求偏導後的結果就是原問題中的約束條件,裡面各種\(P\),並且需要求出\(P\)滿足的各種約束,複雜度很高。

  因此繼續將這個問題拆解為兩個問題:先求\(\underset w {max}\;\;\;L(P,w)\),再計算
\[ \underset {P\in C} {min} \;\underset w {max}\;\;\;L(P,w) \]
  這個函式稱為廣義拉格朗日函式的極小極大問題,也叫原始問題。這個函式與原拉格朗日函式是等價的,因為在求對關於\(w\)的極大化時,若該問題中的約束條件不滿足,則\(w\)係數後面的內容就不為0,那麼極大化這個函式使得\(w\)會往正無窮或負無窮變化,最終使得函式極大化結果為正無窮。若滿足約束條件的話,這個函式始終等於\(-H(P)\)。於是這兩步分解,使得函式滿足了約束條件,同時也將對\(P,w\)的處理分解開來,讓我們有機會處理這個問題。具體的分析寫在單獨的對偶性分析裡,這裡不再贅述。關於對偶性可以引數李航老師書後面的附錄,和Convex Optimization Overview (cnt’d) 及相關凸優化書籍。

  前面說了,對\(w\)求偏導的結果十分複雜,若直接求解極小極大問題對優化工作量沒有幫助。根據凸優化理論,\(L(P,w)\)是凸函式,因此我們可以求解其對偶問題來減少工作量,且對偶問題的解與原始問題的解是等價的——滿足KKT條件。

其對偶問題是
\[ \underset w {max}\; \underset {P\in C} {min} \; L(P,w) \]
如此,我們可以先對\(P\)求導,對它求導的結果看起來會舒服很多,其中極小化得到的函式是關於\(w\)的函式,它就是對偶函式,記為
\[ \Psi(w) = \underset {P\in C} {min} \; L(P,w) = L(P_w,w) \]
它的解自然是一個關於\(w\)的概率模型\(P\),記作
\[ P_w = arg \underset {P\in C} {min} \; L(P,w) = P_w(y|x) \]
再用外部的極大化確定\(w\)的引數取值,帶入\(P_w\)即得到最大熵模型。

  具體過程如下:

  1. 求解內部極小問題

  對\(P\)求偏導
\[ \begin{aligned} \frac {\partial L(P,x)} {\partial P(y|x)} = & \sum_y \widetilde P(x) (logP(y|x)+1)-\sum_y w_0 -\sum_{x,y} \left ( \widetilde P(x) \sum_{i=1} ^n w_i f_i(x,y) \right)\\ =& \sum_{x,y} \widetilde P(x) \left ( logP(y|x) + 1 -\sum_x \widetilde P(x)\sum_y w_0 -\sum_{i=1}^n w_if_i(x,y) \right)\\ =& \sum_{x,y} \widetilde P(x) \left ( logP(y|x) + 1 - w_0 -\sum_{i=1}^n w_if_i(x,y) \right)\\ \end {aligned} \]
令該式為0,\(\widetilde P(x) > 0\)解得
\[ P(y|x) = exp \left ( \sum_{i=1}^n w_i f_i(x,y) + w_0 -1 \right)= \frac {exp \left ( \sum_{i=1}^n w_i f_i(x,y) \right)} {exp(1-w_0)} \]
  得到的這個\(P(y|x)\)可能並不是一個真正的概率,因為求解過程中消去了一些變數,比如\(\widetilde P(x)\)。因此,它應該只是表達了所有可能取值之間的一個比值關係,是一個非規範化概率,所有對其規範化,由於
\[ \sum_yP(y|x) = 1 \]
得到規範化因子
\[ Z_w(x) = \sum_y exp\left (\sum_{i=1} {n} w_i f_i (x,y)\right) \]
ps: \(exp(1-w_0)\)是常數會被約去

   最終得到
\[ P_w(y|x) = \frac 1 {Z_w(x)} exp\left (\sum_{i=1} {n} w_i f_i (x,y)\right) \]

  1. 最大化對偶函式\(\Psi(w)\)

  將得到的結果帶入\(\Psi(w) = L(P_w,w)\),接著求解對偶函式\(\Psi(w)\)的極大化問題
\[ \underset w {max} \Psi(w) \]
其解為
\[ w^* = arg \underset w {max} \; \Psi(w) \]
求解方法同樣是對\(w\)求偏導令為0即可。

  得到引數\(w^*\)後帶入\(P_w(y|x)\)即得最大熵模型。

3. 極大似然估計

  下面證明最大熵模型的極大似然估計等價與上面用到的對偶函式的極大化。最大熵的極大似然函式使用的是對數似然函式,關於這個似然函式在我的另一篇筆記《熵、交叉熵、極大似然》中有提到和推導。下面直接給出其形式
\[ L_{\widetilde P}(P) = log \prod_{x,y}P(y|x)^{\widetilde P(x,y)} = \sum_{x,y} \widetilde P(x,y) log P(y|x) \]
將\(P_w(y|x)\)帶入
\[ \begin{aligned} L_{\widetilde P}(P_w) =& \sum_{x,y} \widetilde P(x,y) \sum_{i=1} ^n w_i f_i(x,y) -\sum_{x,y} \widetilde P(x,y) log Z_w(x)\\ =& \sum_{x,y} \widetilde P(x,y) \sum_{i=1} ^n w_i f_i(x,y) -\sum_x\widetilde P(x) log Z_w(x) \end{aligned} \]
  對於對偶函式
\[ \begin{aligned} \Psi(w) =& \sum_{x,y} \widetilde P(x) P_w(y|x)log P_w(y|x) + \sum_{i=1} ^n w_i \left ( \sum_{x,y} \widetilde P(x,y) f_i(x,y) - \sum_{x,y} \widetilde P(x) P_w(y|x)f_i(x,y) \right)\\ =&\sum_{x,y} \widetilde P(x,y) \sum_{i=1}^n w_i f_i(x,y) +\sum_{x,y} \widetilde P(x) P_w(y|x) \left ( logP_w(y|x) - \sum_{i=1}^n w_i f_i (x,y) \right)\\ =& \sum_{x,y} \widetilde P(x,y) \sum_{i=1} ^n w_i f_i(x,y) -\sum_{x,y} \widetilde P(x,y) log Z_w(x)\\ =& \sum_{x,y} \widetilde P(x,y) \sum_{i=1} ^n w_i f_i(x,y) -\sum_x\widetilde P(x) log Z_w(x) \end{aligned} \]
兩個過程的最後一步都用到\(\sum_yP(y|x) = 1\)。

這樣,最大熵模型的學習過程就轉化為求解對數似然函式極大化或對偶函式極大化的問題。

4. 最大熵與logistic迴歸的關係

  在本章中,logistic迴歸和最大熵模型放在一起,那麼它們有什麼關係呢。實際上,最大熵模型可以退化為logistic迴歸模型。

  首先限定y是一個二元變數,不失一般性,假設取值為0,1.即\(y\in \{ 0,1\}\),再定義關於x,y的特徵函式為
\[ f(x,y) = \begin{cases} g(x) & y=1\\ 0&y=0 \end{cases} \]
它與最大熵模型特徵函式的區別在於,最大熵模型特徵函式是限定了\(x,y\)之間的關係,而這裡顯然沒有。將其帶入最大熵模型
\[ \begin{aligned} P(y=1|x) = &\frac {exp(w\cdot f(x,1))} {exp(w\cdot f(x,0))+exp(w\cdot f(x,1))}\\ =& \frac {exp(w\cdot g(x)} {exp(0)+exp(w\cdot g(x))}\\ =& \frac 1 {exp(-w\cdot g(x))+1}\\ \end{aligned} \]
當\(g(x)\)為sigmoid函式時,這就是logistic迴歸模型。

同理可計算\(P(y=0|x)\)。

關於模型的最優化演算法單獨寫一篇。

5. 總結

  logistic迴歸是一個對數線性模型,它與線性模型相比有更好的特性,可以處理範圍波動較大的資料。其學習通過極大似然估計,且其似然函式形如伯努利分佈的似然函式。

  最大熵模型中用到了熵的概念和最大熵原理,熵描述一個模型內部的混亂程度或不確定性的大小。最大熵原理表明,當我們沒有更多的資訊來確定一個模型的時候,資訊量最大(不確定性最大)的模型是理想的選擇。熵似乎與極大似然有著異曲同工的關係,在另一篇筆記《熵、交叉熵、極大似然》中也說明了交叉熵與極大似然在廣義伯努利分佈下的等價的。

  最大熵模型的學習用到了拉格朗日的對偶性,這是因為將條件線性規劃表達為無約束優化問題後,原始問題仍較難計算,於是根據凸優化理論,計算原始問題的對偶問題,只要滿足KKT條件,原始問題與對偶問題的解就是等價的。

  最大熵模型與logistic的關係可通過特徵函式聯絡起來,特徵函式相當於人為的幫助模型排除一些不合理的情況。最大熵模型是一個判別模型,在計算上可以使用最優化演算法。後面學到的條件隨機場也是一個判別模型,因此在計算上二者有很多類似的地方,應考慮它們計算上的共通點。不過其思想還是基於概率圖模型的,因此在理論思想方面應與隱馬爾可夫模型對比。

6. Reference

統計學習方法

如何理解最大熵中的特徵函式

Convex Optimization Overview (cnt’d)

PRML

最小化交叉熵與極大似然