嘘と本当と素人の誤解
前書き
え〜、某イベントの某開発者の行動について色々話が出ていますが、コンピュータ将棋の開発者として一点だけ書きたい事があるので書いてみます。
内容は「評価関数を変更せずに、探索ルーチンだけ変えたから棋力は変わらないはず」*1という発言について。
用語解説
まず、いきなり専門用語が出て来ても開発者やソフトに詳しいファン以外の方にはチンプンカンプンだと思うので、そこの説明から。
「評価関数」と言うのは、人間で言えば「形勢判断」や「大局観」に相当するものです。
具体的に言うと、将棋の局面からその局面が先手・後手のどちらが有利かを数値化する為の関数です。
例えば駒割で言うと、「歩を100点、桂馬を200点…龍は1500点」という感じで事前に*2駒ごとに点数を付けておきます。
で、局面を見ると「先手の歩と後手の桂馬を交換した局面だから、この局面の評価値*3は+200点」と計算します。
局面の何を元に評価値を計算するかはソフトによってまちまちですが、基本的には「局面にこういう特徴(状況)がある。だから+何点」と判断するのは、駒割だけの評価関数の場合と同じです。
次に「探索ルーチン」ですが、これは「先読み」に相当します。
将棋の場合はαβ探索という手法があり、これを基本にして色々と拡張します。
探索ルーチンの動作は、「自分がこう指すと相手はこう指すだろう。じゃぁその次は・・・」と延々と先を読んでいく訳です。
本題
さて、ここで冒頭の発言に戻る訳ですが、コンピュータ将棋ではなく人間に置き換えると「形勢判断の力は変わらないけど、先読みの力だけ変わったから、棋力は変わらないはず」となります。
で、こう置き換えると「その発言はおかしい」という結論になるかと思います。つまり、冒頭の発言は「本当」ではありません。
じゃぁ「嘘」か「誤解」かなんですが、これについてちょっと検証してみます。
まず「誤解」である場合、つまり冒頭の発言の通りであると開発者の方が思っていた場合です。
この場合、開発者の方は某チェスソフトを参考に探索ルーチンを実装し直す必要はありません(無いと判断するはずです)。
だって、「探索ルーチンだけ書き換えても棋力が変わらない」なら、わざわざ他のソフトを参考にする必要も、複雑な(=バグが入りやすい)探索ルーチンを実装する必要も無い訳ですから。
誤解していたなら、単純な(何も拡張しない)αβ探索を実装するのが「棋力を変えずにバグを潰す」最良の方法だと判断するでしょう。
と言う訳で、私は残った選択肢「嘘」であると判断します。
つまり、「評価関数を変更せずに探索ルーチンだけ書き換えれば棋力が向上する」と知っていて、その上で探索ルーチンを書き換えていた可能性が高いと言うのが私の結論です。
異論・反論等有ればコメントよろしくお願いします。