標籤:

[視頻講解]史上最全面的正則化技術總結與分析--part2

接第一篇文章寫

3.4 貝葉斯推斷分析法

以L1和L2範數為例,所得結論可以推廣到P範數中,首先需要知道:整個最優化問題從貝葉斯觀點來看是一種貝葉斯最大後驗估計,其中正則化項對應後驗估計中的先驗信息,損失函數對應後驗估計中的似然函數,兩者的乘積即對應貝葉斯最大後驗估計的形式。針對L1和L2範數還有結論:L2範數相當於給模型參數 [ 	heta ] 設置一個協方差為1/alpha的零均值高斯先驗分布,L1範數相當於給模型參數 [ 	heta ] 設置一個參數為1/alpha的拉普拉斯先驗分布

為了講清楚上述結論,需要具備幾點前置知識點:(1) 高斯分布和拉普拉斯分布的定義和形狀;(2) 貝葉斯定理;(3) 最大似然估計;(4) 最大後驗估計。下面我對這4個知識點進行解釋。

(1) 高斯分布和拉普拉斯分布

a) 高斯分布的概率密度函數定義為:

\ fleft( {x|mu ,sigma ^2 } 
ight) = frac{1}{{sqrt {2pi sigma ^2 } }}e^{ - frac{{left( {x - mu } 
ight)^2 }}{{2sigma ^2 }}}

其中, [ mu ] 為數學期望,尺度參數 [ sigma ] 為標準差, [ x ] 為隨機變數,其圖形為:

圖7 高斯概率密度函數圖示

其中, [ mu ] 控制曲線的左右移動, [ sigma ] 控制曲線的衰減快慢, [ sigma ] 越大,曲線越平緩,衰減越慢。

b) 拉普拉斯分布的概率密度函數定義為:

\ fleft( {x|mu ,b} 
ight) = frac{1}{{2b}}exp left( { - frac{{left| {x - mu } 
ight|}}{b}} 
ight)

其中, [ mu ] 為數學期望,b為尺度參數, [ x ] 為隨機變數,其圖形為:

圖8 拉普拉斯概率密度函數圖示

(2) 最大似然估計

定義為:在已知試驗結果(即是樣本)的情況下,用來估計滿足這些樣本分布的參數,把可能性最大的那個參數 [ hat 	heta ] 作為真實 [ 	heta ] 的參數估計。

通俗理解就是,該演算法作用是找到一組參數 [ hat 	heta ] 來最大化復現或者擬合當前樣本空間。可以發現如果樣本空間不一樣,則通過最大似然估計得到的 [ hat 	heta ] 也不一樣,即最大似然估計永遠都是基於當前樣本,所以可以想像出很容易出現過擬合即求得的參數 [ hat 	heta ] 只是能很好的擬合當前樣本,然而推廣和泛化能力很弱,是不是有點像沒有加正則項的損失函數。

若總體X屬於離散型,其分布律 [ Pleft( {X = x} 
ight) = pleft( {x;	heta } 
ight) ] [ 	heta ] 形式已知,是待估參數,設 [ X_1 ,X_2 , cdots X_n ] 為來自總體X的樣本,其 [ X_1 ,X_2 , cdots X_n ] 的聯合分布律為:

\ mathop prod limits_{i = 1}^n pleft( {x_i ;	heta } 
ight)

又設 [ x_1 ,x_2 , cdots x_n ] 是來自 [ X_1 ,X_2 , cdots X_n ] 對應的一個樣本,易知樣本 [ X_1 ,X_2 , cdots X_n ] 觀察到 [ x_1 ,x_2 , cdots x_n ] 的概率,亦即事件 [ left{ {X_1 = x_1 ,X_2 = x_2 , cdots X_n = x_n } 
ight} ] 發生的概率為:

\ L(	heta ) = Lleft( {x_1 ,x_2 , cdots x_n ;	heta } 
ight) = mathop prod limits_{i = 1}^n pleft( {x_i ;	heta } 
ight)

[ L(	heta ) ] 為似然函數,最大化 [ L(	heta ) ] 所得到的參數 [ 	heta ] 即為最大似然估計法。由於上述式子不好計算,而因為 [ L(	heta ) ] [ ln L(	heta ) ] 在同一處取極值,故通常取對數即所謂的對數似然函數,其中最大似然函數如下所示:

