前回はフィルタ数を変更して実験をしてみました。
今回はいろんな実験をしすぎて情報が取っ散らかってきたように思えるのでここらで一度標準的なものを再実験してみることにしました。
ResidualBlock5つ、フィルタ数192、optimizerはSGD、patienceは10、損失の比は1:0.1、バッチサイズは256での実験です。
Epoch | Total Loss | Policy Loss | Value Loss | Move Accuracy | Value Accuracy |
---|---|---|---|---|---|
1 | 3.6851 | 3.6216 | 0.6356 | 0.2560 | 0.6093 |
2 | 3.1959 | 3.1348 | 0.6113 | 0.2961 | 0.6300 |
3 | 2.9791 | 2.9188 | 0.6023 | 0.3167 | 0.6368 |
4 | 2.8631 | 2.8040 | 0.5909 | 0.3305 | 0.6466 |
5 | 2.7799 | 2.7218 | 0.5808 | 0.3386 | 0.6529 |
6 | 2.7272 | 2.6693 | 0.5789 | 0.3459 | 0.6553 |
7 | 2.6715 | 2.6144 | 0.5709 | 0.3515 | 0.6621 |
8 | 2.6428 | 2.5854 | 0.5744 | 0.3550 | 0.6591 |
9 | 2.6117 | 2.5546 | 0.5711 | 0.3588 | 0.6622 |
10 | 2.5974 | 2.5408 | 0.5668 | 0.3607 | 0.6651 |
11 | 2.5806 | 2.5243 | 0.5625 | 0.3628 | 0.6691 |
12 | 2.5684 | 2.5122 | 0.5620 | 0.3637 | 0.6688 |
13 | 2.5526 | 2.4967 | 0.5589 | 0.3675 | 0.6706 |
14 | 2.5516 | 2.4957 | 0.5589 | 0.3669 | 0.6712 |
15 | 2.5524 | 2.4965 | 0.5590 | 0.3689 | 0.6710 |
16 | 2.5471 | 2.4910 | 0.5612 | 0.3682 | 0.6693 |
17 | 2.5485 | 2.4926 | 0.5587 | 0.3691 | 0.6727 |
18 | 2.5504 | 2.4949 | 0.5548 | 0.3679 | 0.6752 |
19 | 2.5531 | 2.4974 | 0.5568 | 0.3681 | 0.6729 |
20 | 2.5573 | 2.5017 | 0.5550 | 0.3689 | 0.6741 |
21 | 2.5650 | 2.5095 | 0.5557 | 0.3697 | 0.6737 |
22 | 2.5775 | 2.5218 | 0.5566 | 0.3676 | 0.6734 |
23 | 2.5813 | 2.5259 | 0.5543 | 0.3694 | 0.6755 |
24 | 2.5850 | 2.5295 | 0.5548 | 0.3689 | 0.6762 |
25 | 2.5995 | 2.5441 | 0.5534 | 0.3671 | 0.6765 |
26 | 2.6024 | 2.5469 | 0.5556 | 0.3689 | 0.6748 |
思ったよりも精度が出ませんでした。指し手を検証してみても初期局面で▲1八香、▲9八香などが高い確率で示されていてあまり上手くいっているようには見えません。損失の比をいじると見た目の数字だけ改善されている可能性があります。
損失の減少具合と指し手の自然さがあまり一致しない場合、学習の進行度合いを確認する指標がなくなり、苦しい事態となるのですが……。
確認できることとして、patienceは相当小さくても良いのではないかということがあります。そもそもテストデータに対する損失で学習終了を決定して良いのかという疑問はありますが、これを正しいとすると、一度損失が増加し始めると改善されることはないような結果が今のところ得られています。
収束まで16エポックかかっていることも気になります。特に変な実験条件ではないはずなので、こんなにかかる原因がよくわかりません。今回からバッチサイズを倍にしていることが効いているのでしょうか。時間がかかるわりに性能がよくなっているということがあればいいのですが、あまりその傾向はみられないようにも思えます。
5ブロックではNesterovが良いということもあるのかもしれません。ブロック数によって最適なoptimizerが異なると膨大な実験が必要になってしまうようにも思えるのですが……。
一度性能まとめ記事を作らないと自分でもなにをやっているのか少しわからなくなってきています。うまく実験をデザインしていきたいです。