先日Chainerで実装したSENetを将棋AIのモデルで試してみた。
dlshogiで使用している10ブロック、192フィルタのWideResNetにSENetを組み込んで、SENet有無による精度を比較した。
測定方法
- 10ブロック、192フィルタのモデル
- PolicyとValueのマルチタスク学習
- Aperyで生成した1.4億局面をシャッフルして2500万局面分を学習
- 引き分けも学習
- Momentum SGD(lr=0.01)
- 初期モデルから学習
- バッチサイズ512
- Policyの教師データは指し手(分布なし)
- Valueの教師データは勝敗(引き分けあり)
- Valueの損失は評価値によるブートストラップあり
- テストデータにはfloodgateのR3500以上の棋譜を使用
- エントロピー正則化([tex:\beta]=0.001)とL2正則化(rate=0.0001)あり。
比較条件
- SENetの有無
- reductionは16
測定結果
バッチサイズ1024で試すとメモリを11GB搭載したGeForce 2080TiでもOutOfMemoryErrorになったため、バッチサイズは512で比較した。
損失
SENet | 訓練損失 (合計) | テスト損失 (Policy) | テスト損失 (Value) | テスト損失 (評価値) |
---|---|---|---|---|
あり | 1.5167899 | 1.0261396 | 0.5962995 | 0.6469054 |
なし | 1.5300623 | 1.0379672 | 0.5983292 | 0.649161 |
テストaccuracy
SENet | テスト accuracy (Policy) | テスト accuracy (Value) |
---|---|---|
あり | 0.37059274 | 0.66360927 |
なし | 0.36444074 | 0.6569804 |
実行時間
SENet | 時間 |
---|---|
あり | 3:10:01 |
なし | 2:56:27 |