L0正則化:L0是指向量中非0的個數。如果我們用L0范數來規則化一個參數矩陣W的話,就是希望W的大部分元素都是0。換句話說,讓參數W是稀疏的。但不幸的是,L0范數的最優化問題是一個NP hard問題,而且理論證明,L1范數是L0范數的最優凸近似,因此通常使用L1范數來代替。
L1正則化:L1范數是指向向量中各個元素絕對值之和,也有個美稱是“稀疏規則算子”(Lasso regularization)。
L2范數:也叫“嶺回歸”(Ridge Regression),也叫它“權值衰減weight decay”
但與L1范數不一樣的是,它不會是每個元素為0,而只是接近於0。L2范數即是歐式距離。
正則化的作用
正則化的主要作用是防止過擬合,對模型添加正則化項可以限制模型的復雜度,使得模型在復雜度和性能達到平衡。
常用的正則化方法有L1正則化和L2正則化。L1正則化和L2正則化可以看作是損失函數的懲罰項。所謂“懲罰”就是對損失函數中的某些參數做一些限制。
L1和L2正則化的作用:
L1正則化可以產生稀疏權值矩陣,即產生一個稀疏模型,可以用於特征選擇,一定程度上,L1也可以防止過擬合。
L2正則化可以防止模型過擬合(overfitting)
L2正則化可以直觀理解為它對於大數值的權重向量進行嚴厲懲罰,傾向於更加分散的權重向量。由於輸入和權重之間的乘法操作,這樣就有一個優良的特性:使網絡更傾向於使用所有輸入特征,而不是嚴重依賴輸入特征中某些小部分特征。L2懲罰傾向於更小更分散的權重向量,這就會鼓勵分類器最終將所有維度上的特征都用起來,而不是強烈依賴其中少數幾個維度,這樣做可以提高模型的范化能力,降低過擬合的風險。
L1正則化有一個有趣的性質,他會讓權重向量在最優化的過程中變得稀疏(即非常接近0)。也就是說,使用L1正則化的神經元最后使用的是它們最重要的輸入數據的稀疏子集,同時對於噪音輸入則幾乎是不變的了,相較於L1正則化,L2正則化中的權重向量大多是分散的小數字。
在實踐中,如果不是特別關注某些明確的特征選擇,一般說來L2正則化都會比L1正則化效果好。
L1和L2正則化的原理
上面的圖,左面是L2約束下解空間的圖像,右面是L1約束下解空間的圖像。
藍色的圓圈表示損失函數的等值線。同一個圓上的損失函數值相等的,圓的半徑越大表示損失值越大,由外到內,損失函數值越來越小,中間最小。
如果沒有L1和L2正則化約束的化,w1和w2是可以任意取值的,損失函數可以優化到中心的最小值的,此時中心對應的w1和w2的取值就是模型最終求得的參數。
但是添加了L1和L2正則化約束就把解空間約束在了黃色的平面內。黃色圖像的邊緣與損失函數等值線的交點,便是滿足約束條件的損失函數最小化的模型的參數的解。由於L正則化約束的解空間是一個菱形,所以等值線與菱形端點相交的概率比與線的之間相交的概率要大很多,端點在坐標軸上,一些參數的取值便為0.L2正則化的解空間是圓形,所以等值線與圓的任何部分相交的概率都是一樣的,所以也就不會產生稀疏的參數。
但是L2為什么傾向於產生分散的參數呢?那是因為求解模型的時候要求,在約束條件滿足的情況下最小化損失函數,w的平方和也應該盡可能的小。
舉個例子:
設輸入向量x=[1, 1, 1, 1],兩個權重向量w_1=[1, 0, 0, 0],w_2=[0.25, 0.25, 0.25, 0.25]。那么w1T*x=1,w2T*x=1,兩個權重向量都得到同樣的內積,但是w1的L2懲罰是1.0,而w2的L2懲罰是0.25.因此,根據L2懲罰來看,w2更好,因為它的正則化損失更小。從直觀上來看,這是因為w2的權重值更小且更分散。所以L2正則化傾向於是特征分散,更小。
3、正則化的參數λ
我們一般會為正則化項添加一個超參數λ或a,用來平衡經驗風險和結構風險(正則項表示結構風險)。
以L2為例,若λ很小,就是說我們考慮經驗風險更多一些,對於結構風險沒有那么重視,約束條件更為寬松,這時圓形區域很大,能夠讓w更接近中心最優解的位置。若λ近似為0,相當於圓形區域覆蓋了最優解位置,這時候,正則化失效,容易造成過擬合。
相反,若λ很大,約束條件更為嚴格,對應上文中的C值就很小,這時候,圓形區域很小,w離中心最優解的位置較遠。w被限制在一個很小的區域內變化,w普遍較小且接近0,起到了正則化的效果。但是,λ過大容易造成欠擬合。欠擬合和過擬合是兩種對立的狀態。
4總結
1、添加正則化相當於參數的解空間添加了約束,限制了模型的復雜度
2、L1正則化的形式是添加參數的絕對值之和作為結構風險項,L2正則化的形式添加參數的平方和作為結構風險項
3、L1正則化鼓勵產生稀疏的權重,即使得一部分權重為0,用於特征選擇;L2鼓勵產生小而分散的權重,鼓勵讓模型做決策的時候考慮更多的特征,而不是僅僅依賴某幾個特征,可以增強模型的泛化能力,防止過擬合。
4、正則化參數λ越大,約束越嚴格,太大容易產生欠擬合。正則化參數λ越小,約束寬松,太小起不到約束作用,容易產生過擬合。
5、如果不是為了進行特征選擇,一般使用L2正則化模型效果更好。
********除此之外,正則化的方法還有很多,如下*************
1、參數范數懲罰,如上介紹
2、數據集增強
讓機器學習模型范化得更好的最好辦法是使用更多的數據進行訓練。當然,在實踐中,我們擁有的數據量是很有限的。解決這個問題的一種方法是創建假數據並添加到訓練集中。我們必須要小心,不能使用改變類別的轉換。在神經網絡的輸入層注入噪聲,也可以被看作是數據增強的一種方式。
3、噪聲魯棒性
對於某些模型而言,向輸入添加方差極小的噪聲等價於對權值施加范數懲罰。在一般情況下,噪聲注入遠比簡單地收縮參數強大,特別是噪聲被添加到隱藏單元時會更加強大。主要是將正則化的噪聲添加到權重,第二種是向輸出目標中注入噪聲。
4、多任務學習:是通過合並幾個任務中的樣例來提高范化的一種方式。當模型的一部分在任務之間共享時,模型的這一部分更多地被約束為良好的值,往往能更好地范化。
5、提前終止:當訓練有足夠的表示能力甚至會過擬合的大模型時,我們經常觀察到,訓練誤差會隨着時間的退役逐漸降低,但驗證集的誤差會再次上升。這意味着如果我們返回使驗證集誤差最低的參數設置,就可以獲得更好的模型。
6、參數綁定和參數共享:目前為止,最流行和廣泛使用的參數共享出現在應用於計算機視覺的卷積神經網絡(CNN)中。
7、稀疏表示:權重衰減直接懲罰模型參數,另一種策略是懲罰神經網絡中的激活單元,稀疏化激活單元。這種策略間接地對模型參數施加了復雜懲罰。含有隱藏層單元的模型在本質上都能變得稀疏。
8、Bagging和其他集成方法:Bagging(bootstrap aggregating)是通過結合幾個模型降低范化誤差的技術。主要想法是分別訓練幾個不同的模型,然后讓所有模型表決測試樣例的輸出。這是機器學習中常規策略的一個例子,被稱為模型平均(model averaging)。
9、dropout
10、對抗訓練:我們可以通過對抗訓練減少原有獨立同分布的測試集的錯誤率---在對抗擾動的訓練集樣本上訓練網絡。
11、切面距離、正切傳播和流行正切分類器。
參考:深度學習中的正則化簡介
https://blog.csdn.net/fengbingchun/article/details/79910284