1. 程式人生 > >史上最簡單易懂、全面詳細的“正則化”教程

史上最簡單易懂、全面詳細的“正則化”教程

1537250305768859.png

 

1537520241840992.png

進入正文

全文摘要

在機器學習和深度學習中,最艱難的問題就是如何面對模型的過擬合問題,處理過擬合的方式手段多樣,我們常常聽見的方法是“正則化”,但是,很多的資料對於正則化的介紹要麼是單調片面、要麼是晦澀難懂,本文汲取眾家之長,由淺入深,徹底搞明白正則化的原理和應用。

本文偏長,閱讀全文約20分鐘。

一、模型過擬合

1.1 什麼是模型的過擬合

1.  1訓練的模型過擬合,根據方差+偏差的分解,則說明“方差”很大,直觀的含義就是,模型的穩定性不強,表現在某一個特徵輸入資料“稍有波動”,模型的效果會變差。因為在測試集上面的很多資料都是沒有見過的,相比於訓練資料,難免會有差別,故而如果用一個過擬合的模型,在測試集上面的表現自然不好。

      我們稱這樣的模型“太過複雜”了(注意是引號),複雜的體現在於,模型中求出的引數在訓練的時候為了“迎合”誤差的減少,很多引數很大(過分強調一些特徵),很多引數有很小(一些微小的特徵),這樣就會導致模型會有一種“偏愛”。自然,因為模型的這點偏愛,導致的結果就是,測試集的資料稍有波動,表現就不好了,即所謂的過擬合。與其說是“複雜”,倒不如說是“畸形”更恰當。

 我們希望模型“簡單”

     可以用下面這個例子去類比模型所謂的“簡單”和“複雜”。比如我們可以將某一個人類比成一個模型,我們經常說這個人心思很“複雜”,稍微點點事情不滿意,就會發脾氣(類比過擬合),在別人看來,他的心思是真的複雜,這件事情只不過有一點點不滿意(理解為測試樣本一點點的波動性),真的搞不懂他心裡怎麼想的(這難道不是“複雜”麼)。複雜的原因莫過於他過分重視一些東西,即所謂的想不開,重視的東西不能有任何偏差。而另外一些人,我們常說她們心思很“簡單”,因為他們遇見一些不滿意的事情,依然很淡定的對待,和平時沒什麼兩樣,心裡沒想那麼多(這不是很簡單麼),直白的說,就是這個人對一切事物都

1.2 過擬合的解決辦法

   自然,我們希望遇到更“簡單”的模型,簡單的方式有以下幾種:

1、獲取更多的樣本

2、丟棄一部分特徵,增強模型的容錯能力(比如PCA降維,神經網路的dropout機制)

3、不丟其特徵,保留所有的特徵,但是減少引數的大小(magnitude)。確保所有的特徵對於預測都有所貢獻,而不是“偏愛”某幾種特徵。

 

當每一個特徵Xi對y都有貢獻的時候,這樣的模型是比較健康穩定的,可以良好地工作,

這就是正則化的目的,可以用來解決過擬合

正則化策略:以增大訓練誤差為代價,來減少測試誤差(如果在訓練誤差上很小,可能出現過擬合的情況);

 

注意:這裡有一個理解層面的不同。

1、有的將L1,L2稱之為正則化,因為這是最普遍的用法,此正則化減少模型的“複雜度”是通過讓模型的引數不那麼“畸形”實現的,並沒有減少引數的個數。

2、有的將dropout技術也稱之為正則化,因為它通過丟棄引數,也達到了減輕模型“複雜度”的目的。

3、有的甚至更加籠統,只要是能夠較輕模型“過擬合”的技術,全部稱之為“正則化”畢竟正則化是以增大偏差為代價,減少模型的方差。所以只要是能夠防止過擬合的手段,都可以稱之為正則化,包括L1,L2(範數約束),dropout、 drop connect、早停法、資料增強與擴充等等都統稱正則法。

二、L1、L2正則化

L1、L2正則化的本質是範數約束,目的是為了“懲罰”,懲罰什麼呢?後面會回答。

2.1 L2正則化

   L2 正則化公式非常簡單,直接在原來的損失函式基礎上加上權重引數的平方和:

