ATELIER FACTORY / REINFORCEMENT LEARNING × DOBUTSU SHOGI

どうぶつしょうぎで
学ぶ強化学習

ルールしか知らないAIが、自分とだけ戦って、完璧にさす相手に後手で約7割勝てるところまで来た。
どうぶつしょうぎは全部の局面の答えが分かっている。だから、AIの1手1手を「本当の正解」と比べられる。ここに出てくる数字は、全部この実験の本物の記録。

01 ゲームの木

解かれたゲーム

完璧にさし合うと、どちらが勝つのだろう。

3列×4段の盤に、ライオン・キリン・ゾウ・ヒヨコが1枚ずつ。相手のライオンを取るか、自分のライオンを相手の奥の段に取られずに入れたら勝ち(トライ)。取った駒は持ち駒になり、空いたマスに打てる。同じ局面が3回出たら引き分け。

初めの局面からたどり着ける局面は、全部で 246,803,167 通り。2009年に田中哲朗さん(東京大学)が全部を最後まで読み切り、「おたがい完璧なら後手が78手目で勝つ」ことを示した。このページの答えの表は、同じ方法で作り直したもの(このMacで約12分)で、局面の数も勝ち・負け・引き分けの数も、論文と全部一致した。

勝ちの局面 = 相手を「負けの局面」にする手が 1つでもある
負けの局面 = どの手を選んでも、相手が「勝ちの局面」になる

後ろから
勝負のついた局面から1手ずつさかのぼって、全部の局面に答えを書きこむ(後退解析)
手数
勝ちはいちばん早く、負けはいちばん遅くなる手を選んだときの、決着までの手数
答えつきの盤(完全読み切り)

…

勝負のついていない 99,485,568 局面(いま打つ人から見て)
勝ち56,474,473
負け40,328,395
引き分け2,682,700
いちばん長い勝ち173手

駒を押すと、動かせるマスに答えが出ます。

勝=勝ちを守る手 分=引き分け 負=負けになる手(数字は決着までの手数)

02 畳み込み

AIの頭の中

盤を見て、どうやって手を選んでいるのだろう。

AIの「頭」には、盤を16枚の0と1の絵にして入れる(自分の駒5種類・相手の駒5種類・持ち駒6種類、それぞれ4段×3列)。3×3の小さな窓を盤の上ですべらせる「畳み込み」を64枚ずつ、9段重ねる(コネクト4で「論文の方法」と呼んだ作りと同じ)。

出てくる答えは2つ。① 180通りの手(盤の駒を動かす144通り+持ち駒を打つ36通り)それぞれの「よさそう度」。② いま自分が「勝ちそうか」(−1〜+1)。頭の数字は全部で約40万個。

(p, v) = fθ(盤)

p
手ごとの「よさそう度」(合計100%)
v
勝ちそう度(−1 負けそう 〜 +1 勝ちそう)
θ
頭の数字(約40万個)。学習とは、これを直していくこと

つまみで「何局戦ったあとの頭か」を選べる。先読みなしの直感だけで、どの手を選ぶかを見てみよう。初めの局面の本当の答えは「後手の勝ち」なので、勝ちそう度がマイナスなら正しい向き。

頭の直感(先読みなし)

03 探索と確率

先読み

頭の直感を、どうやって「よく考えた答え」にするのだろう。

AIは1手ごとに「もしここにさしたら」を何十回も何百回も試す。1回ごとに盤の先へ1本の道をたどり、行き着いた盤を頭に聞いて、その勝ちそう度を通ってきた道に書き戻す。最後に、いちばん多く試した手をさす。

次に試す手 = Q + c · P · √N ÷ (1 + n) が最大の手

Q
その手の、これまでの結果の平均(見積り)
P
頭の直感(02のよさそう度)
N, n
全部で試した回数、その手を試した回数
c
直感をどれだけ信じるか(ここでは1.5)

右は、09で出てくる「壁」の局面。勝つ手は、ライオンをまっすぐ後ろに下げる1手だけ。試す回数を変えると、選ぶ手が変わる。回数を増やすほど良くなるとは限らない。見積りがいったんマイナスに落ちると、その手を試すのをやめてしまい、300回から800回までずっと85回のまま止まる。1,600回を過ぎてやっと見直す。

このページの中で、本物の頭が本当に先読みしています(3,200回は10秒ほどかかります)。

壁の局面で先読み(15,500局の頭。AIは上側=後手の番)

04 損失関数

自分が先生になる

正解を誰も教えないのに、何を目指して学ぶのだろう。

