Upgrade to Pro — share decks privately, control downloads, hide ads and more …

将棋AI「dlshogi」紹介

 将棋AI「dlshogi」紹介

社内勉強会資料です。

Takatomo Torigoe

December 03, 2021
Tweet

More Decks by Takatomo Torigoe

Other Decks in Programming

Transcript

  1. AI時代の将棋界 • プロ棋士の最新形がAIの影響を強く受けるように ◦ 振り飛車はだいぶ珍しい存在に…… ◦ 居玉や中住まいなど、あまり囲わないまま中盤・終盤になることも多い • 対局中継でAIの評価値・候補手が表示されるのが一般的に ◦

    観る基準が、プロならではの妙手を指せるかどうかではなく、AIの最善 手を指せるかどうかに…… ◦ 解説棋士がAI候補手を検討しようとして「これで形勢いいんですか ね?」「これ指せたら人間じゃないですね」みたいな光景もありがち 「評価値ディストピア」の世界をトップ棋士はどのように見ているのか AIは将棋をどう変えたのか?谷川浩司九段が語る棋士の未来
  2. dlshogi • AlphaGo, AlphaZeroの手法をベースとしたディープラーニング将棋ソフト ◦ AlphaZeroが発表される前から開発 ◦ AlphaZeroのコードやモデルファイルは非公開(のはず) • dlshogiで学習したGCTがAI電竜戦で連続優勝

    • 藤井聡太竜王(四冠)が研究に取り入れ、渡辺明名人(三冠)も追いかける • 「水匠 vs dlshogi」では、渡辺明名人と佐々木勇気七段の解説付き 渡辺明名人、1秒間に8000万手読むコンピュータを購入しディープラーニング系のソフトも導入 最強CPU将棋ソフト『水匠』VS最強GPU将棋ソフト『dlshogi』長時間マッチ観戦記 第一譜『水匠』杉村達也の挑戦
  3. dlshogiの棋風 • 「大局観がめちゃくちゃいい」 ◦ 評価関数が優れている • 「読む量が少なくて、広く読むという感じではないので」「タダ捨てとかが 苦手なんだと思います」「5手先の必至とか相当ダメ」 ◦ 評価関数が重くて探索が遅い

    • 「序盤はプロレベルで、終盤でアマ初段にバトンタッチしている」 ◦ 読みが衰えても大局観で押し通す熟練の戦い方に似てる 渡辺明名人、1秒間に8000万手読むコンピュータを購入しディープラーニング系のソフトも導入 Deep Learning将棋は従来の将棋ソフトとここが違うぞ 羽生善治も認める「長考に好手なし」――将棋・囲碁で1手に5時間かけた棋士の結末
  4. ネットワーク構造(ResNet) • 9 x 9 画像の ResNet ◦ 224 channels

    ◦ 15 blocks • いくつかバリエーションが実装されている ◦ Swish activation ◦ SE block (Squeeze & Excitation) ▪ Channel Attention 第2回世界将棋AI電竜戦エキシビジョンバージョン visualized by netron.app 将棋AIの実験ノート:活性化関数Swishを試す 将棋AIの進捗 その31(cuDNNによるSENetの推論処理の実装) 深層学習入門:画像分類(5)Attention 機構
  5. ネットワーク構造(入力) • Height [9] x Width [9] = 盤面 •

    Channel [62] = ◦ 駒種類 [14]:歩香桂銀金角飛王[8]+成駒[6] ◦ 利き駒種類 [14] ◦ 利き数 [上限3] ◦ x 自分・相手 [2] 第2回世界将棋AI電竜戦エキシビジョンバージョン visualized by netron.app 【将棋AI】N駒関係をMulti-Head Self-Attentionで学習する 続き
  6. ネットワーク構造(入力) • Height [9] x Width [9] = 盤面 ◦

    全て0、全て1、のどちらかで表現 • Channel [57] = ◦ 持ち駒 [28] x 自分・相手 [2] ▪ 歩[上限8] 香桂銀金[4] 角飛[2] ◦ 王手 [1] 第2回世界将棋AI電竜戦エキシビジョンバージョン visualized by netron.app 【将棋AI】N駒関係をMulti-Head Self-Attentionで学習する 続き 将棋でディープラーニングする その24(歩の持ち駒の上限)
  7. ネットワーク構造の工夫(入力) • AlphaZeroとの差分 ◦ 駒配置以外のドメイン情報(効きや王手)を入れている ◦ 局面の履歴(直近8局面)を入れていない ◦ 千日手用の局面繰り返し回数を入れていない ▪

    千日手チェッカーは探索時に別途走らせている • 盤面に紐づかない情報(持ち駒や王手)は全て同じ値で入れている ◦ 入力も出力も画像(盤面)なので、入力増えても合わせるのが楽か AlphaZero Chess/Shogiの論文を読む 将棋でディープラーニングする その40(入力特徴に履歴追加) 将棋AIの進捗 その9(千日手対応)
  8. ネットワーク構造(出力) • 勝率 [1] • 評価値 = -756.… log(1 /

    勝率 - 1) ◦ 従来の将棋ソフトと比較するための便宜的な値 ◦ 伝統的な基準としては1歩の駒得が100点 第2回世界将棋AI電竜戦エキシビジョンバージョン visualized by netron.app dlshogiの評価値のスケール調整
  9. ネットワーク構造(出力) • ポリシー [2187] = 移動先 [9 x 9] ◦

    x 移動元 [27] = ▪ 移動方向 [10]:周囲8方向 + 桂馬2方向 ▪ x 成るかどうか [2] ▪ 持ち駒種類 [7]:歩香桂銀金角飛 ※ 違法手(銀が横に動いたり二歩したり)も提示されうる 第2回世界将棋AI電竜戦エキシビジョンバージョン visualized by netron.app 将棋でディープラーニングする その8(出力に移動元を追加)
  10. モンテカルロ木探索 • Q: Quality: 探索済み子ノードのVの平均値 ◦ V: Value: DNNで計算した勝率 ◦

    有望な局面を優先的に探索するため自然と重みがつく Mastering the game of Go without Human Knowledge 将棋でディープラーニングする その30(探索アルゴリズム)
  11. モンテカルロ木探索 • U: UCB (Upper Confidence Bound) ◦ C(s): N(s)

    に応じて対数的に増加する値 ◦ x P: DNNで計算したポリシーによる局面選択率 ◦ x √N(s) / (1 + N(s, a)) ▪ N(s): 局面sの探索回数 ▪ N(s, a): 局面sでaを指す探索回数 実際に指す際は、基本的には探索回数最大の手を選ぶ A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play AlphaZeroの論文 https://github.com/TadaoYamaoka/DeepLearningShogi/blob/denryu2021/selfplay/self_play.cpp
  12. 学習手順 ものすごく大まかな流れとしては、 • SL (Supervised Learning) ◦ 既存の棋譜で事前学習 • RL

    (Reinforcement Learning) ※ AlphaZeroはこれのみ ◦ ある程度強くなったら自己対局の棋譜で延々と学習 ▪ 探索で読みを入れないと形勢判断つかない局面も、できるだけDNN 一発で分かるように学習を進めていく ◦ 学習局面が偏らないように適宜SLも織り交ぜていく 第 31 回世界コンピュータ将棋選手権 dlshogi with GCT アピール文章 GCT (Gaming pC / Google Colab / Cloud Training) 将棋
  13. ドメイン知識の入っているポイント • ゲーム木を構成するもの:合法手生成、局面遷移 • その他(AlphaZeroのように特化手法を入れないことには拘ってない) ◦ 千日手チェック:DNNによる勝率計算と並列 ◦ 詰将棋ソルバー ▪

    5手詰め:DNNによる勝率計算と並列 ▪ 長手詰め:現局面のみ ◦ 序盤定跡 将棋AIの進捗 その9(千日手対応) 第 31 回世界コンピュータ将棋選手権 dlshogi with GCT アピール文章 スーパーAIエンジニア、川島さんに迫る。#電竜戦世界チャンピオンのお話
  14. がっつりAttention入れたら精度上がる? > Multi-Head Self-Attentionで、離れた位置にある駒の依存関係を学習するこ とで、DCNN単体よりも精度が上がることを期待していたが、少なくとも悪くは ならないが精度が大幅に改善することはなかった。 【将棋AI】N駒関係をMulti-Head Self-Attentionで学習する 続き3 >

    飛び利きは、途中に駒があると隣の升には伝播しませんから、利いているかど うかを正しく伝達するためには、ResNetのような構造で1ブロックで1升ずつ伝 播していくほうが効率的ではないでしょうか。 プロ棋士の谷合廣紀四段がBERTを使った将棋ソフトを作られました