1.png

其中,cost(f-y) 是未包含正則化項的訓練樣本誤差,λ 是正則化引數,是可以調節的。但是正則化項是如何推導的?接下來,我將詳細介紹其中的物理意義。

   我們知道,正則化的目的是限制引數過多或者過大,避免模型更加複雜。例如,使用多項式模型,如果使用 10 階多項式,模型可能過於複雜,容易發生過擬合。所以,為了防止過擬合,我們可以將其高階部分的權重 w 限制為 0,這樣,就相當於從高階的形式轉換為低階。

   為了達到這一目的,最直觀的方法就是限制 w 的個數,但是這類條件屬於 NP-hard 問題,求解非常困難。所以,只能選擇另一個方法,限制引數w的大小,一般的做法是尋找更寬鬆的限定條件:

2.png

   上式是對 w 的平方和做數值上界限定,即所有w 的平方和不超過引數 C。這時候,我們的目標就轉換為:最小化訓練樣本誤差 cost(f-y),但是要遵循 w 平方和小於 C 的條件。也可以理解為,在所有引數的平方和不超過C的前提條件下,還使得樣本的訓練誤差最小。

 

 下面,我用一張圖來說明如何在限定條件下,對 cost(f-y) 進行最小化的優化。

3.png

注意:因為圖片是來自於一位網友的部落格,所以圖中的字母和文中使用的稍有區別,這個地方僅有兩個引數w1,w2,所以正則化約束為,

4.png

在影象上展示就是一個圓而cost(f-y)=f(x1,x2,w1,w2)-y

 

當然,這裡的x1、x2、w1、w2之間的關係的可能是一個較為複雜的函式關係,注意,這裡的藍色範圍本質上是一個三維圖的俯檢視範圍,因為X軸為w1,Y軸為w2,Z軸為f(x1,x2,w1,w2)。本質上,

cost(f-y)=f(x1,x2,w1,w2)-yregularity=w12+w22

都是引數w1、w2的函式

    如上圖所示,藍色橢圓區域是最小化 cost(f-y) 區域,紅色圓圈是 引數w 的限定條件區域。在沒有限定條件的情況下,一般使用梯度下降演算法,在藍色橢圓區域內會一直沿著 w 梯度的反方向前進,直到找到全域性最優值即可。例如空間中有一點 w(圖中紫色點),此時 w 會沿著 -∇Ein 的方向移動,如圖中藍色箭頭(梯度方向)所示。但是,由於存在限定條件,w 不能離開紅色圓形區域,最多隻能位於圓上邊緣位置,沿著切線方向。w 的方向如圖中紅色箭頭所示。

 那麼問題來了,存在限定條件,w 最終會在什麼位置取得最優解呢?也就是說在滿足限定條件的基礎上,儘量讓 cost(f-y) 最小。

5.png

 

從上面可以得知,如果不考慮正則化範圍,運動的方向為“藍色箭頭”,但根據向量的分解,分解為紅色箭頭(逐漸朝正則化範圍邊界移動)和綠色剪頭,那什麼時候停止呢?因為有紅色箭頭分量的存在,遲早會到達邊界,當在正則化項的邊界相切的時候,就停止更新引數,我們經常看見這樣一句話:代價函式在“模型代價”和“正則化約束”兩項規則的綜合作用下,正則化後的模型引數應該收斂在“誤差等值線”與“正則項等值線”的相切的位置。下面會解釋它的含義。

  6.png

如上圖所示:

  紅色表示的是“正則項等值線”,藍色的表示的是cost(f-y)的等值線,不一定是圓,這裡用圓表示。在沒有正則化項時,黑色箭頭是梯度的下降方向,在有了正則化項以後,相當於給運動的箭頭施加了約束,一方面,我不能逃離紅色箭頭的約束範圍,另一方面,又要保證箭頭要向著梯度減小的方向運動,故而運動的曲線是圖中的綠色剪頭。當紅色箭頭和綠色剪頭相切的時候,不能夠再繼續向下運動了,因為它就逃離了紅色範圍的約束。

  現在可以解釋正則化“懲罰”二字的含義了。它懲罰的是總的“成本函式”,因為從圖中可以看出,黑色箭頭到達終點後的“代價函式”很明顯是低於綠色剪頭所到達的終點處的代價函式,即增加正則化項之後,代價適當增大了,即模型收到了“懲罰”。根據方差-偏差分解原則,偏差增大,方差會減小,方差減小,防止過擬合的能力增強。

