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

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

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

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

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

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

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

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

前回より…

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

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

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

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

「得点」の計算例*

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

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

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

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

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

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

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

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

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

コメントの表示オプション

お好みの表示方法を選択し、「設定の保存」をクリックすると、表示方法を変更することができます。

藤原佐為

>囲碁ではまだまだPCがとても弱いと聞きます。 評価関数(?)が、将棋、オセロ、チェスなどと全く違う考えなのでしょうか?

囲碁は将棋、オセロ、チェスと同じタイプのゲーム(これも後ほど)なので極言すれば、「同じ」です。

将棋は序盤には30~40手程度の候補手で始まって持ち駒が入ると候補手がグンと増えます…従ってソフトの検索量も応じて増えます。囲碁は逆に序盤には300以上(19x19=361)の候補手があり手を指すごとに候補手の数が減っていきます。

囲碁ソフトの「壁その一」はいかに序盤の候補手の広さをコントロールするかになります。

「壁その二」… 囲碁では評価関数に必要な査定の基準が将棋ソフトに比べて確立されていません(と思う)。

…碁盤は将棋盤の4倍の升目がありますのでその分検索用のメモリーも食います。(でも駒は白黒しかないからどっこいか?)

>ちなみに、通信軍人将棋というのがあって、これは偶然もよくあるので評価できませんが、30~50勝1敗くらいのペースだと思います。

軍人将棋は「将棋」の名前は付けど本将棋とは全然別物のゲームとなります。その理由はゲームに(ご指摘の通り)「偶然性」が介入するからです。

>PCに羽生名人、渡辺竜王の棋譜を全部打ちこんだり、大山・升田元名人の勝負手を覚えさせることも可能なのでしょうか?

質問を文字通り受け取れば、「できます」…になります。

(注)「大山名人 全棋譜集」をデータベースに落として「同じ局面が出現したら大山名人と同じ手を指せ」としておけば で・き・ま・す が、実用性は皆無でしょうね。終盤で同一局面に遭遇する確率はほとんどありませんから。

実用があり、重要なのは羽生名人、渡辺竜王、などの達人の棋風(思考・大局観)を真似をすることでしょうか…これはまだまだですね。5年ないし、10年後にはいい所までたどり着けるのではないかと。

(追記)駒音で数ヶ月前に宣言しましたが、10年以内に将棋ソフトはA級棋士と指し分ける程度の実力を備えると我は思っております。

ファミコン将棋

御感想と鋭い質問に大感謝です。フィードバックか有ると励みになります。

>教えて欲しいことは、東大将棋7やボナンザの強いヤツだとアマ初段レベルではなかなか勝てません。 
>ハム将棋が、故意に弱くして悪手を指すようにしていると思うのです。 

ハム将棋と東大将棋7・ボナンザでは格がダンチです。例えるなら…自転車と自動車の違いくらいはあります。ソース(プログラム)を読んだわけではないので断言はできませんが、

ハム将棋 - 「読み」は3手*かそれ以下(一手も十分ありえます)…とにかく将棋をルール通りに遊べればよろし。
東大・ボナ - 何でもアリのサラブレッド

*「なぜ3手?」…は後ほどの お・た・の・し・み。

「ハム将棋が、故意に弱くして悪手を指す」のではなく、強くなるために必要な要素が最初から実装されていません。

「必要な要素」とは?

・質の高い評価関数
・読みの深さ - 深く、そして早く読むには①早いマシン…マルチCPUなら尚よろしい②大量のメモリー… 両方ともハム将棋(とフラッシュ)の守備範囲外です
・定跡ファイル - まともな序盤を指すためには必要です (後に書きます)
・詰め将棋エンジン (後に書きます)

>また、強いソフトは稀に手を変えてくることがあるようなのです。 この辺りは、設定ができるものなのでしょうか?

同じ評価度の候補手が二つ以上存在する時(特に定跡をなぞる時は)はランダムに選ぶ…というのが普通です。

ソフトで「強さを調節」するには

①検索時間に制限をかける
②定跡ファイルを意図的に使用しない
③ある程度の深さで読みを打ち切る
④必ずしも最善の候補手を指さない…ランダムに緩めの手を選択する

