2
2

More than 3 years have passed since last update.

自作NeuralNetworkの精度あげる方法試したこと

Posted at

NeurlNetworkでXORを学習させたい!

入力、隠れ層、出力層
この3つを単純に作っただけではXORを実現できるときもあれば、層じゃないときもあったので、なんとか精度を高くしようと、試してみたこと書きです。

ちなみに、うまくいかないときの出力は

#入力 [ (0,0)  , (0,1)   , (1,0)   , (1,1)  ]
#出力 [0.01... , 0.63... , 0.62... , 0.66...]
#答え [0       , 1       , 1       , 0      ]

っていう感じで、(1,1)を入力したときの値が大きくずれてしまいます。これをなんとかしようっていうもが目標です。

目次

  • 隠れ層のノードを2つから3つに増やす
  • 学習するにつれて、学習率を下げる
  • 学習させるやつを増やす

隠れ層のノードを増やす

これは単純な式の追加でできました。
10回程度の試行ですが、あまり変わりませんでした。
もう少し試行回数を増やしたら結果が変わるかもしれません。
ただ、数値の変動の仕方にあまり変化がなかったため、10回程度で打ち切りました。

学習率をだんだん下げる

これは、最後の精度の問題だと後から気づいたのですが、当然あまり変化はありませんでした。
なぜなら、ずれるときは初めから大きくずれています。
なので、初動がどんなふうに動くかを調整できないと、あまり意味がないのです。

学習させるやつを増やす

なんと表現したらよいかわからなくて、こんな表現になっているのですが、イメージ的には、スタートが悪いなら、試行回数をepochs少なくして増やして、優秀な奴だけまた学習させていこうっていう感じです。
つまり、優秀な奴の中で、何個か作って学習させて、また、優秀な奴の中で学習させて、っていう風にしてみました。

これはめっちゃ変わりました。

これまで1/5くらいの確率で正解に近いって感じでしたが、変えてみて、1/2くらいの確率で正解に近づきました!
試行回数を増やしたときにはもっと差が開きました。

結論

なんてよんだらいいかわかりませんが、学習させる人を何人か用意して、優秀な奴の中で学習させて...っていうのが一番いい感じでした!
やっぱり優秀な奴だけが生き残る世界なのか...怖い...
AIも人間も変わらないですね!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2