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

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

ここから続けます。

前回説明したように評価関数は「素早く局面の優劣を数値化する」…のですが、「何を基準に?」と突っ込まれると昔は「経験と勘が半々」…と言った所でしょうか。

前回挙げましたが、自分の駒に点を付けて戦力を数値化するのは評価関数の基本中の基本です。「駒得は裏切らない」との格言もありますし。ですが、盤上の争点から遠い駒は「働きが無い」ので割引するのが賢いと言えるでしょう。

(例)終盤で詰めろがかけられる状況なのに

 ①辺境に「と金」を作る
 ②敵玉とは反対側の桂・香を捕る

のに忙しいソフトは有効戦力計算に問題があります。

その他に幾らでも(素早く判断できる)評価項目はたくさんあるでしょう。評価関数は各評価項目に(重要度に応じて)比重を掛けて足し算を行います。

 評価値 = (評価項目① x 比重①) + (評価項目② x 比重②) + (評価項目③ x 比重③)…

はっきり言って評価値は「正確」である必要は全然ありません。特別な状況を除いて(例・「詰み」)漠然と「互角」、「良い」、「かなり良い」…との判断ができれば十分です(後に説明しますよ)。

評価項目を決めるのは評価関数作成の際重要ですが、比重の決定が評価関数の肝となります。比重の値を操作することにより評価項目の貢献度を操作します。当然の事ですが、比重値は対局の進度によって補整するのが質の高い評価関数作成への鍵となります。

(例)序・中盤は「駒得」に重きを置くが、終盤は比重を減らす。

比重値決定の現実は…

 ① ソフト作者が勘と経験を基に初期値を決め
 ② 試行錯誤のもとにチューニングを施す
 ③ 項目②を繰り返す

…となります。評価項目・比重値を変更後の対局で(対ソフト自身、対他ソフト、対人)①強くなればキープですし、②弱くなれば廃棄です。これを飽きるほど繰り返します。これは自動化できますのでたいしたことはありません。途中で作者が新しい評価項目を足すのも当然アリです。

評価関数のチューニング方法に「革命」をもたらしたのがチェスプログラムDeep Thoughtです。(カスパロブを破ったDeepBlueの前身です)

http://www.tim-mann.org/deepthought.html

"The files in this directory constitute the tuning program that was used by Deep Thought to adjust its evaluation function parameters based on a set of some 868 grand-master games."

(意訳)868のグランドマスター(チェスがむちゃくちゃ強い人達)の棋譜を回折して評価関数をチューニングしました。

やり方はこんな感じです。

 ① ある局面をソフトに評価させる
 ② グランドマスターの「模範回答」と比較
 ③ ハズレなら評価関数が②の「正解」を導き出せるように調整する

これでグランドマスターの思考は解らなくても行動は真似ができるようになります。形から入っても強くなれる例です。理由は解らなくてもソフトを強くすることができるという事です。

http://ja.wikipedia.org/wiki/Bonanza
http://en.wikipedia.org/wiki/Deep_Thought_(chess_computer)

この学習法を使用の自律調整方法は将棋ソフト界では「ボナンザ メソッド(学習法)」と呼んでいますが、実際には本家は20年程前に確立されていました。

この学習法を応用すれば「羽生風」将棋ソフトも(理論的には)作れます。

(続)

投稿者: 紫外線 投稿日時: 水, 07/01/2009 - 10:49 categories [ ]

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

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

とても興味深いです。

管理人さん、ありがとうございます。

正直に言って、コンピュータにこのような能力があるとは驚きです。上に書いてあることは、だいたい理解できるつもりですが、まだまだ半信半疑ですね。 私がコンピュータについてあまりにも知らな過ぎる、ということはおおいにあります。

コンピュータが、爆発的に強くなっていることは身をもって知っています。最近ほとんど勝てなくなりましたから。昭和の時代には、ここまでコンピュータが強くなるとは想像できませんでした。

もうじき解説して下さるかもしれませんが「水平線効果」。ボナンザはこれをやりません。 コンピュータは負けそうになると、意味のない王手を繰り返していました。水平線の向こうにある「負け」という現実を回避するために、王手の先手を取ることで隠してしまう・・・ なんかそんな感じでした。 ボナンザは、おそらく「大差」になったことを「自覚」できるみたいです。だから私が稀に勝つ時は、中盤だったりまだ王手のかからない終盤の入り口だったりすることが多いのです。

先日、酔っぱらってハム将棋をやっていたら、飛車を素抜かれて負けそうになりました! しかし、逆転勝ち。ハム将棋はワザと最善手を指さないようにしているような気がします。 かなり以前に、柿木将棋(弱かった)ばかりやっていた時期があります。すると、最善手を考えず「コンピュータの次の一手」ばかり読むようになるのです。棋力がずいぶん落ちたと思いました。

囲碁も同じような思考である、というのはおもしろいです。 楽しみにしていますので、どんどん続けて下さい。

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

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