Slide 1

Slide 1 text

鳥越 貴智 2021/12/03 データサイエンス共有会 #meetup_ds 将棋AI「dlshogi」紹介

Slide 2

Slide 2 text

ボードゲームとAI ● Deep Blueがカスパロフ(チェス世界チャンピオン)に勝利したのは1997年 ○ この話を中学生の時に知った鳥越は、じきに将棋も負けるのかーと思っ て、入りたての将棋部でやる気をなくし幽霊部員に(ぉぃ) ● チェスより状態数が多い将棋や囲碁は、それから20年経った2017年に、 ○ AlphaGoが柯潔九段(囲碁世界レート1位)に勝利 ○ Ponanzaが佐藤天彦名人(竜王に並ぶ最高位称号)に勝利 ○ AlphaZeroが教師なしでチェス・囲碁・将棋の当時最強ソフトに勝利

Slide 3

Slide 3 text

AI時代の将棋界 ● プロ棋士の最新形がAIの影響を強く受けるように ○ 振り飛車はだいぶ珍しい存在に…… ○ 居玉や中住まいなど、あまり囲わないまま中盤・終盤になることも多い ● 対局中継でAIの評価値・候補手が表示されるのが一般的に ○ 観る基準が、プロならではの妙手を指せるかどうかではなく、AIの最善 手を指せるかどうかに…… ○ 解説棋士がAI候補手を検討しようとして「これで形勢いいんですか ね?」「これ指せたら人間じゃないですね」みたいな光景もありがち 「評価値ディストピア」の世界をトップ棋士はどのように見ているのか AIは将棋をどう変えたのか?谷川浩司九段が語る棋士の未来

Slide 4

Slide 4 text

dlshogi ● AlphaGo, AlphaZeroの手法をベースとしたディープラーニング将棋ソフト ○ AlphaZeroが発表される前から開発 ○ AlphaZeroのコードやモデルファイルは非公開(のはず) ● dlshogiで学習したGCTがAI電竜戦で連続優勝 ● 藤井聡太竜王(四冠)が研究に取り入れ、渡辺明名人(三冠)も追いかける ● 「水匠 vs dlshogi」では、渡辺明名人と佐々木勇気七段の解説付き 渡辺明名人、1秒間に8000万手読むコンピュータを購入しディープラーニング系のソフトも導入 最強CPU将棋ソフト『水匠』VS最強GPU将棋ソフト『dlshogi』長時間マッチ観戦記 第一譜『水匠』杉村達也の挑戦

Slide 5

Slide 5 text

dlshogiの棋風 ● 「大局観がめちゃくちゃいい」 ○ 評価関数が優れている ● 「読む量が少なくて、広く読むという感じではないので」「タダ捨てとかが 苦手なんだと思います」「5手先の必至とか相当ダメ」 ○ 評価関数が重くて探索が遅い ● 「序盤はプロレベルで、終盤でアマ初段にバトンタッチしている」 ○ 読みが衰えても大局観で押し通す熟練の戦い方に似てる 渡辺明名人、1秒間に8000万手読むコンピュータを購入しディープラーニング系のソフトも導入 Deep Learning将棋は従来の将棋ソフトとここが違うぞ 羽生善治も認める「長考に好手なし」――将棋・囲碁で1手に5時間かけた棋士の結末

Slide 6

Slide 6 text

dlshogi作者文献 将棋AIで学ぶディープラーニング 強い将棋ソフトの創りかた(12/20 発売予定) 第 31 回世界コンピュータ将棋選手権 dlshogi with GCT アピール文章 TadaoYamaoka/DeepLearningShogi - GitHub TadaoYamaokaの日記

Slide 7

Slide 7 text

