機器學習基石10:邏輯迴歸(Logistic Regression)

本文介紹了邏輯迴歸算法的原理和推導。主要包括:問題引入,交叉熵誤差,邏輯迴歸梯度的誤差計算和梯度下降算法。



10. Logistic Regression

10.1 Logistic Regression Problem

上一節課,我們介紹了Linear Regression線性迴歸,以及用平方錯誤來尋找最佳的權重向量w,獲得最好的線性預測。本節課將介紹Logistic Regression邏輯迴歸問題。

在這裏插入圖片描述

在心臟病是否復發二元分類問題中,其輸出空間只含有兩項{+1,-1}(復發和不發覆發)。在有噪聲的情況下,機器學習流程如下圖所示。

在這裏插入圖片描述

目標函數 f(x)f(x) 可以使用目標分佈 PP 來表示,公式如下:

在這裏插入圖片描述
通常情況下,會以概率的方式告知患者復發的可能性,下圖中,該患者心臟病復發的可能性爲80%。

在這裏插入圖片描述

這種情況被稱爲軟二元分類(soft binary classification),目標函數 f(x)f(x) 如下式所示,輸出爲概率。

在這裏插入圖片描述

針對該目標函數,理想數據集和實際數據集的對比如下:

在這裏插入圖片描述

理想數據集的情況是預測輸出都是概率的形式,針對心臟病是否復發的例子來說,真實的數據只有復發和沒復發兩種情況,而不會在病例中記錄病發的概率。

可以將實際訓練數據看做含有噪音的理想訓練數據。問題就轉化爲:如何使用真實的訓練數據解決軟二元分類問題,即假設函數如何設計。

首先回憶兩種假設函數(二元分類和線性迴歸)中都具有的是哪部分?答案是求輸入 X=[x0,x1,...,xd]X = [x_0,x_1,...,x_d] 各屬性的加權總分數(score),公式如下:

在這裏插入圖片描述

如何把該得分從在整個實數範圍內轉換成爲一個0~1之間的值呢?此處就引出了本章的主題,logistic函數(logistic function)用 θ(s)\theta(s) 表示。分數s越大風險越高,分數s越小風險越低。假設函數 h(x)h(x) 如下所示。

在這裏插入圖片描述

邏輯迴歸函數:

在這裏插入圖片描述
由此易知,通過logistic函數 θ(s)\theta(s) 可以將值域從實數集 RR 映射到 (0,1)區間內。邏輯迴歸函數是平滑(處處可微)、單調的S形(sigmoid)函數,因此又被稱爲sigmoid函數。

通過logistic函數,將軟二元分類的假設函數近似爲目標函數 f(x)=P(+1x)f(x) = P(+1|x)

在這裏插入圖片描述


習題1:

在這裏插入圖片描述


10.2 Logistic Regression Error

首先看一下二元分類、線性迴歸與邏輯迴歸的對比:
在這裏插入圖片描述

分數 ss 是在每個假設函數中都會出現的 WTXW^TX ,前兩個學習模型的錯誤衡量分別對應着0/1誤差和平方誤差,而邏輯迴歸所使用的err函數是本節要介紹的內容。

先介紹一下 “似然(likelihood)” 的概念。對於目標函數 f(x)=P(+1x)f(x) = P(+1|x),如果找到了 hypothesis 很接近 target function(err很小)。亦即在Hypothesis集合中找到一個hypothesis gg 與 target function 最接近,能產生同樣的數據集D,包含樣本真實輸出y,則稱這個 hypothesis gg最大似然函數 gg 。公式表示如下:

在這裏插入圖片描述

由邏輯迴歸的目標函數可推導出下式成立:

在這裏插入圖片描述
考慮一數據集 D={(x1,),(x2,×),...,(xN,×)}D = \{(x_1,◦),(x_2,×), . . . ,(x_N,×)\},則通過目標函數產生此種數據集樣本的概率可以用下式表示:

在這裏插入圖片描述

由目標函數 ff 的公式做如下替換:

在這裏插入圖片描述

目標函數 ff 是未知的,已知的只有假設函數 hh,應用最大似然函數公式 g=argmaxh likelihood(h)g = argmax_h \ likelihood(h) 可以將假設函數 hh 代替目標函數 ff

likelihood(h)=P(x1)h(x1)×P(x2)(1h(x2))×...P(xN)(1h(xN))likelihood(h) = P(x_1)h(x_1) × P(x_2)(1 − h(x_2)) × . . .P(x_N)(1 − h(x_N))

邏輯迴歸的假設函數 h(x)=θ(wTx)h(x) = θ(w^Tx) 有性質:1h(x)=h(x)1 − h(x) = h(−x),因此可以將上式進一步轉化爲:

