最近、ニューラルネットワークというか、バックプロパゲーションでの予測や認識について、どうやればもうちょっと良い結果がだせるのか検討しています。
バックプロパゲーションはXORが識別できるってのが、パーセプトロント比べてすごかったところなのだけど、実際に実験させてみると、結構XOR程度のことすらローカルミニマムにはまってなかなか学習してくれず、こりゃだめだな〜、と感じると思います。
学習係数をいじってやるという手法でだいぶましになりますけども、結局のところそれってうまいことローカルミニマムを飛び出せる勢いをつけさせてるだけで、人間が調節してやってる感があります。
中間層をたくさん増やしてやることでも結構さっくり解けるようになります。でもこれは単に、ランダムで設定された係数が偶然良い値になっていて、そこからローカルミニマムにはまらずに降りれただけ、と考えられます。だから、試行回数を増やした場合とほぼ同義になると思います。
これはつまり、すごくおおざっぱに言うと、モンテカルロ法をより洗練させただけ、とも言えると思います。
せっかくたくさんニューロンがいるのに、みんなで同じところばっかり探してても意味ないよね、と。
一人があるルートでそこそこ良い値を出しているのなら、そいつと同じルートを探しているやつらは、そいつとは違ったところを探して欲しいわけです。
そのためには、自分と近い所にいる2番手3番手のやつらを抑制させるという手法があると思います。コグニトロンとかが使ってる側抑制というやつです。
でもこれだと、良く学習出来てるグループだけが、その学習してる周辺だけをくまなく探す、みたいな感じにはなりますが、学習にほとんど関与してない、どのコネクションも重さゼロみたいな、ひきこもり状態になっちゃってるニューロンについてもなんとかしないと、と思ったわけです。
そいつらを使って、広く浅く探させることで、ローカルミニマムを抜けられないだろうか。
例えば、あまり学習の刺激がない状況が続く場合、どんどん重みにノイズが乗っていく、つまり忘却する機構をつけたらどうかなと。
(関連)