コンピューター将棋では並列探索をやめることは出来ないのですか?

コンピューター将棋のようなαβ型の探索において、並列探索の効率があまりよろしくないことが知られている。

LazySMPにより従来よりマシになったとは言え、10スレッド(10並列)で探索させたとしても、1スレッドの4倍相当ぐらいにしかならない。

ならば、並列探索なんてやめて、重い処理だけを分散して処理させたほうが良いのではないかという疑問が生じる。とは言っても、実はそんな簡単に分散の出来るような重い処理というのが将棋ソフトには存在しない。唯一、可能性がありそうなのは評価関数ぐらいである。

いま、仮に、べらぼうに重い評価関数を考えたとしよう。

KPPT(3駒関係+手番)型の評価関数では、全体の処理時間の1/3ぐらいが評価関数の計算に費やされているが、例えば、KPPPTの4駒関係だと、この15倍ぐらい重い。しかし局面の優劣を判断する精度は格段に向上するはずである。15倍とは言っても10スレッドでやればたかだか1.5倍であるから、1スレッドのときの半分ぐらいのnps(探索速度)は出るはずである。理論上は。

※ KPPPTにメモリは、1TBほど必要になるが非現実的というほどでもない。また、三角配列を使うなりすればそこそこ削減できる。

このとき、

10スレッド(1スレッドの4倍速相当) → 1スレッドの半分(1スレッドの0.5倍速相当)

となる。1/8倍速。npsが倍になるごとにR100上がるという実験結果からすると、8倍の差はR300相当。

KPPTをKPPPTにすることでR300以上カバーできるのかという問題になる。出来るのかどうかは俺は知らん。出来るような気もするが…。それから、10スレッドから同時に大量のメモリにアクセスしようとするとメモリ帯域がボトルネックになって、理論値は出ないと思う。

並列探索をやめるという選択肢は、近い将来、ありうるかも(現在は無理)というのを結論としてこの記事を終わる。


