深度學習正則化-引數範數懲罰(L1,L2範數)
L0範數懲罰
機器學習中最常用的正則化措施是限制模型的能力,其中最著名的方法就是L1和L2範數懲罰。
假如我們需要擬合一批二次函式分佈的資料,但我們並不知道資料的分佈規律,我們可能會先使用一次函式去擬合,再使用二次函式、三次、四次、等等次數的函式去擬合,從中選擇擬合效果最好的一個函式來作為我們最終的模型。
上面的方法未免顯得有些太繁瑣,如果有一批資料輸入指數為50的函式分佈,按照以上嘗試的方法難道我們要嘗試50次以上?這顯然不太可能。
我們可以上來就先定義一個高次多項式,例如:
對於我們剛開始提出的問題,從我們定義的一個n次多項式到最佳的二次多項式:
我們發現,其實就是限制高次項的係數為0.用數學符號表示:
s.t.
這樣的思路固然好,但是就是不方便實現,我們需要記錄所有的函式對應的引數,對於深度學習這種擁有百萬級引數規模的學習模型來說,那簡直是不可想象的。
因此我們放鬆限制,僅僅控制引數的數目,而不是從高到低的順序限制引數。我們將不為0的引數數量限制再c以內來達到限制模型的目的,如下式子所示:
這種方式被稱為L0範數懲罰。
L1範數懲罰
雖然我們已經放鬆了限制,但是以上表達式並不完美,對於實際應用並不是太友好,那麼我們不妨再放鬆一下限制,不要求非零的引數個數控制再c以內,但要求引數絕對值數值的和控制再c以內,如下式所示:
這種引數數值總和的限制被稱之為L1範數懲罰,也被成為引數稀疏性懲罰。
雖然高次項係數可能不為0,但如果發生如下式子中的情況,那麼高次項也可以被輕鬆忽略了:
加入L1範數懲罰項的代價函式如下所示:
計算加入L1範數懲罰函式的代價函式的梯度:(由於絕對值不可導,我們其實只是在原代價函式梯度的基礎上再加上lambda與引數本身的符號函式乘積。
相對於權重衰減,L1範數限制的更為嚴格,因此也就更加稀疏,稀疏性也就是我們最終優化所得的引數中有很多0,稀疏性一大好處就是有利於特徵選擇。
L2範數懲罰
雖然我們已經更加放鬆了限制,但是這還是不完美,因為帶有絕對值,我們都知道,絕對值函式再求梯度時不可導,因此我們再次放寬限制,將求絕對值和變為求平方和,如下式所示,這就是L2範數懲罰,也就是我們熟悉的權重衰減懲罰。
我們可以通過控制c值的大小來限制模型的學習能力,c越大,模型能力就越強(過擬合),c越小,模型能力就越弱(欠擬合)。該條件極值可以通過拉格朗日乘子法來進行求解。
對於L2範數求梯度:
對於以上式子,若為0,則新的代價函式與原代價函式等價。(>=0)