コンピュータ将棋の問題点としてよく挙げられるものに「水平線効果」(地平線効果とも言う)というものがあります。これは、「自らの探索の及ばない領域(水平線の先)に“落とし穴”がある時に、それに気付かずにその方向に進んでしまう」という問題のことであり、さらには、もっと意味を限定して、「長期的には損であるが無駄に手数がかかる手順によって“落とし穴”を探索領域外に押しやるような進行を選択してしまう」という問題のことを意味しています。コンピュータ将棋の探索については、以下の解説記事をご覧ください。

ここで注意が必要なのは、将棋ソフトが負けを読み切った際に行うことがある“王手ラッシュ”は、全て探索範囲内(水平線の手前)の読み筋ですので、厳密には水平線効果とは言わないということです。これは、単に手数を最大化するというプログラムがなされているというだけで、「問題」ではなくて「仕様」の話になります。ただし、将棋ソフトが負けを読み切って指しているのか、読み切れずに水平線効果が発動しているのかは、思考ログを見ないと傍からは分からないため(“即指し”等で推測はできますが)、判断が難しいということはあります。

さて、この水平線効果ですが、一体、何が問題なのでしょうか? この疑問は、一見すると自明に感じられますが、改めて考えてみると意外と複雑です。

元々、水平線効果が意味していたのは、深さを固定した探索の限界を表す問題だったと考えられます。深さ固定で頑張って探索しても、水平線の先は見えないのだから、長期的な大局観の不足を補うことはできないということであり、長期的な大局観を備えるためには、静的評価関数の精度向上や適切かつ十分な“探索延長”技術が不可欠であるというわけです。実際、コンピュータチェスにおいては、水平線効果への対策として、静止探索技術が発展したという経緯があります。

この意味に限定すると、問題点は技術的に明瞭であり、現代のコンピュータ将棋においては、既にほぼ克服済みの問題に思えます。現在の強豪ソフトの静的評価関数は、機械学習により、(例外的な局面はあるにせよ)十分な大局観を有していると考えられます。また、静止探索を含めて“探索延長”技術も大いに発展しており、有望そうな局面は倍近くの深さまで読むことも珍しくありません。もちろん、技術として更なる高みを目指すということはあるのでしょうが、水平線効果として当初、想定されていたレベルの問題としては、すでに十分に克服されているのではないかと思います。

しかしながら、水平線効果は別の問題としても解釈が可能です。

例えば、人工知能におけるフレーム問題の一種だという考え方もあります。「フレーム問題」というのは、「人工知能は自らの情報処理能力を超える情報は処理できないため、処理する情報を制限するフレームを外部から設定する必要がある」という問題のことです。人間の場合にはハードウエア(身体)が決まっているため、それによりフレームの限界は自動的に決まってくるわけですが、その制限がないコンピュータ将棋では持ち時間や探索範囲等のフレームを人間が設定する必要が出てきます。そして、設定されたフレーム(水平線)の外のことについては原理的に対応ができません。

このようにフレーム問題の一種として捉えると、水平線効果は、少なくても完全解析がなされるまでは、原理的に解決できない問題ということになり、また、この解釈においては、読み切りの局面を除き、ほとんどの将棋の指し手は水平線効果の産物ということになります。もしかすると、将棋は互いの水平線効果を楽しむゲームなのかもしれません。

また、将棋ソフトが勝負手を放てないのが水平線効果の問題の本質であるという考え方もあります。ミニマックス法では探索範囲内での最善手を目指すわけですが、この戦略こそが水平線効果が生じる根幹であるという考えです。自分が不利な状況であるのならば、もう負けるものと覚悟して、最善で粘りにいく戦略をやめて、紛れの多い局面に誘導するような戦略に切り替えるべきではないか、そうすれば結果的に水平線効果は出なくなるはずだというわけです。

この意見については、既存のコンピュータ将棋の戦略を大きく変えるものであるため、将来的に研究が進まないと何とも言えないところです。しかしながら、ミニマックス戦略が最善の戦略であるという保証はありませんので、将来的にもっと優れた戦略が開発される可能性はあります。その戦略においては、ここでの解釈における水平線効果は現れないかもしれません。