注意:因為L2正則化會讓引數趨於“平滑”,所以,有時候也說,懲罰大的引數,即讓大的引數變小)

2.2 L1正則化

   L1正則化的原理與L2正則化類似,它的定義如下:

7.png

根據L2的定義方式,則有,此處依然以兩個引數w1,w2為例,則有

8.png

 |w1|+|w2|<=C  它的圖形為一個正方形,如下所示:

9.png

 

Cost(f-y)優化演算法不變,L1 正則化限定了 w 的有效區域是一個正方形,且滿足 |w| < C。空間中的點 w 沿著 cost(f-y)的方向移動。但是,與此同時w 不能離開紅色正方形區域,最多隻能位於正方形邊緣位置。其推導過程與 L2 類似,就不再重複說明了。

三、正則化的數學理解

3.1 L2正則化的數學推導

   我們前面從圖形的角度,用了一些形象的描述去解釋了L1 L2正則化的原理,那麼怎麼從數學角度的層面去解釋為什麼正則化可以解決過擬合呢?  

 下面以L2正則化為例:

成本函式為:

11.png

在上面的式子中,m表示的的是樣本數,n表示的是引數個數,不能混淆。從這裡可以看出,此時的成本函式Cost不再僅僅由模型預測值和真實值之間的差別決定了,還可引數w的取值有關。後面的正則化項是為了施加約束,現在要達到減小成本函式這一目的,就不能夠隨意的取w引數值了,為什麼?

   比如,某一很大的w確實能夠使得成本函式前面的部分的取值很小,但是因為wi2會很大,而最終組合起來的成本函式並不小,反而很大。這樣,要使得總的成本函式很小,引數w就不能隨意取多大的值了,不讓w取太大的值,這不就是正則化的一種約束嗎?需要約束w本身的大小,與此同時還要使得原來部分的誤差減小,這就是L2達到的效果,這其實也就是L2正則項為什麼使得引數w相對較平滑(即引數w大小相差不會太大),後面還會解釋“平滑”二字的原因。

比如對於引數wi,求偏導數,則有如下:

22.png

     在每一次迭代的過程中,都會將引數wi收縮一點點,收縮的過程,不就是使得引數更加“平滑”嗎?為什麼要對wi進行收縮呢,因為成本cost與wi2是成正比的,如果是wi不縮小,成本就不會減小,所以要不斷試圖減小引數wi的值。

——迭代尋找最小值點的過程可以看成是“帶有約束條件的非線性約束問題”

 

四 、平順性和稀疏性

4.1 個引數w的解釋

   我們先從一個引數w的例子看起。橫座標為w

假設費用函式 L 與某個引數 w 的關係如圖所示:


則最優的 w 在綠點處,w 非零。

現在施加 L2 regularization,新的代價函式如圖中藍線所示:

最優的 w 在黃點處,w 的絕對值減小了,但依然非零。

而如果施加 L1 regularization,則新的代價函式如圖中粉線所示:

55.jpg

最優的 w 就變成了 0。這裡利用的就是絕對值函式的尖峰(形象理解很重要)。

兩種 regularization 能不能把最優的w 變成 0,取決於原先的費用函式在 0 點處的導數。
如果本來導數不為 0,那麼施加 L2 regularization 後導數依然不為 0,最優的 w 也不會變成 0。
而施加 L1 regularization 時,只要regularization 項的係數 C 大於原先費用函式在0 點處的導數的絕對值,x = 0 就會變成一個極小值點。

上面只分析了一個引數 w。事實上 L1 regularization 會使得許多引數的最優值變成 0,這樣模型就稀疏了。

 

4.2 兩個引數w1 w2的解釋

4.2

下面討論兩個引數w1和w2的時候。

 

 (這個圖形實際上一個俯檢視哦)

