本文介紹了邏輯迴歸算法的原理和推導。主要包括:問題引入,交叉熵誤差,邏輯迴歸梯度的誤差計算和梯度下降算法。
文章目錄
10. Logistic Regression
10.1 Logistic Regression Problem
上一節課,我們介紹了Linear Regression線性迴歸,以及用平方錯誤來尋找最佳的權重向量w,獲得最好的線性預測。本節課將介紹Logistic Regression邏輯迴歸問題。
在心臟病是否復發二元分類問題中,其輸出空間只含有兩項{+1,-1}(復發和不發覆發)。在有噪聲的情況下,機器學習流程如下圖所示。
目標函數 可以使用目標分佈 來表示,公式如下:
通常情況下,會以概率的方式告知患者復發的可能性,下圖中,該患者心臟病復發的可能性爲80%。
這種情況被稱爲軟二元分類(soft binary classification),目標函數 如下式所示,輸出爲概率。
針對該目標函數,理想數據集和實際數據集的對比如下:
理想數據集的情況是預測輸出都是概率的形式,針對心臟病是否復發的例子來說,真實的數據只有復發和沒復發兩種情況,而不會在病例中記錄病發的概率。
可以將實際訓練數據看做含有噪音的理想訓練數據。問題就轉化爲:如何使用真實的訓練數據解決軟二元分類問題,即假設函數如何設計。
首先回憶兩種假設函數(二元分類和線性迴歸)中都具有的是哪部分?答案是求輸入 各屬性的加權總分數(score),公式如下:
如何把該得分從在整個實數範圍內轉換成爲一個0~1之間的值呢?此處就引出了本章的主題,logistic函數(logistic function)用 表示。分數s越大風險越高,分數s越小風險越低。假設函數 如下所示。
邏輯迴歸函數:
由此易知,通過logistic函數 可以將值域從實數集 映射到 (0,1)區間內。邏輯迴歸函數是平滑(處處可微)、單調的S形(sigmoid)函數,因此又被稱爲sigmoid函數。
通過logistic函數,將軟二元分類的假設函數近似爲目標函數 :
習題1:
10.2 Logistic Regression Error
首先看一下二元分類、線性迴歸與邏輯迴歸的對比:
分數 是在每個假設函數中都會出現的 ,前兩個學習模型的錯誤衡量分別對應着0/1誤差和平方誤差,而邏輯迴歸所使用的err函數是本節要介紹的內容。
先介紹一下 “似然(likelihood)” 的概念。對於目標函數 ,如果找到了 hypothesis 很接近 target function(err很小)。亦即在Hypothesis集合中找到一個hypothesis 與 target function 最接近,能產生同樣的數據集D,包含樣本真實輸出y,則稱這個 hypothesis 是最大似然函數 。公式表示如下:
由邏輯迴歸的目標函數可推導出下式成立:
考慮一數據集 ,則通過目標函數產生此種數據集樣本的概率可以用下式表示:
由目標函數 的公式做如下替換:
目標函數 是未知的,已知的只有假設函數 ,應用最大似然函數公式 可以將假設函數 代替目標函數 :
邏輯迴歸的假設函數 有性質:,因此可以將上式進一步轉化爲:
因爲 對所有的 來說都相同,即 的似然只與函數 對每個樣本的連乘有關,所以可以忽略這一項。將樣本真實輸出 (+1,-1)引入公式,可得下式成立:
尋找的是似然最大的假設函數h,因此得到下式:
由邏輯迴歸的假設函數公式 可得:
連乘公式不容易求解最大問題,因此對上式取對數,以便將問題轉換爲連加的形式:
通過引入符號,將最大化問題轉化爲最小化問題,同時引入平均係數 使得公式與之前的錯誤衡量類似:
將 代入上式,公式進一步轉換爲:
至此推到結束,由上式可得邏輯迴歸的誤差函數,稱爲交叉熵誤差函數(cross-entropy error),公式爲:
習題2:
10.3 Gradient of Logistic Regression Error
推導出logistic迴歸的 之後,接下來尋找使得 最小的權值向量。 的公式如下:
回顧在上一節線性迴歸中提到的 的曲線圖:
由函數公式和圖像可知,該函數爲連續(continuous)可微(differentiable)的凹函數,因此其最小值在梯度爲零時取得,即 。
要求解 ,需要對權值向量 的各個分量求偏微分,複雜公式求解偏微分可以使用“鏈式法則”。
爲了強調公式中符號的臨時性,不使用字母表示,而用臨時符號□和○表示:
求解過程( 函數爲ogistic函數):
計算結果:
由於 爲凹函數,令 ,求出權值向量 ,該向量即可使得函數 最小。
上式中,可以把 看做 與 的線性加權和,要使 ,有兩種情況成立。分別是線性可分的情況和線性不可分的情況。
對於線性可分的情況,令所有權重 ,即可保證梯度 。 函數是sigmoid函數(S型函數),只要讓自變量 趨於 即可,即 。該式對於所有的樣本點成立的條件是: 與 同號。這表示數據集D必須是全部線性可分的才能成立。
真實的數據絕大多數情況是線性不可分的。這種情況沒有解析解,因此需要通過迭代優化方法(iterative optimization approach)來求解。首先回顧一下PLA,然後引出邏輯迴歸梯度的計算方法。
每次更新兩部分:一個是每次更新的方向 用 表示,另一個是每次更
新的步長 。參數 和終止條件決定了迭代優化算法。
習題3:
10.4 Gradient Descent
Logistic迴歸求解最小的 使用類似PLA的迭代優化方法,通過一步一步改變權值向量 ,尋找使得 最小的變權值向量 ,迭代優化方法的更新公式如下所示:
上式中, 表示更新的方向, 表示更新的步長。Logistic迴歸的 爲處處可微的凹函數,其曲線的“谷底”對應的 可使得 最小。
那麼應該如何選擇這兩個參數使得更新公式儘可能快得到達該點呢?
在 固定的情況下,如何選擇 的方向保證更新速度最快?按照 最陡峭的方向修正。即在 固定, 的情況下,以最快的速度(有指導方向)找出使得 最小的 ,公式如下:
以上是非線性帶約束的公式,尋找最小 仍然非常困難,考慮將其轉換成一個近似的公式,通過尋找近似公式中最小的 ,達到尋找原公式最小的 的目的,此處使用到泰勒展開(Taylor expansion):
利用微分思想和線性近似,假設每次下山只前進一小步,即 很小,根據泰勒公式一階將上式展開可以得到:
進一步轉化爲:
該公式中 是已知的,而 爲給定的大於零的值,因此求解上式最小化的問題又可轉換爲:
迭代的目的是讓 越來越小,即讓 。 是標量,因爲如果兩個向量方向相反,則它們的內積最小(爲負);也就是說,如果梯度更新的方向 與梯度 反向的話,就能保證每次迭代 都成立。於是,可令梯度下降方向 爲:
是單位向量,每次都沿着梯度的反方向更新,這種優化方法稱爲梯度下降(gradient descent),這是一種常用且簡單的方法。實際應用中常常使用隨機梯度下降算法(SGD)。
更新方向參數 的更新方式決定後,再看看更新步長參數 的取值對梯度下降的影響:
太小時,下降速度很慢,因此尋找最優 的速度很慢,如左圖所示; 太大時,會造成下降不穩定,甚至會出現不降反增的情況,如中間圖所示。因此,合適的 應爲隨着梯度的減小而減小,如右圖所示,即參數 是可變的,且與梯度大小 成正比。由此,可給出更新步長 的計算公式:
最終公式記爲:
此時的 被稱爲固定的學習率(fixed learning rate) ,公式稱爲固定學習率的梯度下降。
至此,我們可以總結梯度下降算法的計算流程。僞代碼如下:
- 權重初始化:初始化權重向量 爲 ;
- 計算梯度:;
- 迭代更新:
- 計算終止:滿足 或到達迭代次數時,迭代結束;
習題4:
Summary
本節課共四小節,介紹瞭如下內容:
第一小節從邏輯迴歸問題出發,將 作爲目標函數,使用邏輯迴歸函數 形式的假設函數;
第二小節介紹了邏輯迴歸即誤差函數,稱爲交叉熵誤差;
第三、四小節介紹了通過梯度下降算法計算邏輯迴歸的誤差。
參考:
https://www.cnblogs.com/ymingjingr/p/4306666.html
https://github.com/RedstoneWill/HsuanTienLin_MachineLearning