神經網路損失函式中的正則化項L1和L2

-牧野-發表於2018-05-07
神經網路中損失函式後一般會加一個額外的正則項L1或L2,也成為L1範數和L2範數。正則項可以看做是損失函式的懲罰項,用來對損失函式中的係數做一些限制。



正則化描述:

L1正則化是指權值向量w中各個元素的絕對值之和;

L2正則化是指權值向量w中各個元素的平方和然後再求平方根;

一般都會在正則化項之前新增一個係數,這個係數需要使用者設定,係數越大,正則化作用越明顯。



正則化作用:

L1正則化可以產生稀疏權值矩陣,即產生一個稀疏模型,可以用於特徵選擇,一定程度上,L1也可以防止過擬合;
L2正則化可以防止模型過擬合(overfitting);



何為稀疏矩陣

稀疏矩陣指的是很多元素為0,只有少數元素是非零值的矩陣。

神經網路中輸入的特徵數量是龐大的,如何選取有效的特徵進行分類是神經網路的重要任務之一,如果神經網路是一個稀疏模型,表示只有少數有效的特徵(係數非0)可以通過網路,絕大多數特徵會被濾除(係數為0),這些被濾除的特徵就是對模型沒有貢獻的“無關”特徵,而少數係數是非0值的特徵是我們需要額外關注的有效特徵。也就是說,稀疏矩陣可以用於特徵選擇。


L1正則化是怎麼做到產生稀疏模型的?

假設有如下帶L1正則化的損失函式:

Loss = Loss_0 + αL1

Loss_0是原始損失函式,L1是加的正則化項,α 是正則化係數,其中 L1 是 模型中權重 w 的絕對值之和。

神經網路訓練的目標就是通過隨機梯度下降等方法找到損失函式 Loss的最小值,加了L1之後,相當於對原始Loss_0做了一個約束,即在 L1 約束下求Loss_0最小值的解

對於最簡單的情況,假設模型中只有兩個權值 w1 和 w2 ,對於梯度下降法,可以分別畫出求解 Loss_0 和 L1 過程中的等值線,如下圖:


等值線是說在等值線上任一點處(取不同的w1和w2組合),模型計算的結果都是一樣的。

圖中彩色弧線是Loss_0的等值線,黑色方框是 L1的等值線。在圖中,當Loss_0等值線與L1圖形首次相交的地方就是一個最優解,這個相交的點剛好是L1的頂點。

注意到L1函式有很多個突出的點,二維情況下有4個,維數越多頂點越多,這些突出的點會比線段上的點有更大的機率首先接觸到 Loss_0的等值線,而這些頂點正好對應有很多權值為0的矩陣, 即稀疏矩陣,這也就是為什麼L1正則化可以用來產生稀疏矩陣進而用來進行特徵選擇的原因。


對於L1正則化前的係數α,是用來控制L1圖形的大小,α越大,L1中各個係數就相對越小(因為優化目標之一是α×L1的值趨近於0。α大,L1係數取值就會小),L1的圖形就越小; α越小,L1中各個係數就相對越大,L1的圖形就越大。



L2正則化是怎麼做到防止模型過擬合的?

仍以最簡單的模型,只有兩個權重w1 和 w2為例,Loss_0和L2分別對應的等值線形狀如下圖:


由於L2是w1和w2平方和再開方,所以L2的圖形是一個圓。圓形相對方形來說沒有頂點,Loss_0 和 L2圖形相交使得 w1或者w2等於的概率大大減小,所以L2正則化項不適合產生稀疏矩陣,不適合用來選擇特徵。

相對來說,模型中所有矩陣係數都比較小的模型具有更強的抗干擾能力,也就是說可以避免過擬合。對於這種小系數的模型,特徵會乘以很小的係數,使得特徵的波動被壓縮,所以泛化能力更好。

L2正則化項的公式是所有權重係數平方之後再開方,所以在每次迭代過程中, 都會使得權重係數在滿足最小化Loss_0的基礎上,一步一步使得權重係數w1和w2趨向於0,最終得到權重係數很小的矩陣模型,達到防止過擬合的作用。

對於L1正則化項,如果α係數取很大,也會得到係數極小的最優解,這時的L1也具有防止過擬合的作用。


L1和L2中的α係數的作用是類似的,α係數越大,正則化作用越明顯(但同時也可能意味著模型越難以收斂),從等值圖上直觀看就是L圖形越小,對應矩陣係數越小。


相關文章