コンピューター将棋では並列探索をやめることは出来ないのですか?” への15件のコメント

  1. MultiPVの1より元が取れるのか。
    私はMultiPV2~4は1に劣ると思っていますが、5の場合中盤以降1を上回ることを確認しております。

    同じ評価関数を使ってSMとやねうら王とか対局させると、深く読んだほうがもちろん強く、MultiPVで1が一番勝率が良くなります。

    しかし、普通同じ評価関数なんてありえない訳で、別のソフトと対局すれば読み筋がどこまで一致するかという問題がありまして、MultiPVで1で一生懸命実現しない指し手を調べているみたいなことが良くあります。
    そういったときにMultiPVを5にして、実現しそうなDepthの指し手をしっかり読んだほうが良い手を発見することを確認しております。

    SM設定で何手までMultiPV○にして、それ以降強制的にMultiPV1にするという設定があったと思いますが、たまにこれ逆なんじゃないの?とか思います。

    もちろん穴もあって、終盤はDepthの範囲に詰めろが入らないと頓死しますので、詰み探査がない場合MultiPV1でマシンスペックのゴリ押しで読まないといけないんですが。

    • > 私はMultiPV2~4は1に劣ると思っていますが、5の場合中盤以降1を上回ることを確認しております。

      Stockfishでは、PV(読み筋)とnonPV(読み筋以外)とで、枝刈りの量が圧倒的に違うんですよね。将棋だとnonPVを読む量が少なすぎて、よろしくないというのはあるのでしょうね。まあ、そのへんはPVとnonPVにどれくらいの比率で探索エネルギーを割り当てるか、みたいなことなのでパラメーター調整の範疇ではあるのですが。

    • 現代の探索は『手を加え過ぎて、もはや「全幅探索」と呼ぶ
      ことが出来ないほど変わり果てた「全幅探索」』なんだなぁ

  2. 私自身2ちゃんねるなんて見ないので、知人から指摘され気づきました。

    野球で言えば、プロ野球選手でも出せない200キロのボールをピッチングマシンが投げて来ても、投げる場所とタイミングさえ合えば打てますよといった程度の話です。
    それが新評価関数になってから振り飛車をやると、昔はボールも投げていたのにストライクしか投げなくなっているようなので、前より簡単に打ち返えせませんか?といった感じです。

    新評価関数=0824と0911について四間飛車で、居飛車穴熊、銀冠穴熊、銀冠。立石流四間飛車で左美濃、銀冠、5筋位取りからの65歩タダ取られ等が後手番でも同じやり方で攻略出来たので一例を書き込んでしまいました。

    他人のブログに書くようなことでは無かったです。申し訳ございません。

    • 48金29飛型について、(これだけは気にされている方がいたようなので)
      私が将棋を教わった師匠は将棋の様式について大変厳しく、攻めるだけ攻めて攻め切れして投了とか、先手番を持って48金29飛型のように保守的に動くと「そんな将棋やるなら将棋を指すな」と言われまして、ちょっと私自身否定的な部分があることは事実です。(後手番で62金型は全然アリです)
      Ponanzaのように初手58玉なんてしようものなら将棋盤を投げつけられます。

      当時、48金29飛型を私がやったときには、師匠に腰掛銀を6五銀とぶつけられ簡単に敗勢に追い込まれました。銀と角という斜め駒に4七歩打ちで金をたたかれると簡単に悪形にされてしまいます。それでなくとも7筋と7七の地点を桂馬等でしつこく狙われ玉頭を圧迫されました。
      いろいろ細かい条件(端歩の突きかた、玉位置等)は省きますが、技巧やSMの新評価関数相手でも通用したので、たぶん未だに有効なんだろうなと思っています。

      決して若手プロの方を否定していわけではなく、近年の若手プロの棋譜を見る限り、現代主流の一手損角換わりの常識にとらわれて、昔の駒組みを知らないんじゃないかと思っただけです。

    • 千田先生が見られたんですね。驚きです。
      序盤はやねうら王さんが公開していたプロの棋譜24手までの互角局面1万局から、ボナンザの宮本定跡をランダム化した物を1万局等、いろいろなフリーソフトの序盤を24手まで3万局登録し、下限採用率を2局以上としています。
      そこからfloodgateの2014年以降の上位ソフト(NDFとか)を40手まで追加し、さらに技巧や新評価SM等を合計6万局40手までを定跡として作成し、個人的にありえないと思う指し手を6手まで採用率を調整したものを使用しています。
      ですから序盤はそのどれかがヒットした進行だと思われます。
      そして定跡が外れたところからは新評価関数の0824か0911だと思います。

      書き込んだ相銀冠もソフトの有力指し手の途中分岐等を、詰みまでの20局面程度を120手まで追加したり、
      その他戦型も四間飛車1本で対技巧、対SMで入れるとソフト同士の自己対局で勝率9割程度になりましたので、
      floodgateに投下すれば将棋界の振り飛車党に少しは貢献出来るかもしれないと思い上がっていました。はずかしい限りです。
      やはりこういったソフトのクセを突くようなやり方は褒められたやり方ではないと痛感しました。お蔵入りします。

      • その定跡、公開していただけるとコンピュータ将棋の序盤の質的向上に大きく寄与するように思われるので、お蔵入りと言わず、公開が不可であれば棋譜の公表だけでも。

        • 千田先生に対して誤解を招いてしまっては申し訳ないので補足しますと、千田先生のように電王戦をご自身の棋力の向上の機会ととらえる方にとっては、必勝手順などあってもなくても同じでしょう。ただ、そうは思っていない棋士の方が電王戦に出るのであれば、無駄な研究時間を使わずに、茶番は必勝手順ちゃっちゃと覚えてそれ並べて終わらせちゃうのが時間の効率的な使い方だと思うので、事前にファンを含めて広く共有されておくのがみんながハッピーになるだろうと。巨瀬さんに襲いかかったあの狂騒はもう二度と見たくないのです。

      • いやいや思い上がりじゃないでしょう。

        ていうか思い上がりでも何でもコンピュータ将棋の進歩に資するならどうでもいいです。
        穴を突かれる方が悪いんです。テストやデバッグは穴を突いてなんぼです。
        突かれて改善すればいいんです。

        興味深いので、がうる四間飛車定跡をfloodgate に投下して様子を見ましょうよ!

      • 公開すべきではないと思ったのは、
        このタイミングで飛車角交換をすれば、相手はこちらの駒当たりが良い(取れる駒が多く、評価値が良い)4一飛打とSMと技巧共に100%出るのを知っているから交換し、その後大量の駒を犠牲にして端攻めを行いマイナス評価から最終的に相手玉を釣り上げ王手飛車取りとなり逆転するとか、この飛車自分で3一飛打と1つ横に打てば良い所までは行くが、どうこねくりまわしても相手が勝つみたいな物も含まれており、ただ将棋ソフトのクセを突いた実戦ではまったく役に立たない物も含まれているからです。

        • 電王戦でプロ棋士がソフトの穴を探すのに無駄な時間を費やすことを考えれば、ここで全部そういうのを明らかにして千田先生に知ってもらい、千田先生ご自身が電王戦に出場するか千田先生を通してその他の出場棋士に教えたほうが将棋界にとってプラスになると思います。

        • AIはその分野である程度パーフェクトを目指しています。
          そのAIがその程度のバグで死んでしまうのはふがいないです。潰されてしかるべきバグを貴方は握っているのです。
          まぁ、コンピュータの発展とかそういうことを抜きにしても単純にそれを知りたいと願います。
          どうでしょうか?

        • 毎回野球に例えて分かりにくいかもしれませんが、
          プロ棋士=プロ野球投手、将棋ソフト=ピッチングマシン、とするなら

          トッププロは昔から160キロのボールを投げれるし、カーブやシンカーも投げることが出来て、左投手(振り飛車)もいたりするが、
          人間なので途中で疲れて球速も落ちるし、たまに暴投してしまう感じで私は捉えています。
          それでもがんばって投げ続け、いろいろな駆け引きを駆使している姿にファンは感動するのではないでしょうか?

          Bonanzaは140キロのボールしか投げれないが、最初から最後まで球速の変わらないピッチングマシンだと思っています。
          去年のPonanza辺りで160キロのボールを投げるソフトが出てきて驚愕みたいな感じだと思います。
          そして今のPonanzaは球速は変わらないが、もうちょっと良いコースに投げれないかとか調整しているものだと考えています。
          SM+新評価関数は何故か左バッターボックス(振り飛車)に立つと、160キロを投げてくるが単調なコースにしか投げてこないというクセを狙い打ちしているだけです。
          公開されている技巧でも指定局面からはR4000程度のポテンシャルは感じるので、今回の新技巧が序盤から良いコースに160キロを投げ、キレッキレの変化球(手筋)を使うならお手上げです。

          そうして考えてみると、私のやり方はギャンブル必勝法みたいな非常にうさんくさい雑誌を読ませるようなものではないかと危惧してしまいました。

          やねうら王さんのブログに関係の無い書込みをするのも迷惑な行為だと思いますので、これで最後にします。
          ご迷惑をおかけして大変申し訳ございませんでした。

    • アインシュタインも「神はサイコロを振らない」とか言ってボーアに難癖付けたり
      ホーキングも「ブラックホールの熱ってどうなってるの?」と難癖をつけたり
      そういうことでこの世の中は日夜進歩しています

      そんなに深く悩まなくてもいいと思います

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です