TadaoYamaokaの開発日記

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

【論文】Grandmaster-Level Chess Without Searchを読む

DeepmindarXivで発表したチェスで探索なしでグランドマスターレベルに達したTransformerベースモデルに関する論文「Grandmaster-Level Chess Without Search」を読んだ際のメモ。

概要

  • 標準的なTransformerのデコーダ教師あり学習することで探索なしでチェスのグランドマスターレベルに達した
  • Lichessの1,000万対局の棋譜を使用
  • 行動価値を学習する
  • 棋譜の各局面について全合法手を展開した局面に対してStockfish 16で50ミリ秒探索して、行動価値を学習するための訓練データを作成
  • 行動価値(勝率)を128個のビンに分け、クラス分類問題として学習する
  • 2億7,000 万のパラメーターのTransformerモデルを使用
結果
  • Lichessの早指し(blitz)戦で、対人間でグランドマスターレベル(2895 Elo)に達した
  • 対AIエンジンでは、2299 Eloと低い値になった(対AIでは1手のミスの影響が大きいためと分析している)

詳細

データ
  • Lichess (lichess.org) から2023年2月の1,000 万対局をダウンロード
  • 全合法手を展開した局面の状態価値を、Stockfish 16 を使用して50ミリ秒探索して推定
  • 50ミリ秒の探索は、Lichessのblitzで2713 Eloに相当する
  • 訓練に使用する1,532億の行動価値を推定するデータが得られる
  • テストデータとして、別の月(2023年3月)の1,000対局を使用
  • テストデータには、序盤は訓練データと重複する14.7%の局面が含まれるが、分布が歪むため除かない
ビン
  • 行動価値を128のビンに分割してクラス分類問題として学習する
モデル
  • デコーダのみのTransformerモデル
  • コンテキスト サイズは、行動価値の予測の場合79 (状態価値予測、動作クリーニングの場合78)
  • 出力サイズはビン数128 (動作クリーニングの場合は合法手の数1968)
  • コンテキストサイズが固定のため学習された位置エンコーディングを使用
  • パラメーターは、約2億7,000万
  • Llamaで提案されたpost-normalizationとSwiGLUを使用
トークン化
  • FEN文字列の各文字をトークン化
  • FENの空白は、空白の数の分だけ「.」で表現することで固定長にする
  • 77文字の固定長文字列に変換される
  • 先後で盤面は回転しない
  • 指し手は全合法手に付けたインデックスをトークンとする(1トークン)
訓練
  • 学習率 1e-4 のAdam を使用
  • 交差エントロピー損失を使用
  • バッチサイズ4096
  • 1,000万ステップ学習(2.67 エポックに相当)
  • Polyak averagingを使用
予測ターゲット
  • 行動価値の予測以外に、状態価値の予測、動作クリーニングをするモデルを学習して比較した

評価

以下の指標で評価する

  • 指し手の一致率(Action-accuracy)
  • テストセット全体の平均 Kendall 順位相関 (Kendall の 𝜏)
  • パズルの精度: Lichessの10,000 個のパズルを使用
  • 強さ(Elo)
    • (i) Lichess で人間のみまたはボットのみを相手に Blitz ゲームをプレイ
    • (ii) すべてのプレイヤー間で内部トーナメント(AlphaZeroの方策関数及び価値関数(400 MCTS、温度パラメータ使用)、Stockfish(時間制限))
    • AlphaZeroは履歴局面にアクセスできる点に注意
    • Transformerモデルは現局面のみのため千日手にならないように千日手になる手を勝率50%にする

結果

表1に結果が整理されている。

  • モデルが大きいほどスコアは一貫して向上
  • 対人間でグランドマスターレベル(2895 Elo)
  • Lichessでボットと対戦すると Elo が低下
パズル


  • 270MのモデルがStockfish 16に次いで精度が高い
  • AlphaZero、GPT-3.5-turbo-instructは精度が大幅に低い
  • パズルを解くには正しい手順が必要にも拘わらず貪欲なポリシーで正解している
スケーリング則


  • 訓練データのサイズが小さいと、大きいモデルでは過学習する
  • 訓練データのサイズが大きい場合、データセットのサイズに関係なくモデルサイズが大きいほど最終的な精度が向上する

比較実験


予測ターゲット

  • 3つの予測ターゲットを比較すると、行動価値のEloが高かった
  • 状態価値、動作クリーニングと比較して、全合法を展開して訓練データを作成しているためデータ数が不公平
  • データ数を公平にすると、状態価値のEloが最も高く、行動価値もほぼ同じ
  • 予測ターゲットよりも、データセットサイズに起因している
  • 動作クリーニングは最善手1手のみを学習している情報量が少なくなった結果と考えられる(確率分布にすることで改善する可能性あり)