さらに、コンピュータが「長期的には損であるが無駄に手数がかかる手順」(以下、“無駄な手順”)を認識できないのが水平線効果の問題の本質であるという考え方もあります。この考え方に立つと、静的評価関数の精度向上や探索延長技術は対処療法的に問題を発現し難くしているだけにすぎず、本質的な解決にはなっていないということになり、また、“無駄な手順”をどのように定義して判定するのかという問題が解決されない限りは水平線効果は無くならないということになります。

この解釈を説明するための簡単な具体例として、“ただ捨て”の問題を考えてみましょう。

tadasute

上の部分図のように、歩を打って、そのまま成り捨てるという手順は、4手かけて歩を相手に渡すだけの進行になっています。盤面は同じで歩を相手に渡しているので明らかに損になる手順ですが、4手先延ばしすることで、水平線効果により、それ以上の損が見えなくなるのならば、結果的に“最善手”に選ばれてしまうことがありえます。実際、昔の弱い将棋ソフトではよく見られた手順です。

また、この手順の最中に必然手の応酬が挟まれる場合も同様です。この場合には、最初と最後で盤面も変わってくることになりますが、手順全体で見れば、“ただ捨て”の4手は無駄であると判断できます。

ある程度の棋力を有する人間ならば、このような“ただ捨て”の筋は“無駄な手順”だと判断して読みから切り捨てることができます。人間が“ただ捨て”の筋を考えるのは、持ち時間が足りなくて思考時間を稼ごうとする時くらいです。

コンピュータ将棋においては、「駒損を含む手順の探索を延長する」等の対策により、この問題を回避することができます。しかしながら、これらの探索延長の手法は、実践的には有効ではあるものの、人間とは異なり、“無駄な手順”を認識して対処しているわけではありません。

単に盤面が同じで持ち駒が異なる場合(「強度の水平線効果」と言う)を“無駄な手順”と判定して弾くだけであれば、簡単に実装することができます(参照:「強度の水平線効果を完全に防ぐ手法の提案」)。実際に、この手法(SHEK: Strong Horizon Effect Killer)では中盤以降で0.3~3%程度の局面の枝刈りができるようです。

しかしながら、「強度の水平線効果」を越えて、もっと広く“無駄な手順”を判定しようとすると処理が大変になります。手順を含めた情報が必要になるため、判定処理が複雑になってしまいますし、そもそも判定自体が難しいという状況も珍しくありません。例えば、中合いが、手数を伸ばすだけの無駄合いなのか、それとも駒を引き付けておくことで長手数後に本当に得をする合駒なのかというのは、簡単には分からないことがあります。また、追い詰められての王手や詰めろが、単に手数を伸ばすだけの暴発のなのか、それとも暴れることでどこかで相手の攻め駒を抜いたり、必要な持ち駒を減らしたりできるのかというのも同様です。しかも、判定処理の計算量が探索延長分の計算量を上回ってしまうようでは実用上の意味がないため、利用できる計算量にも制限があります。

“無駄な手順”を判定して弾くということは、「未来の挙動が、現在の局面情報のみで決まらず、過去の情報にも依存する」ということを意味しています。これを確率論では「非マルコフ性」と言います。現在のコンピュータ将棋は、千日手の処理やSHEK等を除いては、現在の局面情報に基づく処理が基本になっているため、“無駄な手順”の認識が難しいという状況になっているわけです。

そのように一般化して捉えると、水平線効果の本質は将棋の非マルコフ性にあるという考え方もできます。コンピュータ将棋の探索や機械学習において非マルコフ性を取り扱うというのは、一つの将来的な課題であり、この解釈における水平線効果はそのような研究の発展の中で解決されていくものなのかもしれません(※強度の水平線効果が終盤に多く現れるということから類推すると、もし実現すれば、終盤力の向上につながる可能性があります)。

以上、今回は、水平線効果の問題の所在について改めて考えてみました。何が問題なのかについては、

  • 当初の問題
  • フレームの問題
  • 戦略の問題
  • “無駄な手順”の問題(もしくは、将棋の非マルコフ性の問題)

というような複数の解釈が存在し、どの解釈に立つのかによって問題の性質が変わってきます。水平線効果について議論する際には、どのような問題について考えているのかを明確にした方がよいのかもしれません。