将棋ソフト開発(仮)

将棋のソフトを作るのです。趣味で。

評価関数

評価関数はどの程度正しいのでしょうか。

結論としては、ガバガバです。

 

同じ局面でも、強いとされるプログラムが200点で、もう片方が1000点とか日常茶飯事です。

人間はプロ同士ならそんなに形勢に差は出ません。

じゃあソフトはおかしいのでしょうか?

 

ここで採り上げたいのは二つです。

1:なぜソフトによって違いが出るのか

2:なぜそこまで大きな差が出るのか

 

人間の場合は、大雑把かつガバガバで(処理的に)効率的な形勢判断をします。

ソフトの場合は、緻密かつガバガバで(処理的に)非効率的な手法を含む形勢判断をします。

※ただし、効率的な手法による形勢判断の「プログラミング」はソフトを強くする上で非効率的であると考えています。

 

まず、人間の場合は考え方や内部的な処理の仕組みが似ています。

なので同じ結果になりやすく、形勢判断の他、盲点になりやすい手も、見つけやすい手もかなり似通っています。

人間基準ではそれでも些細な違いが盛大な個性に見えるかもしれませんが、

ソフトの場合は処理の仕組みも、やろうとしていることも、動作の仕組みも何から何まで違います。

(デジタルとみなされた値を扱うと言う点では同じですが、それは真っ白なキャンバスを渡されて、新しい動物を作ってくださいと言われるような物です)。

 

なので、ソフトの違いは極めて個性的になる資質を常に持ちます。

これが個性的な評価を出す理由のひとつです。

 

 

ではもう少し踏み込んで、具体的なことを考えていきます。

ソフトが実装する検索手法と評価関数は「ほとんどの場合」は統計的な勝率に基づきます。(「ほとんどの場合」がどの範囲までを指すかは私も知りません)。

 

つまり、検索ルーチンや評価ルーチンをいじくってみて、勝率が上がればそれが良い処理とされるわけです。

ここで重要な問題があります。

 

将棋は必ず一つの手しか選べないと言うことです。

勝率だけ見ると言うことは、選んだ手に対してのみ検索処理と評価に「正しい補正」がかかると言うことです。

このとき、そのソフトが選ばなかった手に対する処理の成否は問われません。

ここで盤面に対する判断がおかしくなります。

棋風とでも言いましょうか。

人間としての棋風とはかなり内容が違うのですが、棋風です。

 

よって、この方式での評価関数の結果が一定の信用に値するのは、

最初から全てそのソフトが指した場合のみ、と言うことになります。

(もちろん最初から最後までそのソフトに指させて勝率を取っているわけですから)。

 

 

この積み重ねにより、

1:ソフト自身が指した手は、より正しく評価されるよう更新される。

2: 指し手を選ぶ際、正しく評価される指し手を選んだ更新が生き残る。 

 

この2点が確定となり、ソフト間の棋風の違いはより明確になると同時に、

未知の局面(ソフトが選ばないであろう局面)の評価は、全く干渉されないことに拍車がかかります。

別のいい方をすると、好みの棋風に拍車がかかるとでもいいましょうか。

 

当然ですが、選ばなかった全ての手に対しての評価は、選んだ手よりも低いわけで、

だからといってその評価が正しいとも限らないのです。

ただひたすら、選んだ手に対する検索法と評価の最適化がおこなわれます。

そして最適化がおこなわた指し手が次からも選ばれるように補正されていきます。

 

 

このとき、「本当は最善手だけど、ソフトの好みではない手」だった場合、

評価関数は必ず狂っていて、

また、上手に検索して指しつぐことが出来ない可能性が常に残ります。(とは言ってもソフトレベルの話しでの上手かどうかです)。

 

 

将棋と言うのは、ほとんどの手は間違っているが、

正しい手がほんのいくつかあり、そのいくつかは全く性質の違う将棋を要求したり、

違う方式での形勢判断を要求するのです。

 

勝率だけによるバージョンアップをおこなった場合、棋風は明確に発生するものと思われます。

そして、そのソフトの一部だけを (特定的な将棋の考えとしては正しいが) 違う棋風に適応している処理を導入した場合、

内部で相反する処理が発生している可能性が高く、勝率は落ちる可能性が濃厚と思われます。

 

ただし、評価関数が大幅に間違っていても、指し手に乱れはほとんどなく、正しい手を見つけますが、これはまた別の要因によるものなので今回は省きます。

 

 

さて、人間の場合は、大雑把にガバガバに効率よく形勢判断をする生き物なので、

自分と違う棋風の盤面を見ても、日頃と大きな狂いを出すことなく形勢判断をします。

 

ソフトはそういった形勢判断はせず、今まで自分が現実上勝ってきた盤面を一番よしとします。

それがとんでもなく偏ってるとも知らずに。

ソフトの場合は、盤面が似てると言う概念も持ちません。

(ただしくは人間と違う意味で似てるかどうかを算出するソフトが多いですが。例えば三駒関係の演算の結果の数値が同じとか)。

 

と言うわけなので、とりわけそのソフトが「嫌いな盤面」に対しては信憑性のある評価値は出しません。

間違ってると言う保証はありませんが、正しいと言う保証もないのです。

 

1:ソフトがその局面に対する干渉を行なった履歴がない。

(例えばその指し手を選んだ)

2:ソフトがその局面を正しく判断できた履歴がない。

(例えば指し手は選んだが、処理が噛み合わなかったなどの理由でうまく勝てずに開発者に抹消された)

どちらかなのです。

 

 

ここで私が思うのは、極端な好みが発生するほど、他人の棋譜から指しつぐのは難しくなるということです。

これは将棋の特性として、極端な盤面ほど極端な指し手が最善になる可能性が高くなります。

・・・もう言わなくてもわかるよな。

そう、すでに自分と相反する盤面に直面した場合、

そこからやっちゃいけない自分の好みに向かって盤面を変更したがる可能性が常に残るのです。

 

将棋は選択肢は選べても、あとから「やっぱやめた」が出来ないことが多いです。

一度医者として就職することを決めたら、生涯医者として振舞わなければならない可能性が高いのです。

ところが、突然ペンキ塗りの仕事(盤面)を渡されたら、ソフトはその汚い手で医術を試みる可能性が残るのです。これは事態を悪化させます。

 

まぁ指し手の良し悪しに関しては、ソフトレベルでの高レベルの微差しかでないでしょうが、

形勢判断に関してはこの限りではないと言うことです。

 

 

と言うことで!

ソフトを使って将棋を研究する場合は

1:評価値を見ずに指し手だけをみるようにしましょう。ソフトの手は間違ってない保証は得られていますが、正しいと言う保証は得られていません。

2:複数ソフトの指し手を確認しましょう。ソフトによって好みがかなり偏ります。

その中で損得勘定は自分でするのが良いです。

幸いなことにおかしな筋と、問題のある筋が発生してる局面、に関してはソフトは教えてくれます。

 

ちなみに、ソフトの好みは「人間の感覚」で盤面を見てもよく分からないことが多いのであしからず。

ソフトはソフトで、盤面を人間とはまったく違う角度から見ているからです。