The Fool In The Valleyの雑記帳

-- 好奇心いっぱいのおじいちゃんが綴るよしなし事 --

ニューラルネットのテストラン

先週(11/24)、ニューラルネットワークPythonで実装する準備をしていることを書きました。

そのニューラルネットワークでやろうとしていることは、カラーセンサーでルービックキューブの個々のパネルの色を認識することです。カラーセンサは近接する物体の反射光のRGB値を出力するので、その3つの値を使ってキューブの個々のパネルが6色のうちのいずれかを判定させるのです。そこでニューラルネットワークとしては、入力層のノード数が3、出力層のノードの数が6のものを考えることになります。そして、非線形分離ができるようにするために、適当なノード数を持った中間層を1層以上置く形式を考えることにします。例えば、ノード数5の中間層を1層置くとすると下の図のような形になるわけです。

f:id:tfitv:20211203150918j:plain

プログラムは以前にも紹介した下の本を参考にしました。

www.oreilly.co.jp

その実装が一応完了したので、プログラム自体やデータに問題がないことを確認するために、上記の中間層を1層5ノードとしたモデルでテストランをしてみました。

訓練用データ576個、テスト用データ144個を使い、48個の訓練用バッチ(1エポック=576/48=12回)を使ったミニバッチ学習を10,000回繰り返して認識率の変化をみると下図のようになります。

f:id:tfitv:20211203105455j:plain

ニューラルネットワークは、重みのパラメータの初期値の与え方、学習レートの値で、違った挙動を示します。予想したよりもバタついた感じがするので、チューニングが必要かもしれませんが、認識率は収束してだんだん1.0に近づいています。学習によってパラメータが順調に適正化されていっているように見えるので、大きな問題はなさそうです。

事情があってしばらく中断することになるので、基本的な問題がないことまで確認したかったのですが、なんとかそれは達成できたようです。