ニューラルネットワークと正則化

フィードフォワードニューラルネットワークをはじめとして、各種モデルはパラメータ数が多いと、不適切な過学習をします。パラメータ数を減らすのがまず最初に検討すべき事ですが、正則化項をつけるという解決方法もあります。詳細は、PRML本(パターン認識と機械学習 上 - ベイズ理論による統計的予測)のp.142やp.258をご覧ください。

フィードフォワードニューラルネットワーク正則化項は隠れ層、出力層、両方につけられるのですが、隠れ層につけると入力軸方向の高周波成分を除去します。出力層につけると、出力軸方向の小さな振幅を除去します。

上手い例ができたので、以下に載せます。関数は、y = x^2 + 0.1 sin(10 \pi x) です。sinの方がノイズで、希望としては、y = x^2を見つけ出して欲しいとします。

まず、下記グラフ(画像)が隠れ層の人工ニューロンが8つの場合。綺麗に学習しています。これが正攻法。

次に、sinを認識させるために、人工ニューロンを48に増やします。いまいち、ちゃんとフィットしていないのは、最適化問題において反復数が少ないのかもしれません。RPROPを使用しました。

次に、隠れ層に0.01の正則化項をつけます。高周波が飛ぶので、y = x^2になります。

面白いのが、出力層に0.01の正則化項。sinの部分が平らになります。