Neural networks and deep learningの3章、 過学習と正則化 で、過学習を防ぐための手法として正則化 について述べられている。
正則化
もっとも一般的に使われる正則化のテクニック:重み減衰、またはL2正則化
コスト関数に正則化項と呼ばれる追加の項を足す。
正則化されたクロスエントロピーコスト関数:
$$ C = -\frac{1}{n} \sum_{xj} \left[ y_j \ln a^L_j + (1 - y_j) \ln (1 - a^L_j) \right] + \frac{\lambda}{2n} \sum_w w^2. \tag{85} $$
$$ C = C_0 + \frac{\lambda}{2n} \sum_w w^2. \tag{87} $$
2番目が項が追加されたもので、すべてのウェイトの二乗の和を\(\lambda / 2n\)でスケール。
正則化項はバイアスを含まない
\(\lambda > 0\)は正則化パラメータ
他のコスト関数、例えば二乗誤差などの場合でも同様
直感的に正則化の効果は、ネットワークが小さい重みを好むようになる
偏微分:
$$ \begin{align*} \frac{\partial C}{\partial w} &= \frac{\partial C_0}{\partial w} + \frac{\lambda}{n} w \tag{88} \\ \frac{\partial C}{\partial b} &= \frac{\partial C_0}{\partial b} \tag{89} \end{align*} $$
重みの学習ルールは次のようになる:
$$ \begin{align*} w & \rightarrow w - \eta \frac{\partial C_0}{\partial w} - \frac{\eta \lambda}{n} w \tag{91} \\ & = \left(1 - \frac{\eta \lambda}{n} \right) w - \eta \frac{\partial C_0}{\partial w} \tag{92} \end{align*} $$
通常の勾配降下学習ルールで、最初に重みを係数\(1 - \frac{\eta \lambda}{n}\)で理スケールしたものと同じ。 このリスケールを重み減衰と呼ぶ。
正則化は過学習を防ぎ分類精度を高めるが、それ以外にも経験的には、局所最適化に陥らずに安定した結果になりやすい。
なぜ正則化が過学習を防ぐか?の直感的な解釈
L1正則化
L1正則化は、コスト関数を次のように変更する:
$$ C = C_0 + \frac{\lambda}{n} \sum_w |w|. \tag{95} $$
重みの学習は、\(w\)の符号によって\(\eta \lambda / n\)だけ0に向かわせる。
L2正則化と比べると、\(w\)が大きい時には相対的に少なく、小さい時には多く0に向かうことになる。
結果的にL1正則化は少しの重要度の高い結合に集中し、他の重みは0に向かうようになる。