ネットワーク構造(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 機構

Slide 8

Slide 8 text

ネットワーク構造(入力) ● 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で学習する 続き

Slide 9

Slide 9 text

ネットワーク構造(入力) ● 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(歩の持ち駒の上限)

Slide 10

Slide 10 text

ネットワーク構造の工夫(入力) ● AlphaZeroとの差分 ○ 駒配置以外のドメイン情報(効きや王手)を入れている ○ 局面の履歴(直近8局面)を入れていない ○ 千日手用の局面繰り返し回数を入れていない ■ 千日手チェッカーは探索時に別途走らせている ● 盤面に紐づかない情報(持ち駒や王手)は全て同じ値で入れている ○ 入力も出力も画像(盤面)なので、入力増えても合わせるのが楽か AlphaZero Chess/Shogiの論文を読む 将棋でディープラーニングする その40(入力特徴に履歴追加) 将棋AIの進捗 その9(千日手対応)

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

ネットワーク構造(出力) ● ポリシー [2187] = 移動先 [9 x 9] ○ x 移動元 [27] = ■ 移動方向 [10]:周囲8方向 + 桂馬2方向 ■ x 成るかどうか [2] ■ 持ち駒種類 [7]:歩香桂銀金角飛 ※ 違法手(銀が横に動いたり二歩したり)も提示されうる 第2回世界将棋AI電竜戦エキシビジョンバージョン visualized by netron.app 将棋でディープラーニングする その8(出力に移動元を追加)

Slide 13

Slide 13 text

モンテカルロ木探索 ● Q: Quality: 探索済み子ノードのVの平均値 ○ V: Value: DNNで計算した勝率 ○ 有望な局面を優先的に探索するため自然と重みがつく Mastering the game of Go without Human Knowledge 将棋でディープラーニングする その30(探索アルゴリズム)

Slide 14

Slide 14 text

モンテカルロ木探索 ● 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

Slide 15

Slide 15 text

学習手順 ものすごく大まかな流れとしては、 ● SL (Supervised Learning) ○ 既存の棋譜で事前学習 ● RL (Reinforcement Learning) ※ AlphaZeroはこれのみ ○ ある程度強くなったら自己対局の棋譜で延々と学習 ■ 探索で読みを入れないと形勢判断つかない局面も、できるだけDNN 一発で分かるように学習を進めていく ○ 学習局面が偏らないように適宜SLも織り交ぜていく 第 31 回世界コンピュータ将棋選手権 dlshogi with GCT アピール文章 GCT (Gaming pC / Google Colab / Cloud Training) 将棋

Slide 16

Slide 16 text

ドメイン知識の入っているポイント ● ゲーム木を構成するもの:合法手生成、局面遷移 ● その他(AlphaZeroのように特化手法を入れないことには拘ってない) ○ 千日手チェック:DNNによる勝率計算と並列 ○ 詰将棋ソルバー ■ 5手詰め:DNNによる勝率計算と並列 ■ 長手詰め:現局面のみ ○ 序盤定跡 将棋AIの進捗 その9(千日手対応) 第 31 回世界コンピュータ将棋選手権 dlshogi with GCT アピール文章 スーパーAIエンジニア、川島さんに迫る。#電竜戦世界チャンピオンのお話

Slide 17

Slide 17 text

がっつりAttention入れたら精度上がる? > Multi-Head Self-Attentionで、離れた位置にある駒の依存関係を学習するこ とで、DCNN単体よりも精度が上がることを期待していたが、少なくとも悪くは ならないが精度が大幅に改善することはなかった。 【将棋AI】N駒関係をMulti-Head Self-Attentionで学習する 続き3 > 飛び利きは、途中に駒があると隣の升には伝播しませんから、利いているかど うかを正しく伝達するためには、ResNetのような構造で1ブロックで1升ずつ伝 播していくほうが効率的ではないでしょうか。 プロ棋士の谷合廣紀四段がBERTを使った将棋ソフトを作られました

Slide 18

Slide 18 text

ところで将棋の計算複雑性って? 究極の評価関数は必勝判定:先手必勝・後手必勝・引き分け(千日手・持将棋) 一般化将棋の計算複雑性については知られているが、だからといって将棋の必勝 判定アルゴリズムの具体的な計算時間については何も言えない(はず) もちろんディープラーニングがそこに辿り着けるかの保証は全くない(はず) > 将棋の盤面を縦横9マスから縦横nマスに一般化したとき,与えられた局面から 先手が勝てるかどうかを決定する問題は指数時間完成であることを示す. n×n盤面上の将棋の指数時間完全性について (1987) 一般化詰将棋問題の指数時間完全性 (2001)

Slide 19

Slide 19 text

将棋AIの新たな方向性 > 将棋の手の意味を理解する上で主に用いられる情報は「その手の代わりにパス を指したらどのような変化になるか(≒相手の狙いは何か)」や、「その後の手 の進行においてその手の有無で評価値がどの程度変わるか」です 棋力ゼロでも棋戦解説はできるのか(実践編) > 何番煎じだというネタですが、接待将棋プログラムが一応動くようになりまし た! > MultiPVで思考し、手番から見た評価値が100以上の指し手のうち、最も100 に近いものを選択する単純な仕組み。 https://twitter.com/tayayan_ts/status/1444460359331446785