コンピューター将棋の構造 - 評価関数

>特に評価関数(勝又さんなどがよく口にしていますが)は
>誰が、どのようにして決めるのかな?興味津々です。

…と、他ならぬみなもと様からお声がかかりましたので評価関数について掘り下げてみましょう。

評価関数の英語名はStatic Board Evaluator…すなわち、静止局面評価関数となります。

意味はそのまんまで、「静止した局面を査定する仕組み」です。局面を評価する材料は基本的には盤上の駒の数・位置と持ち駒の数・種類…そしてそれから導き出せる事実・情報(例・自玉に王手がかかっている、相手の角にはひもがついていない)だけです。それまでの対局中の手順とか「ここをこーしたら、あーなる」的な「読み」は評価関数の対象外です。

(質問) え???でもボナンザ(簿何座と変換)は○○手先まで読むって聞いたけど?
(解答) はい、それは事実です。ですが「読み」は評価関数の担当ではありません…と言う事です。

人間にとっての「評価」は普通、読みを込んでの結果ですが、評価関数の「評価」は「局面」という対局中におきる情報の断片だけを基に判断を下します。

評価関数の行動は「人間が盤面・駒台をぱっと見て(先を読まずに)形勢判断をする」…と同じような物と理解していただければ十分です。

前回より…

>予め上下限値(例・+1000~-1000)を決めてあり数字が大きい程自分にとって有利(逆なら不利)となります。
>0なら互角ですし、+1000は「敵玉の詰み」となります。

サテ…評価関数はどのような計算をするのでしょう?

対局中、評価関数は何万・何億もの局面を査定しなければなりません(すなわち、評価関数の仕事の99.9999…%は本来不要ということです、エコには程遠いですのう)。数を短時間にこなさなければならない必要上、計算式はエラク簡単です。

【自分の得点】 - 【敵の得点】 …です。

「得点」の計算例*

*極端に単純化した例なので鵜呑みにしないこと。

①駒に点数を付けます。(例・玉 1000点、 飛車 800点、 角 700点、… 歩 100点) 自分の駒の点数を合計します。

②自玉の周辺が金・銀で守られているなら守備駒の数に応じて点数を付けます。

③敵陣地に自分の駒が在るのは「攻撃中」という事なので点数を付けます。

④敵玉に王手がかかっている(詰みならば最高!)のはいい事だ…点数を付けます。

etc... とまあ、「ぱっと見て」判断できる情報を積み重ねて合計をしたのが【自分の得点】となり、敵視点から同様の計算をしたものが【敵の得点】となります。【自分の得点】が【敵の得点】を上回れば「優勢」ですし、逆なら「劣勢」ということです。

実際にはもっと複雑になりますが(例・「駒の得点」は序盤・中盤・終盤で変化する)、「素早く計算」が基本となります。

>誰が、どのようにして決めるのかな?興味津々です。
↑↑↑↑ ここまでたどり着けませんでした。スミマセン。次回に…と言う事で。

投稿者: 紫外線 投稿日時: 月, 06/29/2009 - 04:11 categories [ ]

返信

このフィールドの内容は非公開にされ、公表されることはありません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 使用できるHTMLタグ: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <hr>
  • 行と段落は自動的に折り返されます。

書式オプションに関するさらに詳しい情報...