.

2018年05月28日

AI研究者の視点:藤井聡太はAIに勝てるのか?(2)

 ども勉三です。前回に引き続き、「藤井聡太はAIに勝てるのか?」というテーマでお送りいたします。

指し手決定のメカニズムその2:「評価関数」

 前回、指し手決定のメカニズムの1つ目として「探索」を解説しました。力技の探索だけでは5手先ぐらいまでを読むのが精いっぱいで、5手以内で詰ますことができる終盤ならともかく、それ以外では使い物にならないということを述べました。

 そこで登場するのが「評価関数」というアイディアです。これは、「先を読まずとも、局面を見ただけで先手後手どちらが有利か不利かをある程度点数化できるのでは?」という発想に基づいています。

 もっとも単純な評価関数は、歩は1点、飛車は10点などのように駒の強さに応じて点数を決めておき、お互いの駒(盤上の駒+持ち駒)の点数を合計して、どちらがどれぐらい有利かを見る方法です。これだけなら、高々数十回の計算をすればいいので、コンピュータにとっては一瞬で計算できます。

 この局面ごとの有利不利を点数化する「評価関数」と、前回述べた「探索」を組み合わせて使うことで非常に強力なシナジーが生まれるのです。例えば、5手先まで読んでその時点の局面を評価関数で点数化するとします。そこで点数が悪いものは切り捨てて、良いものだけをさらにその先まで探索すればいいのです。これは「枝刈り」と呼ばれる手法です。探索の各分岐を枝に見立てて、先まで読む必要のない枝は早めに刈ってしまえば計算が少なくて済むというものです。

なぜ近年、評価関数が劇的に進化を遂げたのか?

 このような駒ごとの点数を決めて有利不利を判定するという方法自体は、最近始まったというわけではなく、コンピュータが出るより前の大昔から人間も目安として用いてきた方法です。そういう意味では評価関数というアイディアは真新しいものではありません。しかし近年、この評価関数の性能が劇的に向上し、2005年に登場したボナンザなどに代表されるコンピュータ将棋がプロ並かそれを上回るまでに進化しました。

 この進化の裏には2つの要因があります。1つは「機械学習の発達」です。昔は評価関数を人が経験則で作っていましたが、今はコンピュータに自ら学習させることで最適な評価関数を作ることができるようになっています。

 もう1つは「データベースの発達」です。機械学習には何万局という大量の学習データが必要となります。以前は機械学習をさせたくても、そんな大量のデータを用意することができなかったのです。ところがインターネットの普及により、ネットでチェスや将棋が指せるようになり、その棋譜も公開されて利用できるようになりました。

 こうして大量のデータが使える土壌が整って、機械学習の威力が発揮できるようになり、評価関数は飛躍的な進化を遂げたのです。

機械学習はマシンパワーが要るが、評価関数を作った後は高速で動く

 機械学習で評価関数を作るのは、比較的マシンパワーと時間を要する作業です。しかしながら、いったん高精度の評価関数ができてしまって、それを組み込んだソフトを作れば、実際の対局中のマシンパワーは比較的軽くて良いというメリットがあります。

 ボナンザが登場した直後の2006年の世界コンピュータ将棋選手権では、他の参加者がワークステーションなど高性能の商業用コンピュータで出場する中、ボナンザは普通のノートパソコンで出場し圧勝したと言う逸話があります。

 このことは、筋の悪い評価関数で長く探索するよりも、筋の良い評価関数で短く探索したほうが強いということを物語っています。

評価関数は人間も形成判断に用いている

 評価関数での形成判断は、コンピュータの将棋ソフトだけでなく、人間も同様に行っていることです。コンピュータのように式を作って計算しているわけではないですが、経験から頭の中に各自が評価関数のようなものを作っており、対局時には盤面を見て形成判断をしているはずです。

 プロはこの形成判断が非常に優れており、盤面をぱっと見ただけで次の手が瞬時にいくつか思い浮かぶそうです。そしてその手だけを読み進めていくわけです。これはまさに、コンピュータが評価関数と探索で行っているのと同じことです。

まとめ

 いかがでしたでしょうか。ここまでで、将棋の指し手決定のメカニズムとして「探索」と「評価関数」の2つを紹介してきました。将棋の指し手決定にはあと2つのメカニズムがあります。次回は3つ目を解説したいと思います。

スポンサーリンク

.

posted by 勉三 at 20:00 | Comment(0) | 時事
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。