ニューラルネットワーク その3

とりあえず何か書いてみないとなんとも分からないので、
先日の本のサンプルプログラムを書きなおしててみた。C++ で。
ai_0.tar.gz


で実際に動かしてみた。
モデルはフィードフォワード型で誤差逆伝搬により学習。
層は3層で入力層ノード数は 3点、隠れ層ノード数は 5点、出力層ノード数は 1点。
訓練データは 6個でそれぞれ

0 0 0 → 0
1 0 1 → 0
1 1 1 → 1
1 1 0 → 0
1 0 0 → 1
0 0 1 → 1

初期の重さは乱数により設定。


結果。学習回数と誤差の関係。gnuplot の使い方が全然分からん。

横軸は学習回数、縦軸は誤差。線種はサンプル数に対応。
現在のパラメータでは 8000回を超えると大体誤差が無視できるようだ。
学習っていうのは波打つような感じで進むんだなあ。


で次にこのときの入力層ノード1 と隠れ層ノード1 の重さ。

10000回を超えてもなんか重さが変わってるから学習し続けているのだろうか。
入力層の重さは大体落ち着くようだ。


あれ、そういえば重さって 1 超えていいんだっけ??あとで調べよう。



まとめ。よく分からん。なんか落ち着く方向に進むことは分かった。
あとはこれが本当に正しいのかどうか、どうやって確認するかが重要だ。