…で行われます。

(続く)

何のことやらわからない・・・

管理人さん、膨大な資料をありがとうございます。 全くわかりませんが、興味はちょっとあります。

たぶん「ファミコン」が出たのは昭和の終わり頃(?)。私が購入したのは、発売して少し経っていたと思われるので、まだ平成にはなっていなかった(なぜなら大学に受かってから買ったから)。

表題は忘れましたが「内藤王位の将棋入門」みたいなソフトだったと思います。これが異常に弱い・・・ その後「森田将棋」が出ました。これは、序盤は滅茶苦茶ですが、終盤は強かった。 これらの以前に、ゲームサンターに将棋がありました。1回¥100で、勝つと6枚落ちで30秒とかになるヤツ。これも弱かった。

最近、プレステ2の東大将棋4とPCのハム将棋をしました。 ハム将棋などは、まず人間が負けることはあり得ない、というレベル。東大将棋4は、持ち時間が長いと時々負けてしまいます。

ここで質問というか、教えて欲しいことは、東大将棋7やボナンザの強いヤツだとアマ初段レベルではなかなか勝てません。 ハム将棋が、故意に弱くして悪手を指すようにしていると思うのです。 また、強いソフトは稀に手を変えてくることがあるようなのです。 この辺りは、設定ができるものなのでしょうか?

もうひとつ、オセロやチェスではまず人間が勝てません。 このスレに‘藤原佐為’が出てきましたが、囲碁ではまだまだPCがとても弱いと聞きます。 評価関数(?)が、将棋、オセロ、チェスなどと全く違う考えなのでしょうか? ちなみに、通信軍人将棋というのがあって、これは偶然もよくあるので評価できませんが、30~50勝1敗くらいのペースだと思います。

PCに羽生名人、渡辺竜王の棋譜を全部打ちこんだり、大山・升田元名人の勝負手を覚えさせることも可能なのでしょうか? マジな質問ではないので、最新のPC事情などが聴けると嬉しいです。

ランダム対局

(読み方)「+」は先手の駒、「-」は後手の駒。

無明に「王手のみを優先する(それ以外はランダム)」評価関数(つまり、「猿並み」)を実装して自身と対局した例です。なぜか…①先手が穴熊(嘘みたい)、②後手の玉が5五!!!


87 [P2][KA => (2,8) ...]
  9   8   7   6   5   4   3   2   1 
 -KY -KE ... -KI ... -KI ... ... -KY 1
 ... -HI ... -GI ... ... ... ... ... 2
 -FU -FU -FU -FU ... ... ... ... -FU 3
 ... ... ... ... ... ... ... -FU ... 4
 ... ... ... ... -OH -FU ... ... ... 5
 ... -KA +FU ... ... ... ... ... ... 6
 +FU +FU +KE +FU ... +FU -RY +FU +FU 7
 ... ... ... +KI ... +GI ... -KA +KY 8
 +KY ... ... ... -KI ... ... +KE +OH 9

87手後、2八角打で詰みでした。

興味深いのはこの程度のいい加減な評価関数(しかも一手読みのみ!!)でもきちんと(大多数が200手以内で)終局までたどり着きます。

9九銀打で華麗(?)に詰みデス…


75 [P2][GI => (9,9) ...]
  9   8   7   6   5   4   3   2   1 
 ... -KE ... ... -OH ... ... -KE -KY 1
 -KY ... ... -KI ... ... -GI ... ... 2
 -FU -FU ... ... ... -FU ... -FU -FU 3
 ... ... ... ... -FU ... -FU ... ... 4
 ... -KI ... ... ... ... ... +FU ... 5
 ... +FU -HI ... ... +FU +FU ... ... 6
 +FU -KE ... +FU +FU +HI ... ... +FU 7
 +KY +OH -KA ... ... +KI ... ... ... 8
 -GI ... ... ... +GI +KI +GI +KE +KY 9

コメントの表示オプション

お好みの表示方法を選択し、「設定の保存」をクリックすると、表示方法を変更することができます。