ニューラルネットワークと正則化
フィードフォワードニューラルネットワークをはじめとして、各種モデルはパラメータ数が多いと、不適切な過学習をします。パラメータ数を減らすのがまず最初に検討すべき事ですが、正則化項をつけるという解決方法もあります。詳細は、PRML本(パターン認識と機械学習 上 - ベイズ理論による統計的予測)のp.142やp.258をご覧ください。
フィードフォワードニューラルネットワークの正則化項は隠れ層、出力層、両方につけられるのですが、隠れ層につけると入力軸方向の高周波成分を除去します。出力層につけると、出力軸方向の小さな振幅を除去します。
上手い例ができたので、以下に載せます。関数は、 です。sinの方がノイズで、希望としては、を見つけ出して欲しいとします。
まず、下記グラフ(画像)が隠れ層の人工ニューロンが8つの場合。綺麗に学習しています。これが正攻法。
次に、sinを認識させるために、人工ニューロンを48に増やします。いまいち、ちゃんとフィットしていないのは、最適化問題において反復数が少ないのかもしれません。RPROPを使用しました。
次に、隠れ層に0.01の正則化項をつけます。高周波が飛ぶので、になります。
面白いのが、出力層に0.01の正則化項。sinの部分が平らになります。