評価関数とは

将棋ソフトにおける「頭脳」とも言うべき評価関数について少しだけ書いておきます。

将棋を理解しているのか?


全然理解していません。

これは「やねうら王」開発者様が作成された、
「rezero」評価関数の中身を目視すると分かりますが、
とてつもない数字のつじつま合わせをしているだけです。

さらに面白い点は、
学習最初期のパラメタをずっと引きずっています。

現在配布されています「やねうら王110億局面」の段階だと、
ver19までの間に「1000億局面」程度は生成されており、
複数回絞ったことも含めると「数千億局面」を
「ゼロから」学習していると言えます。

こんな途方もない局面を上書きしているのに、
いまだに最初期のパラメタの方向性を保持しています。

つまりは、
プロ棋士の棋譜から学習していった評価関数は、
どこまでいってもプロ棋士の発展系でしかないということです。

ですから、
現存する将棋ソフトの内、
「rezero」以外の将棋ソフトを参考にしたりする行為は、
棋書を読んで研究することと何も変わらない
と断言しておきます。

現在採用している機械学習はこういった構造を持っているので、
「rezero」は真面目に論文を考えても良いと思う。

では何で将棋を判断しているのか?


これはデジタルの世界らしく、
数字に置き換えているので「1と0の世界」ですね。

より具体的に言えば
「勝率が良いか悪いか」といった分類をたくさんしているだけです。

これがなかなかに面白く、
「この手筋は良い」と教えると、
そのパラメタが+50とかになって、
そればかり読みます。

この辺が分かってくると、
完全解析は不可能でも、
ある程度の妥協点を設定することで、
ほぼ狙って手動調整出来ます。

将棋ソフトが認識している評価関数の形


詳しくは書きませんが将棋の本質的に絶対に交わらない勾配(局面)が存在します。

おそらく将棋ソフトが認識している評価関数の形は、
身近な物でイメージするなら
「ルービックキューブ」のような物です。

例えばこの6面の内、
ある表と裏の2面が「居飛車」と「振り飛車」となっていて、
この両面のパラメタはまったくの色違いだけど、
お互いに隣接する残りの4面のパラメタで戦っている感じです。

そしてこの1面は、
3×3の9マスとかではなく、
将棋盤のように9×9の81マス
みたいなイメージで、
将棋ソフトは認識していると考えています。

「3×3のルービックキューブ」を
1面揃えることは結構出来る人はいると思います。
しかし2面、3面となるとどうか?
かなり難しいと思います。

でもネットで検索すれば揃え方を知ることが出来ます。
この揃え方=探索部の「枝刈り」と考えています。

そして面を揃える試行回数=探索部の「NPS」

さらに1マスごとに、ちまちまやってたら全然ダメだ。
事前にある程度カタマリを作っていたら楽じゃないか?
これが3駒関係のBonanzaのブレイクスルー。

将棋ソフトに振り飛車という概念は無い


前項で将棋ソフトが認識している評価関数の形を書きましたが、
何面あるのかということであれば、
KK、KKP、KPP
という構成から分かるように、
盤上の81マスに王様が居る数の分だけ面があります。

だからと言って何十面の立方体ではなく、
初期配置から言えば
今いる居玉の5九と移動する可能性のある5八、6八という
隣接する面で構成されています。

つまり、
将棋ソフトに振り飛車という概念は無く、
将棋ソフトの考える振り飛車は、
あくまで王様が右に移動した場合の局面の一形態でしかありません。

ゆえに、
振り飛車が強い評価関数を作ろうと思えば、
定跡学習において「ひねり飛車」を学習させると
大幅にパラメタが向上します。
(横歩取りでは王様が右に行かないのでダメです)

何故キメラ評価関数で強くなる場合があるの?


私は将棋ソフトの構造を見て、
何が一番驚いたかと言えば、
「rezero」評価関数の中身を見たときです。

私はいままで評価関数というものは、
評価値がチェスソフトのポーン=歩を100点とする構成より、
初手については千日手の0付近から少し先手有利の関係で、
KPP等の各駒の合計値が高度な機械学習によって
+30~+50程度になるように、
構成されているものだと考えていました。

さらに細かくは、
何億という教師局面の評価値等の情報から、
その局面の「勝率が良いか悪いか」といった分類をたくさんした結果だと。

いくら「1と0の世界」といっても
「rezero」評価関数があんな分類をするなんて……。

私がまったく想像すらしなかった分類をしており、
KKPTに「将棋は後手が有利だ!」と言っているパラメタ群
KPPTに「将棋は先手が有利だ!」と言っているパラメタ群

もちろん、概ねという感じですが、
こんな構成の分け方は他の評価関数では見られません。

当たり前ですが指し手決定は評価値の大きさです。
KKPTがいくら声高に「後手の局面が良いよ!」と叫ぼうが、
KPPTのパラメタ総数のほうが9倍程度の圧倒的多数ですから、
多数決で少数派のKKPTさんの意見は通りません。
(本当はKKPTさんのほうが正しかったとしても)

これが通常の評価関数では、
KPPTがそのパラメタの総数から駒組みを担っており、
KKPTは自玉と相手玉の位置関係だけ見て、
かなり雑に「行け!」とか言ってきます。
このような探索部の意見調整の結果で指し手決定されています。

---------------------書きかけ----------------------------

この記事へのコメント

スポンサーリンク