original image: © Bergfee - Fotolia.com
original image: © Bergfee - Fotolia.com
AlphaZeroクローンはあちこちにあるが、どうも将棋とかオセロとか三目並べとか、ありきたりな題材しかない。
AlphaZeroの原理はモンテカルロ探索木なので、原理上は完全情報ゼロ和ゲーム、すなわち盤面の組合せが有限であるものは全て攻略できることになる。
出典:wikipedia Monte Carlo Search Tree
しかし囲碁、オセロ、三目並べ、将棋、チェスが攻略できるだけでもそれなりにウレシイが、世の中にある問題の大半は完全情報ではない。現実の問題をAlphaZeroに入力する際には、不完全情報ゲームでも勝てる見込みがないといけない。
ところがいくら探しても僕の見える範囲では不完全情報ゲームを攻略したという話は見つからない。そういうときは自分で試すしかないのである。
AlphaZeroのソースコードを追いかけていた僕は、不意に奇妙な喪失感に襲われた。
「なんだ、こんなもの、できて当たり前じゃないか」
もちろんこの「できて当たり前」にたどり着くまでに無数の時間を要したことは間違いない。しかしごく僅かなソースコードを紐解くと、本当にびっくりするくらい、「できて当たり前」のプログラムがそこにあるだけだったのだ。
AlphaZeroの原理は、蓋を開けてみればびっくりするくらい単純だ。
まず、ある盤面の状態から取るべき行動の選択肢を決定する。
それを決定したら、盤面をいろんな方向から見て(普通の囲碁や将棋などのゲームは90度変化しても同じ対象性を持っているのでデータを効率的に増やすことが出来る)、それも学習する。
コレを繰り返していき、最後に勝敗が決まった時、「この盤面のときにこういう行動をとったら最後は勝った(負けた)」という情報を後付で与えてから学習する。これを強化学習と呼ぶ。
深層ニューラルネットワークの出番はなさそうに見えるが、モンテカルロ探索木の内部で、深層ニューラルネットワークを使った推定を行う。
実際の推定を行っている部分では、nnet.predictで推定させている。
このニューラルネットは文字通り盤面(canonicalBoard)を見て、自分の打ちたい手を推定している。
ニューラルネット本体も拍子抜けするくらい簡単で、慣れた人ならコレを見て「バカにされてるのかな」と思うくらいだろう。そもそも三目並べにこんな複雑なニューラルネットが必要なわけがない。
この連載の想定読者は文系なので、簡単に図にしたものが下図である。
盤面を入力して、典型的な畳込み→バッチ正規化→ReLU(活性化)のブロックを四回経由したあと、全結合層二層を通って行動推定(Pi)と価値推定(v)を学習する。
あまりにシンプルだ。
しかしこのシンプルすぎるニューラルネットの構造は囲碁でもオセロでも変わらない。
ある人工知能研究者に「AlphaZero面白いよね」と言ったら「どこがですか」と返されたのを不意に思い出した。
確かに、決定論的世界は、極言してしまえば全パターン探索出来る問題に対しては万能である。そもそも全パターンを探索するように設計されているんだから「できて当たり前」なのは当然だ。
AlphaZeroがプレイするブラックジャックを実装しようとした僕は、「もしかして最初から無理なことをやらせようとしてるのかな」と少し怯んだ。ヒヤッと冷たいものが背中を走る。めったにないことだが、見当違いをしていた可能性を感じたからだ。
しかし冷静に考えれば、あらゆる盤面から「次の理想的な状態」を確率的に推定するのがAlphaZeroである。であれば確率論的な不完全情報ゲームが攻略できないわけがない。そしてそれができるとき、AlphaZeroはあらゆる意味で真のゲーマーだと言える。
ただし、AlphaZeroにブラックジャックを遊ばせるには少々骨が折れたことは認めなければならない。普通の作り方ではダメなのだ。
ゲームに登場するあらゆる公開されるべき情報を、全てAlphaZeroが「見える」ように配置してやる必要がある。そうしなければ適切な判断ができないからだ。
しかし、当然、全部見せてはいけない。次にどのカードがでるか知っていたら確率的ゲームにならないからだ。ここの実装は一工夫か二工夫くらいはする必要があった。
とはいえプログラムそのものは30分程度で完成した。
そのことで特段、得意な気分になったり、絶望したりはしない。もはや深層学習を生業にする人間にとって、プログラマの作業時間など学習時間に比べれば遥かに少ないことは常識だからだ。
会議の合間にあいてる計算機で学習を走らせ、たしかにロスが減る(人工知能が学習している)ことを確認して、1時間ほどして戻ると、待っていたのは驚くべき結果だった。
左から、勝利数、敗北数、引き分け数と読む。
左上が、第28世代のニューラルネットと第2世代のニューラルネットを対戦させたものだ。第28世代の圧勝である。明らかに、AlphaZeroはブラックジャックを攻略可能であることがわかった。
ただ、もっとびっくりしたのは右下の結果だ。これは第28世代と互角の勝負をしているように見える。
対戦相手は完全にランダムな判断をするプレイヤーだ。
学習をもっと長くやらないと本当のところはわからないが、下手な考えをもったプレイヤー(第2世代)よりも完全にランダムなプレイヤーの方が強いのかもしれないという疑問が湧く。
ちなみに、オセロでそこそこ強いのは、完全にランダムな手を打つプレイヤーである。
ウソでない証拠にこのゲームをやってみるといい。
もっと対戦を繰り返さないと本当のところはわからないが、AlphaZeroは確率論的ゲームも十分学習し、勝利できる見込みがあることはわかった。不完全情報ゼロ和ゲームが解けるということは、おそらく不完全情報非ゼロ和ゲームもいい成績をとれるだろう。
ということはすなわち、AlphaZeroは文字通りあらゆる「ゲーム」に勝利できる可能性を手にしたといえる。
とはいえ、現状のAlphaZeroにも「できそうにないこと」にも言及しないとフェアではないだろう。
AlphaZeroはおそらく、いまのところわかっている範囲では、ゲーム理論でいう「ゲーム」でないものは解けない。
コンピュータゲームには「ゲーム」でないものは少なくない。ゲームというよりも「遊び」と呼ぶべきものだ。
まず、Minecraftをプレイすることはできない。
Minecraftには勝ち負けがなく、確たる報酬もないからだ。また、取りうる選択肢が無限大にあるので、モンテカルロ探索木での探索には向かない。むしろAlphaZeroにMinecraftをどう遊ばせるか(見せるか)ということは重要な課題のひとつになるだろう。少なくともMinecraftを遊ばせるにはAlphaZeroのニューラルネットはシンプルすぎる。
AlphaZeroは深層強化学習の研究者たちのなかで中心的な話題である3D迷路を解くことも難しいだろう。これもゲーム理論で言う「ゲーム」ではないからだ。
任意の3D迷路を解くには全く別のアプローチが必要だし、AlphaZeroが原理的にそれが解けるとは思えない。俯瞰する形の2D迷路なら解けるかもしれない。ただし任意の2D迷路を解けるかは不明。試す価値はあるかもしれない。
これは僕の想像だが、3D迷路で敵を全部撃ち殺す、みたいな「ゲーム」は、AlphaZeroにとって複雑すぎる。AlphaZeroは内部状態を持たないから、場面場面での最適解しか推定することができない。
人間でもそうだが、3D迷路を攻略するゲームの場合、頭のなかに地図を思い浮かべて、「ここはさっき来た、ここは行ってない」という記憶をもとに頭の中にメタゲームを構築しなければならない。メタゲームの攻略はAlphaZeroだけでできるだろうが、メタゲームを作り出すためには別の工夫が必要だろう。
とはいえ、AlphaZeroはもっとじっくり腰を据えて研究する価値がある。本職の研究者にとってはあまり魅力のない題材かもしれないが、AIの実用化を生業とする筆者には非常に興味深いテーマだ。もっと掘り下げてみたい。
おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)
登録はこちら新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。