画像処理とAlphaGoディープネット|【Python・R・エクセル統計学・統計解析】
画像処理とAlphaGoディープネット
2016年3月、米グーグル子会社のディープマインド社によって開発された囲碁ソフトAlphaGoと韓国の棋士イ・セドル九段の対戦が行なわれました。
それまで囲碁ソフトはアマチュアトップレベルの棋力を実現してはいたものの棋力の伸びが頭打ちに近い状況にあり、世界チャンピオンの栄冠を何度も獲得していた世界のトップ棋士であるイ・セドル九段とまともに勝負できると考えていた人は少なかったと思われます。
ところが蓋を開けてみればAlphaGoが5戦して4勝1敗という結果に終わりましたから、AlphaGoが囲碁界に与えたショックの大きさは想像もつきません。
チェス、将棋といったゲームは既にコンピューターが人間のトップを超える能力を示しています。
しかし、囲碁界の一般的な認識では、囲碁ソフトが人間のトップに勝てるようになるのは10年以上先のことと思われていました。
コンピューターにゲームをプレイさせるためには局面を入力してどちらが有利なのか判定させる必要があります。
そうすることができれば基本的には自分の有利を拡大させられる手を見つけてそれに従えば良いのです。
このような判定を行うロジックを評価関数と呼びます。
囲碁以外のゲーム、例えばオセロといったゲームでは角を取るのが得、という知識を基にどちらが有利であるかある程度判定することができますし、チェスや将棋といったゲームでも王将やキングといった絶対的に重要な駒とその周りの駒との相対的な位置関係によって有利不利が強く影響を受けるため、これらを丹念に評価ルールに落しこんでいけばある程度の評価関数は作成できます。
しかし囲碁は他のゲームと異なり評価関数が非常に作りづらいゲームだったのです。
囲碁では石自体に軽重があるわけではなく、どの石のどの形に着目して有利不利を判定すれば良いのかルール化できません。
そこで2000年代後半になって「その局面からランダムに囲碁を打っていき、何勝何敗になるかを計測する」といった力づくの方法が発明され、それが広く使われておりました。
ある意味、人間が局面の評価ルールを作りだすことを放棄したとも言えます。
しかしこの手法により囲碁ソフトの棋力が一段上のレベルとなり、アマチュアトップレベルに近づけたのでした。
AlphaGoに搭載されている手法はこの「ランダムに打って何勝何敗か数える」方法の延長線上にあります。
AlphaGoでは二つの評価方法を併用していますが、一つ目の方法は画像処理に用いられるディープネットの一種であるCNN(Convolutional Neural Network)という技術を用いて、人間同士の棋譜を学習データとして、囲碁の盤面の画像から「強いプレーヤーが次に打ちそうな箇所を予想する」ディープネットを構築します。
そして、それを用いて終局まで打つことで勝率の評価をします。
ある局面を評価するのに今までのようにランダムに打ち進めるのではなく、強いプレーヤー同士の対局の真似をするディープネットを用いて評価を行うという訳です。
二つ目の評価方法は一つ目のショートカットのようなもので、局面のデータのみからーつ目の手法で計算される勝率を直接予想するCNNを構築します。
そして二つの方法を合算して評価関数として用いています。
複雑な仕組みに思われるかもしれませんが、強いプレーヤーの打ち手予想を行うディープネットが全ての元になっています。
強い人間同士の棋譜を用いて最初のバージョンの打ち手予想ディープネットが学習された後、今度はこのディープネット同士で囲碁を打たせ、その棋譜を用いて再度打ち手予想ディープネットを学習させます。
すると最初のバージョンのディープネットより棋力がほんの少しだけ高い、別バージョンの打ち手予想ディープネットが出来上がります。
最初のバージョンのように人間の棋譜を外から与えて学習させる方式を教師あり学習と呼び、それ以降の自分自身が生みだす棋譜のみを使用して学習する方式を強化学習と呼びます。
そしてこの強化学習を数限りなく繰り返すことでAlphaGoは人類トップを超える棋力を実現したのです。
AlphaGoはイ・セドル九段との対戦の際、解説者がしばしば絶句するような人間の理解の範疇を超えた手を打ちました。
はっきりミスだと解説された手もあります。
しかし対局が進むにつれ、ほとんどの場合AlphaGoの構想が人間を上回っていたことが判明していきました。
このように人知を超えた棋力を発揮したAlphaGoですが、その心臓部は先述したとおり、局面の画像を元にした打ち手予想ディープネットなのです。
AlphaGoは囲碁の局面の画像を処理する画像処理技術の一種であると言えるでしょう。
関連記事