dlshogiのNetwork改造 2
掲題の件ですが、改造したNetworkで何度か学習を回してみたのでここで振り返ります。
結果は以下の通り。
GCT電竜のデータセットの一部を使用。
■結果
学習データ :floodgate2008〜2013
テストデータ:floodgate_teacher_uniq-test-01
学習局面数 :33,539,045
iteration :131,000
総学習時間 :41h14m
学習環境 :自前のローカルPC ---RTX3070, Ryzen7 3700X(C8/T16)
一応、学習は出来ているようです。
上図はスケールが微妙に異なるグラフを1つにまとめてしまっているため、下記でそれぞれ見ていくことにします。
【train_loss4】
ここではコード上train_loss4と書いていますが、train_rl_policy_with_value_hcpe_bootstrap.py上でも定義されているように、loss1, loss2, loss3からなる損失関数です。これついては山岡さんがdlshogiの学習則について詳しく書いてくださっているのでそちらを見てください。
年度ごとに揺り戻しはあるものの、順調に下がっているように見えます。
また、その揺り戻しも回を重ねるごとに振れ幅が小さくなってきているのも見てとれます。
【test_loss4】
こちらはテストデータの損失関数。(4の意味は同上)
振動が見られるものの、順調に下がっていることが確認できる。とりあえず停滞する直前まではいってみたい。
【test_acc1, test_acc2】
上と同じく振動は見られるものの、数値は上がっている傾向が見られるため学習は出来ていそう。
ただしスケールが微妙に異なる可能性を考えて、念のため別々にプロットしてみることにしました。
ここまで安定しないのは、将棋というゲームの特性上、出現する局面が膨大であること(2008〜2013分だけでは学習データが少なすぎる)か、学習率が大きく設定されてしまっていることが原因だと考えています。
おそらく、まだ学習データのバリエーションが少なすぎるのが原因とは思うが、学習率を下げてみて確認してみても良いかもしれない。
今のところ(ギリギリかもしれないですが)、損失が増加に転じているような気配は無く、まだこの手法でも行けそうではあるかなと...