自分どうしで1局さすと、局面ごとに2つの「答え」が手に入る。① その局面で先読みが各手を試した割合 π。② その1局で最後に勝ったか負けたか z(+1・−1、引き分けは0)。頭の答え p を π に、v を z に近づける。

L = (z − v)² − Σ π log p + c‖θ‖²

(z − v)²
勝ちそう度の外れ具合
−Σ π log p
直感と先読みの食い違い
c‖θ‖²
数字が大きくなりすぎないためのおもし

人間の棋譜も定跡も、完全読み切りの答えも、学習には一切使っていない。答えの表を使うのは、強さを測るときだけ。500局さしては頭を直す、を40回くり返して2万局。1手ごとの先読みは100回。

1局から生まれる「先生の答え」(07の対局・AIの番だけ)
直感 p先読み π
この局の結果 z+1(AIの勝ち)
頭の勝ちそう度 v…

p を π に、v を z に近づけるのが学習。π は、このページの中で本物の頭が64回先読みして出しています。

05 観測

学習の記録

2万局のあいだに、何が起きたのだろう。

同じ作りの頭を、3つの設定で2万局ずつ学ばせた。run1 は「同じ局面のくり返し」を知らない。run2 は先読みの中で「前に出た局面に戻る手=引き分け」と知っている。run3 は run2 に加えて、終盤も少しくじで手を選ぶ(いろいろな局面を見るため)。

「正解の手の割合」は、答えの表からでたらめに取った「手によって結果が変わる」2,000局面で、勝ち・引き分け・負けを落とさない手を選べた割合。3つとも1万局を過ぎると95%前後で止まる。

正解の手の割合 = 結果を落とさなかった局面 ÷ 2,000

先読みあり
1手ごとに64回の先読みをしてから選ぶ
直感だけ
先読みなしで、頭のよさそう度がいちばん高い手
3つの学習(横は自分と戦った数)

06 測り方

くり返しは引き分け

「負けない」と「勝てる」は、同じだろうか。

run1 の16,000局の頭を、後手で完全読み切りと20局戦わせた。先読みにこれまでの対局の流れを渡さずに測ると、800回の先読みで 20局とも引き分け。1手も勝ちを手放さなかった。

ところが、先読みに「この対局で前に出た局面に戻る手は引き分け」と教えて測り直すと、20局とも負け。くり返しに逃げられないと、新しい局面に進んで、そこで勝ちを手放していた。

最初の測り方では「負けない力は十分」と言いかけた。測る条件をそろえないと、正反対の結論になる。このページのほかの対局の数字は、全部「くり返しを知っている」先読みで測っている。

同じ局面が3回 → 引き分け

負けない力
勝ちを「負け」にしない。くり返して引き分けに逃げても守れる
勝つ力
勝ちを前に進めて、実際に勝ち切る。くり返しには逃げられない
run1 の16,000局の頭・先読み800回・後手で完全読み切りと20局

先読みに、対局の流れを渡さない

引き分け 20

先読みに、対局の流れを渡す(前に出た局面へ戻る手=引き分け)

負け 20
勝ち引き分け負け
局面A 局面B 局面C またA Aが3回目に出たら、その対局は引き分け 流れを渡さない先読みは、Aへ戻る手を「ふつうの手」と同じに見てしまう

07 ゲーム理論

完全読み切りに勝つ

ルールだけから学んだAIは、完璧な相手に勝てるのだろうか。

後手(完璧なら必ず勝てる側)を持たせ、完全読み切りと戦わせた。相手は、いちばん良い手が複数あればその中からくじで選ぶ。くじの種を5通りに変えて20局ずつ、100局。

run3 の 15,500局の頭 は、先読み64回・128回・200回のどれでも 100局で68勝32敗。引き分けは1局もない。勝つまでは平均86〜104手。完璧なら78手なので遠回りだが、最後まで勝ち切る。

右は、その中の1局。盤の上の「あと何手」は、その局面の本当の答え。AIが勝ちを手放さずに進んでいるかを見よう。

勝率 68% = 68 ÷ 100 (ブレ ±5%くらい)

ブレ
√(p(1−p)÷n)。100局だと約±4.7%
15,500局の頭(上側・後手)vs 完全読み切り(下側・先手)

08 対照実験

読みすぎると勝てない

先読みを増やせば、いつも強くなるのだろうか。

頭4つそれぞれで、先読みの回数だけを変えて、後手で20局ずつ完全読み切りと戦わせた。勝てたのは15,500局の頭だけで、それも64〜200回のときだけ。400回・800回では1局も勝てない。32回では20局とも引き分け。

