rewritemath's blog

rewritemath’s blog

これマシュマロ。質問も受け付ける(https://t.co/VfNWTuMqau)

実は将棋において水平線効果は合理的かもしれないという話

水平線効果というものをご存知でしょうか

探索アルゴリズムが、その探索深度が有限の場合に、近傍に有望な落としどころを発見する事が出来なかった場合に、将来的に見て問題のある行動を取ってしまうという効果の事です。

 

分かりやすく言い換えると、問題のある行為でも「未来のことが分からないから、仕方ない」ってなって問題行動を起こしてしまう人みたいな感じでしょうか

 

コンピュータ将棋において水平線効果が現れるのは、主にコンピュータが不利を自覚した時です。不利を自覚した時、不利になる将来を先延ばしにしようと意味のない手を指すのです。

 

では、不利な状況というのはどんな状況でしょうか。

また、不利な状況での最善手とはどういった手でしょうか。

 

 

まず、相手が最善手で常に応じてくる場合を考えましょう。

どれだけあがいても負けることに変わりはないのですから、どういった手を指しても結果は変わりません。全ての手は等しく最善手であると言えます。

 

では、その考え方が気に入らないとするならば、最善手と悪手の間に区別を設けることにしましょう。

 

「悪手は、負けを早める手」

 

どうでしょう、この決め方にはきっと皆さん納得してくれると思います。

では、この定義を元に、

 

「負けないように手数をかける手こそが最善手」

 

という仮説を立てます。

仮に相手がどこかで悪手を指すと仮定しても、着手が増えるほど、相手が「真の意味での悪手」(=形勢が逆転する着手)をしてくれる可能性は高くなるだろうというのは妥当な可能性に思えます。

 

では、水平線効果というのは将棋で、どういった指し手が現れた時にそうだと言われるのでしょうか。

負けを悟って、負けをあえて早める手を指した場合は、真の意味で水平線効果が現れたと考えることになりそうです。

 

しかし、将棋における水平線効果というのは主に、負け(≒評価値が悪化する局面)を先延ばしにする時に出てくる現象です。

 

負けを先延ばしにする手は、将棋で劣勢の場合は大体最善手だという話を先程しました。おそらく、人間同士の対局でもそうでしょう。

誤魔化すような手というのは、相手のミスを前提に置いた手であり、勝負手というのは往々にして負けを早める手(≒悪手)です。

また、相手がミスをすると想定できるなら、将棋を長引かせるような着手の方が勝てる可能性は高くなるのではないでしょうか。

 

まぁもちろん、場合によりますけどね。

 

 

さて、ここからは水平線効果についてもう少し掘り下げます。

「仮に相手が最善手で応じるなら、どの手を指しても不利な局面では負けに変わりがない」

これは大前提です。この場合、全ての手の価値は等しくなります。

 

 

では問題は相手がミスをするかどうか、ミスをどうやって誘発するかです。

この際突き詰めるなら、本質的な話をしましょう。言葉はしっかりとした定義が必要ですからね。

 

「勝負手を放つ」

 

これが想定される回答です。では、勝負手とはどういった手なのかといえば、おそらくその目的は、

 

「間違えやすい局面に誘導する」

 

ということになるでしょう。では、間違えやすい局面とはどういった局面なのでしょうか。これを数値で表すとすると、勝率に影響してくるんだろうなということが考えられます。

 

勝率に影響する局面まで誘導できたとしたら、形勢は傾いていると考えてよいとしましょう。

 

ところで、最近の(特にelmo以降の)将棋ソフトは、雑巾絞りの際に勝率も評価値に入れています。実際に、それでかなり強くなりました。

 

 

 

ここから大胆に解釈を進めると、評価値の正体は勝率であった。そして、勝率に影響してくる局面とは、間違えやすい局面である。

 

こういう結論が導き出せます。

 

この結論から過去の将棋ソフトを振り返ってみると、

 

Bonanza時代

当時の評価関数はプロの棋譜からです。となると、勝率は勿論勝敗に影響してくることになりますね。勝率の高いプレイヤー(≒強いプレイヤー)の棋譜に近づけているのですから。

 

Bonanza以降の探索の改善

勝率の悪くなる局面(≒評価値の悪くなる局面)を枝刈りして、先まで読めるようにして強くなりました。

 

Floodgateからの棋譜で学習させたソフト、自己対局で強くなったソフト

勿論これは、高レートのプレイヤーや勝ったプレイヤーに近づけているのですから、これも勝率へのアプローチだと考えることができます。

 

雑巾絞り

こちらも同様ですね。将来に現れる勝率の高い局面の評価値を持ってくるのですから。

 

 

ここまでの洞察から、「評価値はその局面の勝率を反映している」という結論が得られました。

 

 

では、勝負手というものを考えます。間違えやすいような、勝率に影響するような局面に誘導するのが勝負手であると言いました。つまり、勝負手は、評価値を悪くしないように保つ役割が求められることになります。

 

もっと言いましょう。粘る手と言われる手も勝負手の一種と言えるということです。

 

補足すると、局面を悪くしないように保つことは、他の効果も生みます。相手が一定の確率で間違えるとしたら、その間違える可能性のある局面を参照する機会を増やす効果があるのです。

 

更にここから考えを深めます。

HoneyWaffle(強豪の振り飛車を指すソフト)についてです。対局は長くなりがちなようです。これはつまり、相手に粘りを許しやすいということです。つまり、相手に最善手を指されやすい、もっと言うと、あえて自分が不利になるような局面に突っ込んでいるということになります。不利飛車ですね…。

 

 

最後に、人間にも水平線効果のようなものが起こりうるということも付け加えておきます。

未来が見えないと人間も悪手を指しやすくなるわけですね。