\ 	heta _{MLE} = arg mathop {max }limits_	heta mathop prod limits_{i = 1}^n pleft( {x_i ;	heta } 
ight)

如果上述公式不能理解,請各位讀者去複習一下大學課程《概率論與數理統計》中的參數估計章節,為了更方便理解,下面舉一個例子:假設我要統計出整個大學內所有同學的身高分布情況,設全校一共20000人,數量龐大,所有人都去問一遍不太靠譜,所以我打算採用抽樣方法來估計,假設我已經知道身高分布服從高斯分布,但是我不知道高斯分布中的均值和方差參數,現在我打算採用最大似然估計方法來確定這兩個參數。首先需要明確,全校20000即為總體X,我隨機從各個班抽取10名同學,假設一共抽了2000個同學,那麼2000同學就構成了樣本空間,則抽取的2000個同學就構成了 [ x_1 ,x_2 , cdots x_{2000} ] ,由於每個樣本的概率密度函數已知,則很容易寫出似然函數,對數求導即可求解參數。

(3) 最大後驗估計

首先需要明確:最大後驗估計和最大似然估計聯繫非常密切,對最大似然估計引入先驗概率估計即轉化為最大後驗估計,最大後驗概率估計可以看作是規則化的最大似然估計。最大似然估計屬於頻率派的觀點,其認為參數 [ 	heta ] 是一個固定不變的常量,只是我們現在還不知道它的值,可以通過隨機產生的樣本去估計這個參數。最大後驗估計屬於貝葉斯學派推導而來,其認為一切皆變數,服從某一個分布,認為參數 [ 	heta ] 是一個未知的隨機變數,我們可以給出參數 [ 	heta ] 分布情況的先驗概率,然後基於貝葉斯定理估計模型。

根據貝葉斯公式可得,後驗概率計算公式為:

\ p(	heta |X) = frac{{p(X|	heta )p(	heta )}}{{p(X)}}

\ = frac{{(mathop prod limits_{i = 1}^n pleft( {x_i ;	heta } 
ight))p(	heta )}}{{int {(mathop prod limits_{i = 1}^n pleft( {x_i ;	heta } 
ight))p(	heta )d	heta } }}

由於分母計算非常困難,而我們的目的是求最大化後驗概率,故分母不進行計算(我們在樸素貝葉斯演算法中也是這樣處理的),只考慮分子:

\ 	heta _{MAP} = arg mathop {max (}limits_	heta mathop prod limits_{i = 1}^n pleft( {x_i ;	heta } 
ight))p(	heta )

仔細觀察 [ 	heta _{MLE} ] [ 	heta _{MAP} ] 的形式,可以很容易看出:最大後驗估計就是在最大似然估計函數上面乘上了一項先驗分布而已。可不能小看了這個先驗分布,其作用非常大,後面會詳述。

下面開始解釋:L2範數相當於給模型參數 [ 	heta ] 設置一個零均值高斯先驗分布。以線性回歸模型為例,結論可以推廣到任意模型,線性模型方程可以表示為:

\ Y = 	heta ^T X + varepsilon

其中, [ varepsilon ] 表示誤差,假設  varepsilon_isim Nleft( {0,sigma ^2 } 
ight) ,  	heta_i sim Nleft( {0,	au ^2 } 
ight) ,則有:

\ pleft( {varepsilon _i } 
ight) = frac{1}{{sqrt {2pi sigma ^2 } }}exp ( - frac{{left( {varepsilon _i } 
ight)^2 }}{{2sigma ^2 }})

\ p(y_i |x_i ;	heta ) = frac{1}{{sqrt {2pi sigma ^2 } }}exp ( - frac{{left( {y_i - 	heta ^T x_i } 
ight)^2 }}{{2sigma ^2 }})

通過上面的 [ 	heta _{MAP} ] 可知最大後驗估計方程形式,對其取對數:

\ arg mathop {max }limits_	heta ln L(	heta ) = arg mathop {max }limits_	heta (ln mathop prod limits_{i = 1}^n pleft( {y_i |x_i ;	heta } 
ight) + ln p(	heta ))