理由は03で見たとおり。少し深く読むと「勝つ手は相手にうまく返される」と気づいて見積りを下げ、その手を試すのをやめてしまう。さらに深く読めば「それにも返せる」と分かるのに、そこまで読みに行かない。

勝ち数がたまたまではないか、くじの種を変えて確かめた(下の表)。どの種でも12〜16勝。

先読みの回数と、後手20局の勝ち数
15,500局の頭・種を変えて20局ずつ

09 観測

最後の壁

勝てない頭は、どこでつまずいているのだろう。

先読み800回で後手を持たせ、勝ちを手放しそうになった所(壁)で、答えの表を使って正しい手に直して続けさせた。すると run1 と run3 の頭は、壁がほんの1〜2か所で、そこを直すだけで20局全部勝った(run2 の頭は壁が1局に6か所以上あり、直しても勝ちのまま同じ所を回って、多くが引き分けになった)。

15,500局の頭の壁は20手目。勝つ手はライオンをまっすぐ後ろに下げる手だけ。run3 の2万局の頭は70手目まで1手もまちがえないが、そこで勝つ唯一の手「ゾウを奥の段に打つ」を、800回の先読みで一度も試していない。直感が、はじめから候補に入れていない。

AIは上側(後手)。緑=勝つ手の行き先、赤=AIが選んだ手の行き先。

3つの頭の、最初の壁

10 最適化の落とし穴

学び続けると弱くなる

学習を進めれば、ずっと強くなるのだろうか。

run3 は15,500局の頭が完全読み切りに勝ったのに、そこから4,500局学んだ2万局の頭は、どの先読みの回数でも1局も勝てない。正解の手の割合は96%台のままで、ほとんど変わらない。

自分どうしの対局は平均30〜45手で終わり、完全読み切りが選ぶような80手・100手の長い勝ち筋は、学習の中でほとんど出てこない。見たことのない長い筋の終盤で、たまたま覚えた手を、次の学習で上書きしてしまう。いまのところ、これがいちばん有力な考え。まだ確かめてはいない。

正解の手の割合 ≠ 勝ち切る力

正解の手の割合
でたらめに取った局面での平均。ほとんどの局面は簡単
勝ち切る力
80手のうち1手でも外すと勝てない。いちばん難しい1手で決まる
学習の途中で毎回測った、後手20局の結果(先読み64回・くり返しを知っている)
run3・先読み64回128回200回800回
15,500局14勝16勝14勝0勝
20,000局0勝0勝0勝0勝

11 研究の最前線

この先

答えのないゲームでは、どうなるのだろう。

どうぶつしょうぎは答えが分かっているので、AIの1手ごとの正しさを測れる。次は、5×5の盤でさす「5五将棋」。まだ誰も解いていない。そして本将棋。盤が大きくなるほど、答えの表は作れなくなり、強さは対局でしか測れなくなる。

このページで見た「壁は1〜2か所」「読みすぎると外す」「学び続けると外す」は、大きな盤でも起きるのか。小さな盤で本当の正解と比べた経験が、その問いの入口になる。

大学で出会う名前:強化学習・モンテカルロ木探索・後退解析・ミニマックス・畳み込みニューラルネットワーク・確率的勾配降下法

盤の大きさ
どうぶつしょうぎ3×4=12マス・駒8枚
全部の局面を読み切り済み
5五将棋5×5=25マス・駒12枚
まだ解かれていない
本将棋9×9=81マス・駒40枚
解かれていない
年表
  • 2008どうぶつしょうぎ誕生(ルール 北尾まどかさん・デザイン 藤田麻衣子さん)
  • 2009田中哲朗さんが完全解析。後手の78手勝ち
  • 2017AlphaZero。ルールだけから自分と戦って、囲碁・チェス・将棋を学ぶ(このページのやり方)
  • 2026このページ。ルールだけから学んだ頭が、完全読み切りに後手で100局68勝

おわりに

1手の重さ

正解の手を選べる割合は、1万局を過ぎたころから95%でほとんど変わらなかった。でも完全読み切りに勝てるかどうかは、80手のうちたった1手で決まっていた。ライオンをまっすぐ下げる手。持ち駒のゾウを奥に打つ手。一見なにもしない、あるいは思いつきにくい1手。

強さは平均では測れない。いちばん難しい1手を、読み切れるかどうか。それは人間の将棋でも同じかもしれない。

相手