likelihood(h)=P(x1)h(+x1)×P(x2)h(x2)×...P(xN)h(xN) likelihood(h) = P(x_1)h(+x_1) × P(x_2)h(−x_2) × . . .P(x_N)h(−x_N)

因爲 P(xi),i=1,2,...,NP(x_i), i=1,2,...,N 對所有的 hh 來說都相同,即 hh 的似然只與函數 hh 對每個樣本的連乘有關,所以可以忽略這一項。將樣本真實輸出 yny_n (+1,-1)引入公式,可得下式成立:

在這裏插入圖片描述

尋找的是似然最大的假設函數h,因此得到下式:

在這裏插入圖片描述

由邏輯迴歸的假設函數公式 h(x)=θ(wTx)h(x) = θ(w^Tx) 可得:

在這裏插入圖片描述

連乘公式不容易求解最大問題,因此對上式取對數,以便將問題轉換爲連加的形式:

在這裏插入圖片描述

通過引入符號,將最大化問題轉化爲最小化問題,同時引入平均係數 1N\frac 1N使得公式與之前的錯誤衡量類似:

在這裏插入圖片描述

θ(s)\theta (s) 代入上式,公式進一步轉換爲:

在這裏插入圖片描述
至此推到結束,由上式可得邏輯迴歸的誤差函數,稱爲交叉熵誤差函數(cross-entropy error),公式爲:
err(w,x,y)=ln(1+exp(ywx)) err(w,x,y) = ln(1 + exp(−ywx))


習題2:
在這裏插入圖片描述


10.3 Gradient of Logistic Regression Error

推導出logistic迴歸的 Ein(w)E_{in}(w) 之後,接下來尋找使得 Ein(w)E_{in}(w) 最小的權值向量wwEin(w)E_{in}(w) 的公式如下:

在這裏插入圖片描述

回顧在上一節線性迴歸中提到的 Ein(w)E_{in}(w) 的曲線圖:

在這裏插入圖片描述

由函數公式和圖像可知,該函數爲連續(continuous)可微(differentiable)的凹函數,因此其最小值在梯度爲零時取得,即 Ein(w)=0\nabla E_{in}(w) =0

要求解 Ein(w)\nabla E_{in}(w) ,需要對權值向量 ww 的各個分量求偏微分,複雜公式求解偏微分可以使用“鏈式法則”。

爲了強調公式中符號的臨時性,不使用字母表示,而用臨時符號□和○表示:

在這裏插入圖片描述

求解過程(θ\theta 函數爲ogistic函數):

在這裏插入圖片描述
計算結果:
在這裏插入圖片描述
由於 Ein(w)E_{in}(w) 爲凹函數,令 Ein(w)=0\nabla E_{in}(w) = 0,求出權值向量 ww,該向量即可使得函數 Ein(w)E_{in}(w) 最小。

上式中,可以把 Ein(w)\nabla E_{in}(w) 看做 θ(ynwTxn)θ(−y_nw^Tx_n)ynxn−y_nx_n 的線性加權和,要使 Ein(w)=0\nabla E_{in}(w) = 0,有兩種情況成立。分別是線性可分的情況和線性不可分的情況。

對於線性可分的情況,令所有權重 θ(ynwTxn)=0θ(−y_nw^Tx_n) = 0,即可保證梯度 Ein(w)=0\nabla E_{in}(w) = 0θ\theta 函數是sigmoid函數(S型函數),只要讓自變量 ynwTxn−y_nw^Tx_n 趨於 - \infin 即可,即 ynwTxn0y_nw^Tx_n \gg 0 。該式對於所有的樣本點成立的條件是:yny_nwTxnw^Tx_n 同號。這表示數據集D必須是全部線性可分的才能成立。

真實的數據絕大多數情況是線性不可分的。這種情況沒有解析解,因此需要通過迭代優化方法(iterative optimization approach)來求解。首先回顧一下PLA,然後引出邏輯迴歸梯度的計算方法。
在這裏插入圖片描述
ww 每次更新兩部分:一個是每次更新的方向 ynxny_nx_n,vv 表示,另一個是每次更
新的步長 η\eta 。參數 (v,η)(v, \eta) 和終止條件決定了迭代優化算法。
在這裏插入圖片描述


習題3:
在這裏插入圖片描述


10.4 Gradient Descent