以二維情況討論,上圖左邊是 L2 正則化,右邊是 L1 正則化。從另一個方面來看,滿足正則化條件,實際上是求解藍色區域與黃色區域的交點,即同時滿足限定條件和 cost(f-y) 最小化。對於 L2 來說,限定區域是圓,這樣,得到的解 w1 或 w2 為 0 的概率很小,很大概率是非零的。(為什麼?後面會講)

 

   對於 L1 來說,限定區域是正方形,方形與藍色區域相交的交點是頂點的概率很大,這從視覺和常識上來看是很容易理解的。也就是說,方形的凸點會更接近cost(f-y)最優解對應的位置,而凸點處必有 w1 w2 0,因為每一個尖尖的位置是在wi的座標軸上。這樣,得到的解 w1 w2 為零的概率就很大了。所以,L1 正則化的解具有稀疏性。

 

擴充套件到高維,同樣的道理,L2 的限定區域是平滑的,與中心點等距;所以每一個平滑的位置和cost(f-y)相交的機會是差不多大的,而 L1 的限定區域是包含很多個凸點的,尖銳的。很明顯,這些凸出去的尖尖肯定更加接近cost(f-y)的最優點。而在這些凸點上,很多 wi 為 0。

這就是關於 L1 更容易得到稀疏解的原因。

 

我們可以這樣理解,L2正則化是一個規則的平滑的圖形,它在向cost(f-y)移動的過程中,任何一個地方靠近最優點的概率差不多,因為他很平滑,但是L1正則化有非常多的“尖尖”,在向cost(f-y)移動的過程中,很大概率上是“尖尖”部分靠近最優點,而尖尖部分就是wi為0的時候。

 

本節總結

總結:正則化減少模型的複雜度,L1減少了引數的數量(輕量化模型——稀疏解),因為有很多的0引數,L2減少了引數的差距,它使得引數更“平順,平滑”。

L2正則化使用得更多,也是sklearn預設的正則化方式。

L1正則化主要有以下幾個用途:

(1)   特徵選擇。L1會讓引數裡面元素為0的儘量多,因此可以排除那些對模型結果沒什麼影響的特徵,從而簡化問題,降低模型複雜度。所以L1減輕過擬合實際上是較少特徵數量。

(2)   可解釋性。模型引數向量係數化之後,只會留下那些重要的特徵,這樣就很容易解釋模型結果與哪些因素之間的因果關係,具備更加清楚的解釋性。

 

五、正則化與先驗資訊

5.1 二者聯絡

正則化與“先驗資訊”到底又是什麼關係呢?

 

正則化引數等價於對引數引入先驗分佈(貝葉斯派的觀點),使得模型複雜度 變小(縮小解空間),增強模型的魯棒性和對噪聲的容忍能力(泛化能力)。整個最優化問題從貝葉斯觀點來看是一種貝葉斯最大後驗估計,其中 正則化項 對應後驗估計中的先驗資訊,損失函式對應後驗估計中的似然函式,兩者的乘積即對應貝葉斯最大後驗估計的形式。其中:

L1正則化等於是引入了拉普拉斯先驗

L2正則化等於是引入了高斯先驗分佈

 

這裡不具體去解釋了,可以查閱相關文件

Next

六、正則化係數λ的影響

6.1 係數λ

正則化是結構風險最小化的一種策略實現,能夠有效降低過擬合。損失函式實際上包含了兩個方面:一個是訓練樣本誤差。一個是正則化項。其中,引數 λ 起到了權衡的作用。

77.png

以L2 為例,若 λ 很小,對應上文中的 C 值就很大。這時候,圓形區域很大,能夠讓 w 更接近 cost(f-y) 最優解的位置。若 λ 近似為 0,相當於圓形區域覆蓋了最優解位置,這時候,正則化失效,容易造成過擬合。相反,若 λ 很大,對應上文中的 C 值就很小。這時候,圓形區域很小,w 離 cost(f-y) 最優解的位置較遠。w 被限制在一個很小的區域內變化,w 普遍較小且接近 0,起到了正則化的效果。但是,λ 過大容易造成欠擬合。欠擬合和過擬合是兩種對立的狀態

一句話:λ 過大容易造成欠擬合,λ 過小容易造成過擬合。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++