\ = ln mathop prod limits_{i = 1}^n frac{1}{{sqrt {2pi sigma ^2 } }}exp ( - frac{{left( {y_i - 	heta ^T x_i } 
ight)^2 }}{{2sigma ^2 }}) + ln mathop prod limits_{j = 1}^d frac{1}{{sqrt {2pi 	au ^2 } }}exp ( - frac{{left( {	heta _j } 
ight)^2 }}{{2	au ^2 }})

\ = - frac{1}{{2sigma ^2 }}sumlimits_{i = 1}^n {left( {y_i - 	heta ^T x_i } 
ight)^2 - } frac{1}{{2	au ^2 }}sumlimits_{j = 1}^d {	heta _j ^2 - } nln sigma sqrt {2pi } - dln 	au sqrt {2pi }

要求上式最大,去掉負號和統一處理前面的參數,故而可以轉化為

\ arg mathop {min }limits_	heta ln L(	heta ) = sumlimits_{i = 1}^n {left( {y_i - 	heta ^T x_i } 
ight)^2 + } lambda sumlimits_{j = 1}^d {	heta _j ^2 }

上式正好是線性回歸問題在L2範數正則下的代價函數,故驗證了結論。

下面開始解釋:L1範數相當於給模型參數 [ 	heta ] 設置一個拉普拉斯先驗分布。以線性回歸模型為例,結論可以推廣到任意模型,同樣假設  varepsilon_isim Nleft( {0,sigma ^2 } 
ight) ,  	heta_isim Laplaceleft( {0,b} 
ight)

\ arg mathop {max }limits_	heta ln L(	heta ) = ln mathop prod limits_{i = 1}^n pleft( {y_i |x_i ;	heta } 
ight) + ln p(	heta )

\ = ln mathop prod limits_{i = 1}^n frac{1}{{sqrt {2pi sigma ^2 } }}exp ( - frac{{left( {y_i - 	heta ^T x_i } 
ight)^2 }}{{2sigma ^2 }}) + ln mathop prod limits_{j = 1}^d frac{1}{{2b}}exp ( - frac{{left| {	heta _j } 
ight|}}{b})

\ = - frac{1}{{2sigma ^2 }}sumlimits_{i = 1}^n {left( {y_i - 	heta ^T x_i } 
ight)^2 - } frac{1}{b}sumlimits_{i = 1}^n {left| {	heta _j } 
ight| - } nln sigma sqrt {2pi } - dln 2b

要求上式最大,去掉負號和統一處理前面的參數,故而可以轉化為

 \ arg mathop {min }limits_	heta ln L(	heta ) = sumlimits_{i = 1}^n {left( {y_i - 	heta ^T x_i } 
ight)^2 + } lambda sumlimits_{j = 1}^d {left| {	heta _j } 
ight|}

上式正好是線性回歸問題在L1範數正則下的代價函數,故驗證了結論。

附加一句:如果誤差符合0均值的高斯分布,那麼最大似然估計法的結果就是最小二乘法,這也是為何誤差定義經常使用 [ sumlimits_{i = 1}^n {left( {y_i - 	heta ^T x_i } 
ight)^2 } ] 的原因,因為這個公式是基於概率推導出來的,有比較強的科學依據。

四、機器學習正則化技術的典型演算法應用

4.1 邏輯回歸

二分類邏輯回歸使用Sigmoid作為決策函數進行分類,該函數可以將任意的輸入映射到[0,1]區間,當預測結果小於0.5,則表示負類,當預測結果大於0.5.則表示正類,其模型本質是求最大似然估計,具體求解似然函數通常使用梯度下降法,而前面說過:最大似然估計法沒有考慮訓練集以外的因素,很容易造成過擬合,故而邏輯回歸一般採用L2範數進行正則化操作,Sigmoid函數定義和圖形如下:

\ h_	heta left( x 
ight) = frac{1}{{1 + e^{ - 	heta ^T X} }}

圖9 Sigmoid函數圖示

