評価関数
評価関数(ひょうかかんすう)とは、コンピュータにより囲碁や将棋、チェス、オセロなどを指す際に使われるプログラミング技術のひとつで、ゲームの局面の状態を静的に評価し数値に変換する関数のこと。
[編集] 概要
現在の局面がいいのか、悪いのか、を+100点、-500点などの点数で評価し、それをもとにしてプログラムは着手を決定する。
将棋やチェスでは駒の損得、オセロでは確定石(ひっくり返ることのない石)、可能な手の多さ、囲碁では陣地の大きさ、が比較的簡単で正確な評価関数を作りやすい。しかし、評価関数がすべての要素を評価でき、それが正確ならばコンピュータは1手を読むだけで最強となるが、それは難しくどこまで強い人間の局面判断に評価関数を近づけられるかがプログラマの目標となっている。
そのため、着手ごとに枝分かれしていくゲーム木をつくり数手先の局面で評価関数を使用すること(探索)により、着手を決定する手法がとられている。ゲーム終了時の評価は勝ち負けを判断するだけであるから、その評価関数を作ることは容易である。理論的には、終了時からゲーム木(着手)をさかのぼれば現在の局面での最善手を導き出すことができるのであるが、ゲーム終了までのゲーム木を作ると枝が爆発的に多くなる問題があり、現在のコンピュータでは時間的に計算不可能である。そこでミニマックス法を使って探索を途中で終了したり、アルファ・ベータ法を使って枝数を減らし(枝刈り)探索の深さを伸ばすことが行われる。
評価関数の作成は、プログラマの棋力に影響されることも多くなにを重視するかの取捨が非常に難しかった。しかし、将棋では2005年に登場したBonanzaが、6万局の棋譜から評価関数を自動生成するという手法をとりプログラマの主観を排除した。2006年5月に行われた第16回世界コンピュータ将棋選手権大会においてBonanzaが優勝し急速にその手法が広がった。囲碁では、2006年、モンテカルロ法を応用しランダムに終局までをシミュレートし勝率の高かった着手を選択するという「Crazy Stone」が登場し格段の棋力向上を果たした。これは、ある時点での局面を評価関数により静的に評価する手法とはまったく異なるものである。