一、為什麼要正則化
學習演算法,包括線性迴歸和邏輯迴歸,它們能夠有效地解決許多問題,但是當將它們應用到某些特定的機器學習應用時,會遇到過擬合(over-fitting)的問題,可能會導致它們效果很差。正則化(regularization)技術,可以改善或者減少過度擬合問題,進而增強泛化能力。泛化誤差(generalization error)= 測試誤差(test error),其實就是使用訓練資料訓練的模型在測試集上的表現(或說效能 performance)好不好。
如果我們有非常多的特徵,我們通過學習得到的假設可能能夠非常好地適應訓練集(代價函式可能幾乎為0),但是可能會不能推廣到新的資料。
下圖是一個迴歸問題的例子:
第一個模型是一個線性模型,欠擬合,不能很好地適應我們的訓練集;第三個模型是一個四次方的模型,過於強調擬合原始資料,而丟失了演算法的本質:預測新資料。我們可以看出,若給出一個新的值使之預測,它將表現的很差,是過擬合,雖然能非常好地適應我們的訓練集但在新輸入變數進行預測時可能會效果不好;而中間的模型似乎最合適。
分類問題中也存在這樣的問題:
就以多項式理解,$x$的次數越高,擬合的越好,但相應的預測的能力就可能變差。
如果我們發現了過擬合問題,可以進行以下處理:
1、丟棄一些不能幫助我們正確預測的特徵。可以是手工選擇保留哪些特徵,或者使用一些模型選擇的演算法來幫忙(例如PCA)。
2、正則化。 保留所有的特徵,但是減少引數的大小(magnitude)。
二、正則化的定義
正則化的英文 Regularizaiton-Regular-Regularize,直譯應該是"規則化",本質其實很簡單,就是給模型加一些規則限制,約束要優化引數,目的是防止過擬合。其中最常見的規則限制就是新增先驗約束,常用的有L1範數和L2範數,其中L1相當於新增Laplace先驗,L相當於新增Gaussian先驗。
三、L1正則和L2正則
在介紹L1範數、L2範數之前,我們先介紹以下LP範數。
3.1 範數
範數簡單可以理解為用來表徵向量空間中的距離,而距離的定義很抽象,只要滿足非負、自反、三角不等式就可以稱之為距離。
LP範數不是一個範數,而是一組範數,其定義如下:
$\left \| x \right \|_{p}=(\sum_{i}^{n}x_{i}^{p})^{\frac{1}{p}}$
$\left \| x \right \|_{p}=(\sum_{i}^{n}x_{i}^{p})^{\frac{1}{p}}$
$p$的範圍是[1,∞)[1,∞)。$p$在(0,1)(0,1)範圍內定義的並不是範數,因為違反了三角不等式。
根據$p$的變化,範數也有著不同的變化,借用一個經典的有關P範數的變化圖如下:
上圖表示了$p$從0到正無窮變化時,單位球(unit ball)的變化情況。在P範數下定義的單位球都是凸集,但是當0<?<10<p<1時,在該定義下的unit ball並不是凸集(這個我們之前提到,當0<?<10<p<1時並不是範數)。
- L1範數
當p=1時,是L1範數,其表示某個向量中所有元素絕對值的和。
- L2範數
當p=2時,是L2範數, 表示某個向量中所有元素平方和再開根, 也就是歐幾里得距離公式。
3.2 L2 正則化直觀解釋
L2正則化公式非常簡單,直接在原來的損失函式基礎上加上權重引數的平方和:
其中,$E_{in}$是未包含正則化項的訓練樣本誤差,$\lambda$是正則化引數,可調。但是正則化項是如何推導的?接下來,我將詳細介紹其中的物理意義。
我們知道,正則化的目的是限制引數過多或者過大,避免模型更加複雜。例如,使用多項式模型,如果使用 10 階多項式,模型可能過於複雜,容易發生過擬合。所以,為了防止過擬合,我們可以將其高階部分的權重$w$限制為 0,這樣,就相當於從高階的形式轉換為低階。
為了達到這一目的,最直觀的方法就是限制$w$的個數,但是這類條件屬於 NP-hard 問題,求解非常困難。所以,一般的做法是尋找更寬鬆的限定條件:
$\sum_{j}^{}w_{j}^{2}\leq C$
上式是對$w$的平方和做數值上界限定,即所有$w$的平方和不超過引數$C$。這時候,我們的目標就轉換為:最小化訓練樣本誤差$E_{in}$,但是要遵循$w$平方和小於$C$的條件。
下面,我用一張圖來說明如何在限定條件下,對$E_{in}$進行最小化的優化。
如上圖所示,藍色橢圓區域是最小化$E_{in}$區域,紅色圓圈是$w$的限定條件區域。在沒有限定條件的情況下,一般使用梯度下降演算法,在藍色橢圓區域內會一直沿著$w$梯度的反方向前進,直到找到全域性最優值 wlin。例如空間中有一點$w$(圖中紫色點),此時$w$會沿著 -∇Ein 的方向移動,如圖中藍色箭頭所示。但是,由於存在限定條件,$w$不能離開紅色圓形區域,最多隻能位於圓上邊緣位置,沿著切線方向。$w$的方向如圖中紅色箭頭所示。
那麼問題來了,存在限定條件,$w$最終會在什麼位置取得最優解呢?也就是說在滿足限定條件的基礎上,儘量讓$E_{in}$最小。
我們來看,$w$是沿著圓的切線方向運動,如上圖綠色箭頭所示。運動方向與$w$的方向(紅色箭頭方向)垂直。運動過程中,根據向量知識,只要 -∇Ein 與執行方向有夾角,不垂直,則表明$-\triangledown E_{in}$仍會在$w$切線方向上產生分量,那麼$w$就會繼續運動,尋找下一步最優解。只有當$-\triangledown E_{in}$與$w$的切線方向垂直時,$-\triangledown E_{in}$在$w$的切線方向才沒有分量,這時候$w$才會停止更新,到達最接近$wlin$的位置,且同時滿足限定條件。
$-\triangledown E_{in}$與$w$的切線方向垂直,即$-\triangledown E_{in}$與$w$的方向平行。如上圖所示,藍色箭頭和紅色箭頭互相平行。這樣,根據平行關係得到:
$-\triangledown E_{in}+\lambda w=0$
移項,得:
$\triangledown E_{in}+\lambda w=0$
這樣,我們就把優化目標和限定條件整合在一個式子中了。也就是說只要在優化$E_{in}$的過程中滿足上式,就能實現正則化目標。
接下來,重點來了!根據最優化演算法的思想:梯度為 0 的時候,函式取得最優值。已知$-\triangledown E_{in}$是$E_{in}$的梯度,觀察上式,λw 是否也能看成是某個表示式的梯度呢?
當然可以!$\lambda w$可以看成是$\frac{1}{2}\lambda^{2} w$的梯度:
$\frac{\partial }{\partial w}(\frac{1}{2}\lambda w^{2})=\lambda w$
這樣,我們根據平行關係求得的公式,構造一個新的損失函式:
$E_{aug}=E_{in}+\frac{\lambda }{2}w^{2}$
之所以這樣定義,是因為對$E_{aug}$求導,正好得到上面所求的平行關係式。上式中等式右邊第二項就是L2正則化項。
這樣, 我們從影像化的角度,分析了L2正則化的物理意義,解釋了帶L2正則化項的損失函式是如何推導而來的。
3.3 L1 正則化直觀解釋
L1正則化公式也很簡單,直接在原來的損失函式基礎上加上權重引數的絕對值:
$L=E_{in}+\lambda \sum_{j}^{}\left |w_{j} \right |$
仍然用一張圖來說明如何在L1正則化下,對$E_{in}$進行最小化的優化。
$E_{in}$優化演算法不變,L1正則化限定了$w$的有效區域是一個正方形,且滿足 |w| < C。空間中的點$w$沿著$-\triangledown E_{in}$的方向移動。但是,$w$不能離開紅色正方形區域,最多隻能位於正方形邊緣位置。其推導過程與L2類似,此處不再贅述。
3.4 L1、L2正則的區別
引入PRML一個經典的圖來說明L1和L2的區別,如下圖所示:
- L1範數相當於加入了一個Laplacean先驗;
- L2範數相當於加入了一個Gaussian先驗。
如下圖所示:
總結
1、新增正則化相當於引數的解空間新增了約束,限制了模型的複雜度;正則化引數 λ越大,約束越嚴格,太大容易產生欠擬合。正則化引數 λ越小,約束寬鬆,太小起不到約束作用,容易產生過擬合。
2、L1正則化的形式是新增引數的絕對值之和作為結構風險項,L2正則化的形式新增引數的平方和作為結構風險項。
3、稀疏性:L1正則化鼓勵產生稀疏的權重,即使得一部分權重為0,用於特徵選擇;L2鼓勵產生小而分散的權重,鼓勵讓模型做決策的時候考慮更多的特徵,而不是僅僅依賴強依賴某幾個特徵,可以增強模型的泛化能力,防止過擬合。 稀疏的解除了計算量上的好處之外,更重要的是更具有“可解釋性”。如果不是為了進行特徵選擇,一般使用L2正則化模型效果更好。
4、計算效率:L1-正則沒有一個解析解(analytical solution),但是L2正則有,這使得L2正則可以被高效的計算。可是,L1正則的解有稀疏的屬性,它可以和稀疏演算法一起用,這可以是計算更加高效。
5、魯棒性:概括起來就是L1對異常點不太敏感,而L2則會對異常點存在放大效果。最小絕對值偏差的方法應用領域很廣(L1-norm),相比最小均方的方法,它的魯棒性更好,LAD能對資料中的異常點有很好的抗干擾能力,異常點可以安全的和高效的忽略,這對研究幫助很大。如果異常值對研究很重要,最小均方誤差則是更好的選擇。對於L2-norm,由於是均方誤差,如果誤差>1的話,那麼平方後,相比L-norm而言,誤差就會被放大很多。因此模型會對樣例更敏感。如果樣例是一個異常值,模型會調整最小化異常值的情況,以犧牲其它更一般樣例為代價,因為相比單個異常樣例,那些一般的樣例會得到更小的損失誤差。
6、計算效率:L1-norm沒有一個解析解(analytical solution),但是L2-nom有,這使得L2-norm可以被高效的計算。可是,L1-norm的解有稀疏的屬性,它可以和稀疏演算法一起用,這可以是計算更加高效。
四、其它正則化方法
除了加一個懲罰項,其實正則化還有多種多樣的方法,但是總體的思想史一樣的,就是想辦法使得我們的模型不要那麼複雜。下面簡單介紹兩種方法:
4.1 Dropout
Dropout是深度學習中經常採用的一種正則化方法。它的做法可以簡單的理解為在DNNs訓練的過程中以概率?p丟棄部分神經元,即使得被丟棄的神經元輸出為0。Dropout可以例項化的表示為下圖:
我們可以從兩個方面去直觀地理解Dropout的正則化效果:
- 在Dropout每一輪訓練過程中隨機丟失神經元的操作相當於多個DNNs進行取平均,因此用於預測時具有vote的效果。
- 減少神經元之間複雜的共適應性。當隱藏層神經元被隨機刪除之後,使得全連線網路具有了一定的稀疏化,從而有效地減輕了不同特徵的協同效應。也就是說,有些特徵可能會依賴於固定關係的隱含節點的共同作用,而通過Dropout的話,就有效地組織了某些特徵在其他特徵存在下才有效果的情況,增加了神經網路的魯棒性。
4.2 Batch Normalization
批規範化(Batch Normalization)嚴格意義上講屬於歸一化手段,主要用於加速網路的收斂,但也具有一定程度的正則化效果。
這裡借鑑下魏秀參博士的知乎回答中對covariate shift的解釋(這裡)。
注以下內容引自魏秀參博士的知乎回答:
大家都知道在統計機器學習中的一個經典假設是“源空間(source domain)和目標空間(target domain)的資料分佈(distribution)是一致的”。如果不一致,那麼就出現了新的機器學習問題,如transfer learning/domain adaptation等。而covariate shift就是分佈不一致假設之下的一個分支問題,它是指源空間和目標空間的條件概率是一致的,但是其邊緣概率不同。大家細想便會發現,的確,對於神經網路的各層輸出,由於它們經過了層內操作作用,其分佈顯然與各層對應的輸入訊號分佈不同,而且差異會隨著網路深度增大而增大,可是它們所能“指示”的樣本標記(label)仍然是不變的,這便符合了covariate shift的定義。
BN的基本思想其實相當直觀,因為神經網路在做非線性變換前的啟用輸入值隨著網路深度加深,其分佈逐漸發生偏移或者變動(即上述的covariate shift)。之所以訓練收斂慢,一般是整體分佈逐漸往非線性函式的取值區間的上下限兩端靠近,所以這導致後向傳播時低層神經網路的梯度消失,這是訓練深層神經網路收斂越來越慢的本質原因。而BN就是通過一定的規範化手段,把每層神經網路任意神經元這個輸入值的分佈強行拉回到均值為0方差為1的標準正態分佈,避免因為啟用函式導致的梯度彌散問題。所以與其說BN的作用是緩解covariate shift,倒不如說BN可緩解梯度彌散問題。
4.3 early-stopping
這個很簡單,說白了就是不要訓練那麼久了,見好就收。這裡不贅述,詳見另外一篇部落格《深度學習中過擬合、欠擬合問題及解決方案》。
參考:
https://www.cnblogs.com/weststar/p/11662760.html
https://www.cnblogs.com/maybe2030/p/9231231.html#_label3