其中似然方程和對數似然方程為:

 \ L(	heta ) = prodlimits_{i = 1}^n {P(y_i |x_i ;	heta )} = prodlimits_{i = 1}^n {left( {h_	heta left( {x_i } 
ight)} 
ight)^{y_i } } (1 - h_	heta left( {x_i } 
ight))^{1 - y_i }

\ l(	heta ) = log L(	heta ) = sumlimits_{i = 1}^n {left( {y_i log h_	heta left( {x_i } 
ight) + (1 - y_i )log (1 - h_	heta left( {x_i } 
ight))} 
ight)}

正則化後的代價函數為:

\ J(	heta ) = - frac{1}{n}[sumlimits_{i = 1}^n {left( {y_i log h_	heta left( {x_i } 
ight) + (1 - y_i )log (1 - h_	heta left( {x_i } 
ight))} 
ight)} ] + frac{lambda }{{2n}}sumlimits_{j = 1}^d {	heta _j^2 }

注意: 正則化是針對損失函數,而不是似然函數,故需要將似然函數取負號轉換為損失函數,然後再加上正則項。

4.2 嶺回歸(Ridge Regression)

嶺回歸本質上是針對線性回歸問題引入了L2範數正則,通過縮減回歸係數避免過擬合問題,最先用來處理特徵數多於樣本數的情況(高維小樣本問題),現在也用於在估計中加人偏差,從而得到更好的估計,加了正則化後的代價函數如下:

\ hat eta ^{ridge} = mathop {arg min }limits_eta left{ {sumlimits_{i = 1}^n {(y_i - eta _0 - sumlimits_{j = 1}^d {x_{ij} eta _j )^2 + lambda sumlimits_{j = 1}^d {eta _j^2 } } } } 
ight}

其中, [ hat eta ] 表示估計的回歸係數,n表示樣本個數,d表示回歸係數個數, [ y_i ] 表示第i個樣本實際輸出值, [ eta _j ] 表示第j個回歸係數, [ lambda ] 為正則化參數。當 [ lambda ] =0,表示不添加正則,則很容易導致原代價函數為0,預測值與實際值完全貼合即出現了所謂的過擬合問題,當 [ lambda ] 過大,會導致 [ eta _j ] 係數變小,但不會為0,減少了模型複雜度,原代價函數值較大,出現欠擬合。在實際開發中,通常使用交叉驗證集多次循環迭代確定最佳 [ lambda ] 值。

\ hat eta ^{ridge} = left( {X^T X + lambda I} 
ight)^{ - 1} X^T y

帶正則化的代價函數採用最小二乘法或者正規方程可以得到上述回歸係數結果,可以發現:經過L2範數罰後,不僅僅壓縮了係數,而且可以使得原先可能不可逆的矩陣一定可逆( [ X^T X + lambda I ] 一定可逆),這也是L2正則的好處之一。

4.3 Lasso回歸

拉索回歸(lasso回歸)本質上是針對線性回歸問題引入了L1範數正則,通過縮減回歸係數避免過擬合問題,其不同於L2範數,其可以將某些係數縮減為0即所謂的具備稀疏性(稀疏性的好處是簡化計算、容易理解模型、減少存儲空間、不容易出現過擬合等等),加了正則化後的代價函數如下:

\ hat eta ^{lasso} = mathop {arg min }limits_eta left{ {sumlimits_{i = 1}^n {(y_i - eta _0 - sumlimits_{j = 1}^d {x_{ij} eta _j )^2 + lambda sumlimits_{j = 1}^d {left| {eta {}_j} 
ight|} } } } 
ight}

其中,參數函數和嶺回歸中相同。L1範數罰有一個問題:由於 [ left| x 
ight| ] 函數在0處不可導,故而直接使用最小二乘法、梯度下降法等方法均失效,但是由於其為第一類間斷點中的可去間斷點,可以通過補充該點的定義解決,通常,對於線性回歸中的lasso回歸可以採用近似的前向逐步回歸替代。

4.4 SVM

