将棋ソフトから学ぶ指し手の選択と時間の使い方
はじめに
qhapaqさんのブログを参考にさせていただきました。
示唆に富んだ内容で大変参考になりました
読んだ方で、記事に意見や間違いの指摘等ありましたらコメント下さい
スターの仕組みとか全然わかってないんですけど、すこしずつわかってきたので、これからはちょくちょく、参考になった記事等には飛ばそうと思います。
数学的解説をしてもらっても実践に活かすのって難しいし感覚的にもわからないよって人向けに書きます。
まずは、人間の場合の将棋の時間の使い方戦略をいくつか提示します
- 定跡を覚えて序盤に使う時間を減らす
- 終盤力、特に詰将棋をつける
- 読みの力(短い時間で多く読む力)をつける
- 定跡を覚えていないかつ相手は定石を覚えている場合は定跡と離れた局面に誘導することで、お互いに知らない局面にして、相手にも時間を使わせる
こういった戦略が考えられます。
今回考察するのは、自分が知らない局面が続くときに勝率を向上させる方法です。
再度いいますが、先ほど貼ったリンクの記事の解説を感覚的に解説するのがコンセプトです。
前提確認
はじめに前提として、関数というのは、ある値を受け取って、別の値を返すものです。
今回受け取る値は、持ち時間です。
関数が吐き出す値は、一手に使う最適な時間です。
仮定
- 正確な指し手を選択した局面が多いほうが勝てると仮定する
- その仮定から、正確な指し手を選択した局面が多いほうがよいとする
- 読む時間が短いうちは指し手の正確さはかけた時間に比例する
- 読む時間が長くなってくると時間に対する効果が薄くなってくる
論理的な展開
①
時間を効率よく使っていないとする
↓
その状態では、無駄に時間を使っている局面Aが存在する
↓
Aで使う分の時間を別の、時間を本来使うべき局面Bで使えば、勝率は上がる
よって
最適な時間の使い方をしている場合、どの局面でも、使う時間が生み出す、勝率を上げる効果は変わらない。
②
次に、ある局面で、
時間 対 勝率を上げる効果=正しい手を導ける確率の上昇効果
が、どの程度か予測する
1.難しい局面ほど正しい手を導くのが難しい、長く読めば長く読むだけ効果が出る。
2.簡単な局面では長く読んでもあまり効果は変わらない。
と思われる。
また、どんな局面でも、
一定以上読むと分岐が膨大になり読みきれない
忘れる
ということが言える。
また、一定以上読むと、時間をかけてもあまり正しい手を選べる確率が変わらないというところに段々と近づいてくる。
③
戦型によって、総手数が変化するので、一手に使える時間の量は変わる
④
人間が指す将棋の前提として一応、
ある一手を間違えた時に評価値がどのくらい下がるのかを考慮し、下がりやすい局面や上がりやすい局面では長く考える
序盤は短めに、終盤は長めにした方がいいことが多い
結論
そこで、戦略としては、
- これ以上読んでもあまり指し手の正確さは変わらないと思ったら後に時間を残す
- 簡単な局面では短めに、難しい局面では長めに考える
- 長い戦いになる戦型の場合は、少し早めに指す
- 戦型から事前に終局までの手数を概算しておいて、一手にかけることのできる時間を計算し、その計画にできるだけ沿って時間を配分する
ということがソフトから学べるだろう
また、人間としては、
- 序盤は少し早めに指す(定跡を覚えると早く指せるようになる)
- 終盤では時間をかける
- 自分の得意な局面(指し手の正確さにプラスに働く局面)に誘導する
- 定跡を覚えずに力戦を目指す人=序盤で相手に時間の差をつけられないように定跡を外す
- 定跡を覚えて押し切ろうとする人=指しての広い(定跡を外されにくいはず)局面に誘導する
といった戦略があるだろう
まだまだ体系的に文章としてまとめるには研究が不足しているし、細かい技術的な話をひたすら避けようとしたら結局袋小路に迷い込んでしまったのではないかとの懸念もあるが、ひとまずここで区切りにして発表した次第である。
参考になるかどうかはわかれるかもしれないが、とりあえず最後まで目を通していただいてありがとうございました