連載コラム『データ分析』

第2回 先端技術紹介①

2016.7.15

今回から、ニュースにもなったAlphaGo(アルファ碁)をテーマにデータ分析や人工知能の先端事例について紹介したいと思います。

アルファ碁に見るデータ分析技術動向

「アルファ碁(囲碁ソフト)がトップ棋士に勝利」
今年の初めにニュースでも多く取り上げられたのでご存知の方も多いと思います。
Googleの開発した”AlphaGo”というソフトがトップ棋士とのハンデなし対戦で4勝1敗と勝ち越して大きな話題となりました。囲碁は盤面の広さや選択肢の多さから、強いソフトを作るのが困難といわれていました。
しかしGoogleが人工知能研究の一環として開発したアルファ碁がその常識を覆してしまいました。

データ分析と人工知能(AI)

データ分析関連の話には人工知能という単語がよく一緒に登場します。
アルファ碁のニュースでも何十万局の棋譜を”分析した”とか人工知能が”学習した”とか書かれていることが多いです。
そもそも人工知能とはどんなものでしょうか。

人工知能とは… 人間の知能(学習・推論・判断など)をコンピューター上で実現することを目指す研究分野

つまりデータから特徴を読み取ったり、評価したり、それをもとに将来の予測を行うというもので、連載第1回目に挙げたデータ分析業務と目的が合致することが多いためデータ分析に活用されることが多いのです。

ボードゲームの技術革新

五目並べやチェス・将棋などのコンピュータソフトで遊んだことがある人も多いと思います。昔は勝てたのに最近はやたら強くなっているなぁ、と感じている方もいらっしゃるのではないでしょうか。
これらのボードゲームのアルゴリズムは急速に進歩しており、ここ数年で将棋や囲碁でプロに勝つまでになりました。その急速な進歩の要因の一つに人工知能の活用があります。
では、アルファ碁がどんなことをしているか知るために、まずボードゲームの基本的なアルゴリズムから見ていこうと思います。

アルゴリズムの基本な考え方

ボードゲームのソフトウェアを作る場合、ゲームのルールを定義するのはもちろんですが、人と勝負するには「人が動かしたものに対してどのように動けばいいのかを判断」する必要があります。しかしこれには膨大なパターンを考える必要があります。

たとえばこの盤面の時はこう動く、というように盤面ごとに動きをプログラムしようとすると

オセロ : 10の56乗
チェス : 10の120乗
将棋  : 10の220乗
囲碁  : 10の360乗

通りのパターンをインプットしておく必要があります。無謀ですね。

そこで、基本となっているのが「その盤面が自分にとって有利なのか不利なのかを判断する関数を定義する」という方法です。
これが評価関数と呼ばれるもので、自分の次の手を評価して最も良い動きを選択したり、数手先の状況が有利か不利かを判断して最善手を選んだり、というようなことができるようになります。

この評価関数をいかにうまく作るかというところでしのぎを削ってきました。このアプローチにより将棋や囲碁ではアマチュアトップレベルの実力にまでなりました。


評価関数のイメージ

オセロで考えて見ます。
例として

評価値= ”ひっくり返せる数”+”角に置けるなら10点加点”+”隣に相手の石があるなら2点減点”

という評価関数を作ってみましょう。

そうすると図のような点数付けができ、次の手を決めることが可能です。
rei_osero


しかしプロにはまだまだ及ばない実力で進歩が停滞気味になってきました。
なぜかというと、開発者自身がどういう盤面が良い盤面なのかを考え、それをアルゴリズム化しているため、本人以上の実力のものがなかなか作れなかったのです。

ここに人工知能によるブレイクスルーが起こりました。

次回はそのブレイクスルーの内容と、先端事例について紹介したいと思います。
この連載のバックナンバーはこちら