支持向量機SVM優化目的為尋找一個超平面,使得正負樣本能夠以最大間隔分離開,從而得到更好的泛化性能,其通過引入核函數來將低維線性不可分的樣本映射到高維空間從而線性可分,通過引入懲罰參數C(類似於正則化參數)來對錯分樣本進行懲罰,從而減少模型複雜度,提高泛化能力,其優化目標如下:

 \ mathop {min }limits_{	heta ,b} frac{1}{n}sumlimits_{i = 1}^n {max (1 - y_i left( {	heta ^T x_i + b} 
ight),0)} + frac{1}{{2CN}}	heta ^T 	heta

\ lambda = frac{1}{{2C}}

大家如果不知道上面公式的推導,不用緊張,對於本次內容不是重點,只需要關注後面正則項部分,懲罰參數C作用和正則化參數 [ lambda ] 作用一致,只是反相關而已。

需要明白以下結論:

(1) C越大, [ lambda ] 越小,表示對分錯樣本的懲罰程度越大,正則化作用越小,偏差越小,方差越大,越容易出現過擬合(通俗理解,原本將低維空間映射到5維空間正好線性可分,但是由於懲罰過於嚴重,任何一個樣本分錯了都不可原諒,結果系統只能不斷提高維數來擬合樣本,假設為10維,最終導致映射維數過高,出現過擬合樣本現象,數學上稱為VC維較大);

(2) C越小, [ lambda ] 越大,表示對分錯樣本的懲罰程度越小,正則化作用越大,偏差越大,方差越小,越容易出現欠擬合(通俗理解,原本將低維空間映射到5維空間正好線性可分,但是由於懲罰過小,分錯了好多樣本都可以理解,比較隨意,結果系統也採用簡化版來擬合樣本,假設為3維,最終導致映射維數過低,出現欠擬合樣本現象,數學上稱為VC維較小)。

五、正則化技術總結

本文從各個角度深入的分析了機器學習演算法中使用到的正則化技術,正則化技術是機器學習和深度學習中非常重要的內容,不管是在面試、筆試還是實際應用中都至關重要,通過本文您應該知道以下重要結論:

(1) 正則化的作用是防止過擬合、提高模型泛化能力

(2) 正則化等價於結構風險最小化

(3) 正則化等價於帶約束的目標函數中的約束項

(4) 正則項等價於引入參數的模型先驗概率

(5) 在誤差符合均值為0的高斯分布,則最大似然估計和最小二乘法等價

(6) 最大後驗估計就是在最大似然估計函數上面乘上了一項先驗分布而已

(7) L2範數相當於給模型參數 [ 	heta ] 設置一個零均值高斯先驗分布,L1範數相當於給模型參數 [ 	heta ] 設置一個拉普拉斯先驗分布

(8) L0和L1正則可以得到稀疏解,而L2不能,並且參數優化速度L1快於L2,但是L2更容易理解,計算更方便。

有一個需要注意的地方:正則化方法一般都是不對偏移項進行正則的,原因是它們也沒有和數據直接有乘法等交互,其不會影響到最後結果中某個數據維度的作用,如果你執意要對其進行正則化,也是可以的,對結果沒有多少影響。

前面討論了,正則化是一種可以有效防止過擬合的方法,然而如何判斷模型是否或者容易出現過擬合?常用的辦法有:(1) 比較模型對驗證集和訓練集的識別精度,如果驗證集識別精度大幅低於訓練集,則可以判斷模型存在過擬合;(2) 訓練集的代價函數快速下降至0附近,也可以懷疑出現了過擬合;(3) 樣本個數比特徵個數少,也很容易出現過擬合。

由於本人水平有限,如果哪裡有寫錯的或者理解不到位的,歡迎提出建議!有問題進群交流678455658

六、參考內容

[1] 概率論與數理統計 浙大版(第四版)教材

[2] 吳恩達CS229課程

[3] Deep Learning

[4] pattern recognition and machine learning

[5] jianshu.com/p/a47c46153

[6] jianshu.com/p/f71848c7a

[7] zhihu.com/question/2353

[8] 其他優秀的博客


推薦閱讀:

機器學習演算法
L1範數正則項使解稀疏的解釋
關於專欄文章說明
對比了 18000 個 Python 項目,這 TOP45 值得學習!
《機器學習實戰》學習總結(十一)——隱馬爾可夫模型(HMM)

TAG:機器學習 |