正則化(Regularization)是機器學習中抑制過擬合問題的常用算法,常用的正則化方法是在損失函數(Cost Function)中添加一個系數的\(l1 - norm\)或\(l2 - norm\)項,用來抑制過大的模型參數,從而緩解過擬合現象。
\(l1 - norm\)的正則項還具有特征選擇的能力,而\(l2 - norm\)的正則項沒有。直觀上,對於小於1的模型參數,\(l1 - norm\)的懲罰力度要遠遠大於\(l2 - norm\)的懲罰力度,這是\(l1 - norm\)特征選擇能力的直接驅動。
帶正則化的邏輯回歸模型(Logistc Regression)損失函數如下式:
\[J(w) = - Log\left( {\frac{1}{m}\sum\limits_{i = 1}^m {{{\left( {p({x^{(i)}})} \right)}^{{y^{(i)}}}}{{\left( {1 - p({x^{(i)}})} \right)}^{1 - {y^{(i)}}}}} } \right) + \frac{\lambda }{{2m}}\left\| w \right\|_2^2(1)\]
下面以梯度下降法和牛頓法為例,說明帶正則項的訓練算法:
1. 梯度下降法
\[w^{(k + 1)} = {w^{(k)}} - \alpha \nabla J({w^{(k)}})\]
系數\(w\)的更新公式為:
\[\begin{array}{c}
{w^{(k + 1)}} = {w^{(k)}} - \alpha \frac{1}{m}\sum\limits_{i = 1}^m {\left( {p({x^{(i)}}) - {y^{(i)}}} \right){x^{(i)}}} - \frac{\lambda }{m}{w^{(k)}}\\
= {w^{(k)}}(1 - \frac{\lambda }{m}) - \alpha \frac{1}{m}\sum\limits_{i = 1}^m {\left( {p({x^{(i)}}) - {y^{(i)}}} \right){x^{(i)}}}
\end{array}\]
可見,正則化后的迭代算法和沒有正則化的迭代形式非常像,唯一的差別在與每次迭代都要多減去一個\(\frac{\lambda }{m}{w^{(k)}}\)。相當於如果當前的\(w_j\)已經比較大了,那么,\(w\)要先多減去一點,然按梯度方向進行迭代。
另外,上式的正則化項與\(m\)成反比,也就是說,樣本數越大,過擬合的問題越小,正則化的作用越弱。
2. 牛頓法
\[{w^{(k + 1)}} = {w^{(k)}} - {H^{ - 1}}\left( {{w^{(k)}}} \right)\nabla J({w^{(k)}})\]
引入l2-norm正則項后,一階導數和Hessian矩陣如下所示:
\[\nabla J = \frac{1}{m}\sum\limits_{i = 1}^m {\left( {\left( {p({x^{(i)}}) - {y^{(i)}}} \right){x^{(i)}}} \right)} - \frac{\lambda }{m}{w^{(k)}}\]
\[H = \frac{1}{m}\sum\limits_{i = 1}^m {p({x^{(i)}})\left( {1 - p({x^{(i)}})} \right){x^{(i)}}{{({x^{(i)}})}^T}} + \frac{\lambda }{m}\left[ {\begin{array}{*{20}{c}}
0&0&0&0\\
0&1&0&0\\
0&0&{...}&0\\
0&0&0&1
\end{array}} \right]\]
與梯度下降法類似,正則化在牛頓法中也是起到懲罰大的\(w_j\)的作用。另外,由於加了正則化項,原來不可逆的Hessian矩陣也變的可逆了。