謎の棋士”Master”の正体は最強の囲碁AI “AlphaGo”の最新版

先日、囲碁のオンライン対局サイトにおいて強豪に対し勝利を重ねていた謎の棋士”Master”の正体がGoogleの開発した囲碁AIであるAlphaGo(アルファ碁)の最新バージョンであることが明かされました。今回は、AlphaGoを中心に囲碁や将棋のプログラムについて紹介してみたいと思います。


AlphaGoとは

AlphaGoは囲碁を打つことに特化した人工知能プログラムです。2015年に欧州チャンピオンの樊麾二段と対局して勝利した結果を引っさげて、英国の科学雑誌Nature上で

“Mastering the Game of Go with Deep Neural Networks and Tree Search”

(深層ニューラルネットワークおよびツリー探索による囲碁競技の習熟)

という題目の論文により昨年発表されました。この論文の中身を簡単にまとめると、以下のようになります。

  • 囲碁は、強い人工知能を開発することが最も難しい古典的なゲームである
  • 機械学習と樹形探索の組み合わせによって、とても強い囲碁AIの開発に成功した
  • 開発した囲碁AIは、他の既存囲碁AIと対局してほとんど完全に勝利した
  • さらに、ヨーロッパチャンピオンと5局対局して全局に勝利した

欧州チャンピオンに勝利したという成果が目立ちますが、ここで重要なのは2番目のAlphaGoで採用されたアルゴリズムの内容だと思えます。詳細に踏み込むといろいろと難しそうなのですが、少しだけ説明してみます。

囲碁AIは具体的に何を計算しているのか

コンピュータが囲碁を打つためには、どのような手順が必要なのでしょうか。コンピュータが自分で指し手を決めること、さらに、それが無作為な手や試合に全く勝てないような手ではなく、実際に人間と対局しても成り立つような手であることが重要です。

次の手番でどの手を選択するべきかを計算によって決定するためには、明確な基準が必要になってきます。そこで、囲碁や将棋などのゲームのAIは評価関数と呼ばれる指し手がどの程度有力なのかを判断する指標を持っています。これは、とても単純化すれば、ある場所に石を打った時に形勢がどうなるかを点数で評価したものです。

評価関数の計算は複雑で、単に打った瞬間の損得だけでなく、何手も先を読んだ上での勝ちやすさが重要になってきます。将棋やチェスの場合は、対戦相手の玉将やキングを詰ますという比較的わかりやすい目標がありますが、囲碁の場合はそのような取ることですぐに勝利となる対象がないため、評価関数の定義が難しくなってきます。この問題のため、囲碁のAIが人間の棋士に勝つのはとても困難であるとされてきました。

簡単にまとめると、AIは”この手を打つと形勢が何点から何点に変わる”という計算を何度も行って、最も形勢が良くなりそうな手を指し続けていると言えます。

AlphaGoのアルゴリズム

AlphaGoは、棋力を向上させるために主に二つのアルゴリズムを採用しています。それぞれ、機械学習と樹形探索と呼ばれているものです。

機械学習とは、人間らしい指し手とはどのようなものか、実際の棋譜データを元にコンピュータが自ら学習していくという手法です。この場合の人間らしさとは、焦りや疲れなどの人間の限界を反映したものではなく、強い棋士が持っている、有力な指し手に自然に至ることができるような思考を正解として、それを模倣していくようなものです。

樹形探索とは、ある手を指した次の相手の手を予想し、さらにその次の自分の手を何通りも考えて、それぞれに対し相手の次の手を予想し、、という先読みを行う手法です。指し手の選択肢は無数に存在するため、これをすべて探索しているとコンピュータの計算能力を圧迫してしまいます。有力そうな手だけを選択的に読んで進めていくところに工夫があります。

参考文献

[1] D. Silver et al., “Mastering the Game of Go with Deep Neural Networks and Tree Search”, Nature 529 (2016) 484-489.