1. 程式人生 > >NN模型設定--L1/L2正則化

NN模型設定--L1/L2正則化

正則化的理解

  規則化函式Ω有多重選擇,不同的選擇效果也不同,不過一般是模型複雜度的單調遞增函式——模型越複雜,規則化值越大。
在這裡插入圖片描述

  正則化含義中包含了權重的先驗知識,是一種對loss的懲罰項(regularization term that penalizes parameters)。
  L2正則化是權重符合正態分佈的先驗;L1則是權重符合拉普拉斯分佈的先驗(對引數引入 拉普拉斯先驗 等價於 L1正則化)。
  正則化引數等價於對引數引入先驗分佈,使得 模型複雜度 變小(縮小解空間),對於噪聲以及 outliers 的魯棒性增強(泛化能力)。整個最優化問題從貝葉斯觀點來看是一種貝葉斯最大後驗估計,其中 正則化項 對應後驗估計中的 先驗資訊,損失函式對應後驗估計中的似然函式,兩者的乘積即對應貝葉斯最大後驗估計的形式。

正則化的超引數

  這其中除了損失函式,正則項以外,還包括引數λ,稱為hyper-parameters​(超參)。該引數用於平衡損失函式和規則項的(還有一種理解是“用於權衡bias和variance”),λ越大,則正則項的作用越重要,就是說相比於擬合訓練資料,更希望模型能夠滿足約束條件Ω(w)的特性,反之亦然。

  舉個極端的例子,如果λ=0,規則化項不起作用,就是希望模型能夠最小化損失函式項,當模型擬合了所有訓練資料時損失函式項最小,但這樣得到的模型對於新的資料泛化能力就非常差,產生了過擬合。​
由此可知,需要協調λ的值,使得模型即具有較小的訓練誤差,又具有很好的泛化能力。最常用的方法是交叉驗證,實驗不同的λ值。

L1和L2的比較

  1)L1 正則化向目標函式新增正則化項,以減少引數的值總和;
  2)L2 正則化中,新增正則化項的目的在於減少引數平方的總和。
  根據之前的研究,L1 正則化中的很多引數向量是稀疏向量,因為很多模型導致引數趨近於 0,因此它常用於特徵選擇設定中。機器學習中最常用的正則化方法是對權重施加 L2 範數約束。
  對於 L2 範數來說,權重會被約束在一個 L2 範數的球體中,而對於 L1 範數,權重將被限制在 L1 所確定的範圍內。

  我們常說的 “small n, large p problem”。(我們一般用 n 表示資料點的個數,用 p 表示變數的個數 ,即資料維度。當 的時候,不做任何其他假設或者限制的話,學習問題基本上是沒法進行的。因為如果用上所有變數的話, p 越大,通常會導致模型越複雜,但是反過來 n 又很小,於是就會出現很嚴重的 overfitting 問題。
  假設我們的預測結果與兩個特徵相關,L2正則傾向於綜合兩者的影響,給影響大的特徵賦予高的權重;而L1正則傾向於選擇影響較大的引數,而捨棄掉影響較小的那個。實際應用中 L2正則表現往往會優於 L1正則,但 L1正則會大大降低我們的計算量。

  既然 L1和 L2正則各自都有自己的優勢,那我們能不能將他們 combine 起來?
  可以,事實上,大牛早就這麼玩過了。