正則化

2016-01-03

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に向かうようになる。