天天看點

正則化_機器學習之正則化

正則化的概念,相信對于熟悉機器學習的同學來說并不陌生。

前不久我參加了一次面試,過程中被面試官問到了L1和L2正則項,卻苦于隻記得大概含義,卻說不出更具體的例子,回答得并不是很好。面試結束之後我深刻反思,痛定思痛,于是有了對正則化示例的梳理,就是為了加深自己的印象,以免下次再被問到。

什麼是正則化?

機器學習模型中幾乎都可以看到損失函數後面會添加一個額外項,常用的額外項一般有兩種,即 L1正則化 和 L2正則化 ,或者稱作 L1範數 和 L2範數 。

在機器學習算法的訓練過程中,經常會遇到過拟合的問題。過拟合即學習模型對訓練集學習的“太好”後,可能把訓練集本身的一些特點當做所有潛在樣本都會具有的一般性質,例如撿到一片樹葉是鋸齒狀就以為所有的樹葉都是鋸齒狀。這樣就會導緻模型的泛化性能下降。

解決過拟合的方法之一,就是為模型添加正則項。L1正則化和L2正則化可以看做是損失函數(目标函數)的懲罰項。所謂懲罰是指對損失函數中的某些參數做一些限制,以中和模型的複雜程度,避免模型過拟合。

機器學習的任務就是要通過一些方法(比如梯度下降)求出損失函數的最小值。以線性回歸模型為例,使用L1正則化的模型叫做Lasso回歸,使用L2正則化的模型叫做Ridge回歸(嶺回歸):

優化目标:

min 

正則化_機器學習之正則化

                        式子(1)

加上L1正則項(lasso回歸):

min 

正則化_機器學習之正則化

     式子(2)

加上L2正則項(嶺回歸):

min 

正則化_機器學習之正則化

      式子(3)

正則化就是為了使模型結構風險最小化,即在經驗風險最小化的基礎上(也就是訓練誤差最小化),盡可能采用簡單的模型,以此提高泛化預測精度。

對于梯度下降法,求解優化目标函數的過程可以畫出等值線。

假設X為一個二維樣本,那麼要求解的參數

正則化_機器學習之正則化

也是二維。如下圖:

正則化_機器學習之正則化

原函數等高線

L1和L2加入後的函數圖像:

正則化_機器學習之正則化

加入L1和L2正則的等高線

正則化_機器學習之正則化

帶L1正則化的目标函數求解

從上圖中我們可以看出:

如果不加L1和L2正則化,對于線性回歸這種目标函數為凸函數的情況,最終的結果就是最裡邊的紫色的小圈圈等高線上的點。

當加入L1正則化的時候,我們先畫出 

正則化_機器學習之正則化

 的圖像,也就是一個菱形,代表這些曲線上的點算出來的範數

正則化_機器學習之正則化

 都為F。那我們現在的目标是不僅是原曲線算得值要小(越來越接近中心的紫色圓圈),還要使得菱形越小越好(F越小越好)。要和原函數一樣的話,與紫色圓圈相交的那個菱形就會很大,是以我們要取到一個最優的值。

那麼如何求值呢?

首先,以同一條原曲線目标等高線來說,現在以最外圍的紅色等高線為

例,我們看到,對于紅色曲線上的每個點都可以做一個菱形,根據

上圖可知,當這個菱形與某條等高線相切(僅有一個交點)的時候,

這個菱形最小,上圖相割對比較大的兩個菱形對應的L1範數更大。

換言之,能使得在相同的 

正則化_機器學習之正則化

 下,由于相切時的 

正則化_機器學習之正則化

 小,即 

正則化_機器學習之正則化

 小,

是以能夠使得 

正則化_機器學習之正則化

 更小。

其次,我們可以看出,最終加入L1範數得到的解,一定是某個菱形和某條原函數等高線的切點。

我們經過觀察可以看到,幾乎對于很多原函數等高曲線,和某個菱形相交的時候非常容易相交在坐标軸(比如上圖),也就是說最終的結果,解的某些次元可能是0,比如上圖最終解是 

正則化_機器學習之正則化

,這也就是我們所說的L1更容易得到稀疏解(解向量中0比較多)的原因。

當加入L2正則化的時候,分析和L1正則化是類似的,也就是說我們僅僅是從菱形變成了圓形而已,同樣還是求原曲線和圓形的切點作為最終解。當然與L1範數比,求得的L2範數從圖上來看,不容易交在坐标軸上,但是仍然比較靠近坐标軸。是以這也就是我們老說的,L2範數能讓解比較小(靠近0),但是比較平滑(不等于0)。

綜上所述,我們可以看見,加入正則項,在最小化經驗誤差的情況下,可以讓我們選擇更簡單(趨向于0)的解。

是以,加正則化項就是結構風險最小化的一種實作。

小結

正則化降低過拟合原因在于,正則化是結構風險最小化的一種政策實作。

給損失函數f加上正則化項,能使得新優化目标函數h = f+normal,需要在f和normal中做一個權衡,如果還像原來隻優化f的情況下,那可能得到的一組解比較複雜,使得正則項normal比較大,那麼h就不是最優的,是以可以看出加正則項能讓解更加簡單,符合 奧卡姆剃刀理論(簡單有效原理),同時也比較符合在偏差和方差(方差表示模型的複雜度)分析中,通過降低模型複雜度,得到更小的泛化誤差,降低過拟合程度。

L1正則化就是在損失函數後面所加正則項為L1範數,加上L1範數容易得到稀疏解(0比較多)。L2正則化就是loss function後邊所加正則項為L2範數的平方,加上L2正則相比于L1正則來說,得到的解比較平滑(不是稀疏),但是同樣能夠保證解中接近于0(但不是等于0,是以相對平滑)的次元比較多,降低模型的複雜度。

————我是分割線————

今天的分享就到此結束啦,如果喜歡我們的分享,歡迎大家點贊、在看、轉發,後續我們會不定期更新更多相關的内容,感興趣的小夥伴請關注【資料圓桌】,和我們一起進步和成長~

正則化_機器學習之正則化