層の深さ
  • Transformerの層の深さは、パラメータ数を同一とした場合、深くするほど精度があがるが、8で飽和
データ サンプラー
  • 訓練データで重複局面を削除した方が精度が大幅に向上
  • データの多様性が重要
ビニング
  • ビンの数が多いほどパフォーマンスが向上する
  • 指し手の一致率では128が一番精度が高い
損失関数
  • スカラー回帰問題として扱うより分類問題として学習した方が、指し手一致率、Kendallの𝜏で精度が高い
  • パズルはわずかに低くなった

考察

千日手に対する盲点
  • 履歴局面にアクセスできないため、千日手を指してしまう
  • 回避するために、千日手になる手を勝率50%とした
勝てる局面での優柔不断さ
  • 行動価値をビンで学習している最高の勝率のビンにある手はランダムで選択される
  • それにより勝てる局面を長引かせる傾向がある
対人間と対ボットでのElo
  • 対人間と比較して、対ボットでEloが低下する
  • 原因は、人間は諦める傾向があることと、Lichessで人間vsボットの対戦数の少なさに起因していること、対ボットでは1つのミスで大きなペナルティになることが考えられる
限界
  • Stockfish 16との差は完全に埋められない(一つの要因は千日手を認識しないこと)
  • 行動価値はすべての合法手を考慮するため1手探索ではないか(次の状態への遷移はしないため「探索なし」と主張する)
  • ポリシーの決定的な性質により搾取される可能性がある

定性的評価

  • 駒を頻繁に犠牲にする、攻撃的で進取的なスタイル
  • 対戦相手に難しい決断をさせるような動きを好む
  • 人間の分析者の感想:「通常のエンジンをプレイするよりも楽しい」、「絶望的に打ちのめされているだけではないように感じる」
  • 多くの局面でStockfish と一致する。不一致の局面ではStockfish が正しいことが観測された

結論

  • Stockfish 16の教師データから未知の局面に一般化されるモデルが学習できることが実証された
  • 複雑で洗練されたアルゴリズムがTransformerモデルに蒸留できることが示された
  • 大きなTransformerは「単なる」統計的パターン認識器ではなく、一般的なアルゴリズムを近似できる強力な技術である

感想

探索なしでグランドマスターレベルに達したという結果については、将棋AIでもdlshogiのポリシーのみでも十分な強さがあることからそれほど驚きはない。
それよりも、大規模な比較実験の結果からいろいろな示唆が得られる論文だと思った。

訓練データの重複データを削除すると大幅に精度が上がるという結果については、dlshogiの実験でも同一局面の出力を平均化するということを行っており、効果があることを確認していた。
チェスにおいてもデータの多様性が重要という結果が得られたことで、その裏付けとなったと思う。

指し手のみを学習するより、すべての合法手の行動価値を学習する方が精度が向上するという結果については、モデルを蒸留する際の示唆が得られた。
指し手を学習(最善手のみ)や蒸留元のモデルの出力を学習するよりも、全合法手を展開して状態価値から分布を学習する方が情報量が増えて精度が向上するということがわかる。
これは、モデル蒸留で方策を学習する際にも効果的な手法になりそうである。

モデルのパラメータサイズについて、学習データが十分であれば、学習データを増やさなくてもモデルサイズが大きいほどよいという結果は、モデルサイズに応じて学習データを増やす必要があるという認識だったので、少し意外であった。
大規模な実験をしないと分からない結果なので、参考になった。

Transformerモデルの入力のトークン化、層数、ポジショナルエンコーダの方法について、以前に将棋AIでTransformerモデルを学習した際に、それほど精度が上がらなかったので、Transformerモデルを使用する際の参考になる。

まとめ

チェスで探索なしでグランドマスターレベルに達したエージェントについての論文を読んだ。
結果自体は、それほど驚きはなかったが、大規模な比較実験の結果は、将棋AIの学習でも参考になる点が多かった。
dlshogiのモデルを蒸留して、CPUのみでも従来側のエージェントに匹敵するモデルを作りたいと思っており、蒸留の方法に応用できそうである。

また、LLMを応用することで、将棋AIの指し手の解説ができないかと考えているので、学習済みの言語モデル+将棋AIで新しいことができないか考えているので、将棋AIでTransformerモデルを扱う際のヒントにもなりそうである。