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

将棋AI「dlshogi」紹介

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 将棋AI「dlshogi」紹介

社内勉強会資料です。

Avatar for Takatomo Torigoe

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を使った将棋ソフトを作られました