1. 程式人生 > >深度學習正則化-引數範數懲罰(L1,L2範數)

深度學習正則化-引數範數懲罰(L1,L2範數)

L0範數懲罰

機器學習中最常用的正則化措施是限制模型的能力,其中最著名的方法就是L1和L2範數懲罰。

        假如我們需要擬合一批二次函式分佈的資料,但我們並不知道資料的分佈規律,我們可能會先使用一次函式去擬合,再使用二次函式、三次、四次、等等次數的函式去擬合,從中選擇擬合效果最好的一個函式來作為我們最終的模型。

        上面的方法未免顯得有些太繁瑣,如果有一批資料輸入指數為50的函式分佈,按照以上嘗試的方法難道我們要嘗試50次以上?這顯然不太可能。

        我們可以上來就先定義一個高次多項式,例如:

                                                  f(x) = w_{50}x^{50} + w_{49}x^{49} + ... + w_{0}x^{0}

        對於我們剛開始提出的問題,從我們定義的一個n次多項式到最佳的二次多項式:

                                                 f(x) = 0x^{50} +0x^{49} + ... + w_{2}x^{2} + 0x^{0}

我們發現,其實就是限制高次項的係數為0.用數學符號表示:

                                           min(J(w))            s.t.              w_{50} = w_{49} = ... = w_{3} = 0

這樣的思路固然好,但是就是不方便實現,我們需要記錄所有的函式對應的引數,對於深度學習這種擁有百萬級引數規模的學習模型來說,那簡直是不可想象的。

        因此我們放鬆限制,僅僅控制引數的數目,而不是從高到低的順序限制引數。我們將不為0的引數數量限制再c以內來達到限制模型的目的,如下式子所示:

                                         min(J(w)) s.t.\sum_{i=1}^{m} I(w_{i} \neq 0) \leqslant c

這種方式被稱為L0範數懲罰。

L1範數懲罰

雖然我們已經放鬆了限制,但是以上表達式並不完美,對於實際應用並不是太友好,那麼我們不妨再放鬆一下限制,不要求非零的引數個數控制再c以內,但要求引數絕對值數值的和控制再c以內,如下式所示:

                                         min(J(w)) s.t.\sum_{i=1}^{m} |w_{i}| \leqslant c

這種引數數值總和的限制被稱之為L1範數懲罰,也被成為引數稀疏性懲罰。

雖然高次項係數可能不為0,但如果發生如下式子中的情況,那麼高次項也可以被輕鬆忽略了:

                                f(x) = 0.0001x^{50} +0.0003x^{49} + ... + w_{2}x^{2} + w_{1}x^{0}

加入L1範數懲罰項的代價函式如下所示:

                             J(w) = J(w) + \lambda ||w||_{1}

計算加入L1範數懲罰函式的代價函式的梯度:(由於絕對值不可導,我們其實只是在原代價函式梯度的基礎上再加上lambda與引數本身的符號函式乘積。

                \frac{\partial J(w) }{\partial w_{i}} = \frac{\partial J(w) }{\partial w_{i}} + \lambda sign(w_{i})

相對於權重衰減,L1範數限制的更為嚴格,因此也就更加稀疏,稀疏性也就是我們最終優化所得的引數中有很多0,稀疏性一大好處就是有利於特徵選擇

L2範數懲罰

雖然我們已經更加放鬆了限制,但是這還是不完美,因為帶有絕對值,我們都知道,絕對值函式再求梯度時不可導,因此我們再次放寬限制,將求絕對值和變為求平方和,如下式所示,這就是L2範數懲罰,也就是我們熟悉的權重衰減懲罰。

                             min(J(w)) s.t.\sum_{i=1}^{m} (w_{i})^{2} \leqslant c

我們可以通過控制c值的大小來限制模型的學習能力,c越大,模型能力就越強(過擬合),c越小,模型能力就越弱(欠擬合)。該條件極值可以通過拉格朗日乘子法來進行求解。

對於L2範數求梯度:

                            \frac{\partial J(w) }{\partial w_{i}} = \frac{\partial J(w) }{\partial w_{i}} + 2\lambda w_{i}

對於以上式子,若\lambda為0,則新的代價函式與原代價函式等價。(\lambda>=0)