Logistic迴歸求解最小的 Ein(w)E_{in}(w) 使用類似PLA的迭代優化方法,通過一步一步改變權值向量 ww,尋找使得 Ein(w)E_{in}(w) 最小的變權值向量 ww,迭代優化方法的更新公式如下所示:
在這裏插入圖片描述
上式中, vv 表示更新的方向, η\eta 表示更新的步長。Logistic迴歸的 Ein(w)E_{in}(w) 爲處處可微的凹函數,其曲線的“谷底”對應的 ww 可使得 Ein(w)E_{in}(w) 最小。
在這裏插入圖片描述
那麼應該如何選擇這兩個參數使得更新公式儘可能快得到達該點呢?

η\eta 固定的情況下,如何選擇 vv 的方向保證更新速度最快?按照 Ein(w)E_{in}(w) 最陡峭的方向修正。即在 η\eta 固定,v=1|v| = 1 的情況下,以最快的速度(有指導方向)找出使得 Ein(w)E_{in}(w) 最小的 ww,公式如下:
在這裏插入圖片描述

以上是非線性帶約束的公式,尋找最小 ww 仍然非常困難,考慮將其轉換成一個近似的公式,通過尋找近似公式中最小的 ww,達到尋找原公式最小的 ww 的目的,此處使用到泰勒展開(Taylor expansion):

在這裏插入圖片描述
利用微分思想和線性近似,假設每次下山只前進一小步,即 η\eta 很小,根據泰勒公式一階將上式展開可以得到:
Ein(wt)+((wt+ηv)wt)Ein(wt)1!\approx E_{in}(w_t) + ((w_t+ ηv) - w_t) \frac{\nabla E_{in}(w_t)} {1!}
Ein(wt)+ηvTEin(wt) ≈ E_{in}(w_t) + ηv^T∇E_{in}(w_t)
進一步轉化爲:
在這裏插入圖片描述

該公式中 Ein(wt)E_{in}(w_t) 是已知的,而 η\eta 爲給定的大於零的值,因此求解上式最小化的問題又可轉換爲:
在這裏插入圖片描述

迭代的目的是讓 Ein(wt)E_{in}(w_t) 越來越小,即讓 Ein(wt+ηv)<Ein(wt)E_{in}(w_t + \eta v) < E_{in}(w_t)η\eta 是標量,因爲如果兩個向量方向相反,則它們的內積最小(爲負);也就是說,如果梯度更新的方向 vv 與梯度 Ein(wt)∇E_{in}(w_t) 反向的話,就能保證每次迭代 Ein(wt+ηv)<Ein(wt)E_{in}(w_t + \eta v) < E_{in}(w_t) 都成立。於是,可令梯度下降方向 vv 爲:

在這裏插入圖片描述
vv 是單位向量,每次都沿着梯度的反方向更新,這種優化方法稱爲梯度下降(gradient descent),這是一種常用且簡單的方法。實際應用中常常使用隨機梯度下降算法(SGD)。

更新方向參數 vv 的更新方式決定後,再看看更新步長參數 η\eta 的取值對梯度下降的影響:

在這裏插入圖片描述

η\eta 太小時,下降速度很慢,因此尋找最優 ww 的速度很慢,如左圖所示;η\eta 太大時,會造成下降不穩定,甚至會出現不降反增的情況,如中間圖所示。因此,合適的 η\eta 應爲隨着梯度的減小而減小,如右圖所示,即參數 η\eta 是可變的,且與梯度大小 Ein(wt)||∇E_{in}(w_t)|| 成正比。由此,可給出更新步長 η\eta 的計算公式:
在這裏插入圖片描述
最終公式記爲:
在這裏插入圖片描述
此時的 η\eta 被稱爲固定的學習率(fixed learning rate) ,公式稱爲固定學習率的梯度下降
至此,我們可以總結梯度下降算法的計算流程。僞代碼如下:
在這裏插入圖片描述

  • 權重初始化:初始化權重向量 www0w_0
  • 計算梯度:Ein(wt)\nabla E_{in}(w_t)
  • 迭代更新:wt+1WtηEin(wt)w_{t+1} \leftarrow W_t - \eta \nabla E_{in}(w_t)
  • 計算終止:滿足 Ein(wt)0\nabla E_{in}(w_t) \approx 0 或到達迭代次數時,迭代結束;

習題4:
在這裏插入圖片描述


Summary

在這裏插入圖片描述
本節課共四小節,介紹瞭如下內容:
第一小節從邏輯迴歸問題出發,將 P(+1x)P(+1|x) 作爲目標函數,使用邏輯迴歸函數 θ(wTx)\theta (w^Tx) 形式的假設函數;
第二小節介紹了邏輯迴歸即誤差函數,稱爲交叉熵誤差;
第三、四小節介紹了通過梯度下降算法計算邏輯迴歸的誤差。


參考:
https://www.cnblogs.com/ymingjingr/p/4306666.html
https://github.com/RedstoneWill/HsuanTienLin_MachineLearning

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章