TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

【将棋AI】N駒関係をMulti-Head Self-Attentionで学習する 続き3

前回、入力特徴量の与え方でMulti-Head Self-Attentionの精度を向上できることを確認したが、DCNN(Resnet 10ブロック)に比べて精度がでないことが分かった。

今回は、Multi-Head Self-Attentionの出力をDCNNに入力して、Multi-Head Self-AttentionとDCNNを組み合わせることで精度が改善できないか試した。

Multi-Head Self-AttentionとDCNNを組み合わせる方法

Multi-Head Self-Attentionの出力は、盤上の座標ごとの特徴ベクトル(64次元)となっているので、これを2次元平面の形にならべて、64チャネル、9×9の特徴マップに変換する。
持ち駒は、持ち駒の種類と枚数ごとの特徴ベクトル(64次元)となっているので、そのままでは2次元の平面状にすることができない。
そこで、各特徴ベクトルの平均をとって、9×9の各位置に同じものを並べるようにする。
これを、盤上の座標ごとの特徴ベクトルとチャネル方向に連結して、DCNNに入力する。
DCNNの入力層は、チャネル数を64×2→192に変換するための畳み込み層として、それを10ブロックのResNetに入力する。

結果

モデル 訓練平均損失(方策, 価値, 評価値, 合計) 評価損失(方策, 価値, 評価値, 合計) 正解率((方策, 価値)
Multi-Head Self-Attention+DCNN 1.088, 0.406, 0.435, 1.505 1.187, 0.707, 0.803, 1.927 0.334, 0.604
DCNNのみ 1.071, 0.406, 0.435, 1.487 1.202, 0.606, 0.670, 1.829 0.328, 0.651

DCNNのみの場合に比べて、方策の精度が少し上がって、価値の精度が下がっている。評価損失の合計は低下している。
Multi-Head Self-Attentionによってかえって精度が下がっていそうである。

持ち駒の入力方法の変更

持ち駒の特徴ベクトルを平均化していることが良くない可能性があるので、平均化しないで、出力ユニット数がDCNNのチャネル数(192)と同じ全結合層を通して、それを9×9の各位置に同じものを並べて、盤上の座標ごとの特徴ベクトルとの和をとるようにした。
それを10ブロックのResNetに入力する。

結果
モデル 訓練平均損失(方策, 価値, 評価値, 合計) 評価損失(方策, 価値, 評価値, 合計) 正解率((方策, 価値)
Multi-Head Self-Attention+DCNN 1.053, 0.403, 0.432, 1.466 1.167, 0.618, 0.695, 1.811 0.338, 0.643

評価損失の合計は、DCNNのみの場合よりも良くなっているが、誤差の範囲である。

追加で数回測定してみた。

モデル 訓練平均損失(方策, 価値, 評価値, 合計) 評価損失(方策, 価値, 評価値, 合計) 正解率((方策, 価値)
Multi-Head Self-Attention+DCNN(2回目) 1.051, 0.402, 0.431, 1.463 1.166, 0.613, 0.675, 1.800 0.339, 0.642
Multi-Head Self-Attention+DCNN(3回目) 1.046, 0.403, 0.432, 1.460 1.179, 0.644, 0.728, 1.851 0.334, 0.626

3回目は悪くなっているので、やはり誤差の範囲と言えそうである。

まとめ

Multi-Head Self-Attentionで、離れた位置にある駒の依存関係を学習することで、DCNN単体よりも精度が上がることを期待していたが、少なくとも悪くはならないが精度が大幅に改善することはなかった。
DCNN単体でも、層を深くすることでN駒の関係が学習できており、Multi-Head Self-Attentionを追加しても効果がなかったのかもしれない。


Multi-Head Self-Attentionは有望なアイディアと思っていたが、実験してみると、効果はあるものの、DCNNの方が強力だということがわかった。
2次元の座標で表せるゲームでは、積極的にDCNNを使った方が良さそうである。

カードゲームのような2次元の座標で表せないゲームでは、Multi-Head Self-Attentionも活用できそうである。
ハースストーンの勝率予測に、Multi-Head Self-Attentionを使えないか試してみたい。