先日、将棋AIのモデルにおけるエントロピー正則化とL2正則化の効果を測定したが、正しく測定できていなかったので再測定した。
前回の測定結果のtest accuacyが低いので、原因を調べていたら、ChainerのV5から追加されたstatic_graphを使っていたことが原因だった。
static_graphを使うと初期モデルからうまく学習ができなくなっていた。
学習済みモデルを読み込んで学習する場合は動作していて、詳しい理由はわかっていない。
理由は気になるが、ひとまずstatic_graphは使わないようにして再測定した。
測定方法、測定条件は前回と同じ。
測定方法
測定結果
損失
エントロピー正則化 | L2正則化 | 訓練損失 (合計) | テスト損失 (Policy) | テスト損失 (Value) | テスト損失 (評価値) |
---|---|---|---|---|---|
あり | あり | 1.5940012 | 1.0582352 | 0.59627414 | 0.6488074 |
なし | あり | 1.5837559 | 1.0621308 | 0.604218 | 0.6526976 |
あり | なし | 1.5987074 | 1.0657055 | 0.6020864 | 0.65500134 |
なし | なし | 1.5907097 | 1.0641797 | 0.60402834 | 0.65064603 |
考察
エントロピー正則化とL2正則化の両方を行った場合が、テストデータに対するPolicy、Value、評価値の損失が最も低くなっている。
テストデータに対するaccuracyも最も高い。
テストデータを推論した際のエントロピーは、Policyが3番目、Valueが2番目に高い。
L2正則化のみの場合、テストデータに対するaccuracyは、Policy、Valueともに最も低かった。
テストデータを推論した際のエントロピーは、Policyが最も高く、Valueが最も低い。
エントロピーからはL2正則化はPolicyに対しても機能しているようだが、accuracyは低くなっているので何とも言えない結果になった。
エントロピー正則化のみの場合、評価値の損失が最も高く、Valueのエントロピーが最も高くなってこちらも何とも言えない。
正則化なしの場合、いずれのメトリックスも2番目か3番目になっている。
この結果からは、エントロピー正則化とL2正則化の両方を組み合わせて行うと、PolicyとValueの両方の精度に効果がありそうである。