Aperyの不可解なミスの件

遠山五段がApeyと斎藤五段との対局について詳しく書かれています。

第4回電王戦第1局 Aperyの不可解なミスと斎藤五段の完璧な準備
http://toyamayusuke.hatenablog.com/entries/2015/03/16

解説の切れ味は、さすが、遠山先生です。

Aperyの不可解なミスの件は私もよくわかりません。これは平岡さんでなければわからないかも…。

それとは別に、今回のAperyのことについて少し私の考えを書きます。

序盤の指し手をバラけさせるために、Aperyが今回採用したのは序盤では上位5手(?)のなかから、ベストの評価値とさほど離れていないものを採用するという方法でした。

αβ法型の探索では、ベストの指し手以外は求まりませんので、ベストの指し手が求まったあと、ベストの指し手を探索開始局面の可能な指し手集合から取り除いて、またベストの指し手を求めるという手順を繰り返して上位5手を求めます。これをMultiPVと言います。

上位5手を求めるためには5倍近い探索時間が必要になります。はっきり言って思考時間の無駄です。しかし事前貸出という条件下では、序盤で全体時間の1/3ぐらい(?)を無駄にしても、それと引き換えに指し手のランダムネスが得られるならば割に合うというのが平岡さんの考えでした。

ただ、私はこの手法、そんなに悪くはないと思うものの、少し疑問があります。

例えばベストの指し手のスコアが30点だとして、次善手は20点だとします。このときベストの指し手と次善手は10点しか離れていないように見えます。歩1枚が100点ですから、歩の1/10の価値です。ところが、序盤の10点の差は極めて大きな意味を持つことがあります。

序盤では手駒がないことが多いですから、絶対値の大きな評価値はつきませんが、それゆえ、1点の差がすこぶる大きな意味を持つのです。ですので、ベストの指し手と10点差の指し手まで許容するとした場合、すこぶる悪い手が指されてしまうことはあるのです。

次に思考時間の問題です。

MultiPVで候補手を5つ挙げるのに5倍の思考時間が必要になります。Aperyは今回、序盤のランダムネスのために5倍の思考時間を使っていたでしょうか?使っていないですね。(たぶん) 使っていないとしたら、つまり、本来の1/5の時間しか思考できていないことになります。(MultiPVで候補手を5つ挙げるなら、そのときの1手当たりの考慮時間は5倍にしたほうが良かったように思います。これをする代わりに今回のAperyでは序盤の思考時間の重みを増やしてあったのかも知れませんが…。)

1/5の思考時間で、しかもベストの指し手を指さないのでは、運悪くひどい指し手を選んでしまう可能性は極めて高くなります。

そういう理由により本局ではAperyはババを掴まされたのかなと感じます。

「じゃあどうすれば良かったんだよ?」

と言われそうですが、うーん。例えば、「1手の思考時間をランダムで追加する」というのはどうでしょう?

思考時間を増やすと指し手が変化することがありますよね。それに期待するわけです。ランダムで追加するので、追加される局面は毎局異なるので前局とは違う変化になりやすいはずです。また、思考時間を増やしているわけですから、悪い手が選ばれるというよりは、むしろ改善された指し手が選ばれる可能性が高いです。

そんなわけで、MultiPVで指し手をバラけさせるより思考時間をランダムに増やすほうが副作用が小さく、また効果的だと私は考えます。(いま考えました!)

もう来年の電王戦がないのであれば、この素晴らしい(?)アイデアを使えるチャンスは来ないかも知れませんが、とりあえずここに書き残しておきます。

【追記 2015/3/18 6:20】

コメント欄で指摘をいただきましたが今回のAperyは40手目まではMultiPV = 3で、上位3手のうちベストの指し手と評価値の差が小さいもののなかからランダムに選ぶ設定になっていたようです。遠山先生の解説によりますと、44角〜55角〜同角〜同歩の交換が疑問視されていますが、この44角は36手目なので、ベストではない指し手が選ばれてしまった可能性もなきにしもあらず…。


Aperyの不可解なミスの件” への23件のコメント

  1. はじめまして。わたしはコンピュータ将棋と人間の将棋、どちらともファンです。

    個人的には電王戦のような戦いでは、プロ棋士は美学でもハメ手でもなんでもありの人間らしさ、コンピュータ側は相手の研究を避けるための対策などの余計な細工はしないで純粋にソフトの強さだけで戦っていただきたいなぁと思っています。

    ただやはり勝負ごとなので勝ち負けにこだわるのは仕方ないですよね。やねうらおさんは参加者の中では一番勝ちにこだわってなさそうにも見えますが。

    仮に、コンピュータ側を有利にするための方法として、電王戦のルール上で次のようなことは可能でしょうか?

    1.プロの研究を避けるため、対局当日に(タイマーなどの自動、または手動で)設定を変更する。

    2.プロに貸し出しているソフトから練習対局の内容を対局日前に取得する。

    3.対局中になんかしらの設定を変える。(別の手を選ばせるなど)

    どれもNGだとは思いますが、もしOKなものがありましたら教えていただけたら幸いです。宜しくお願いします。

    • 1.は思考エンジン設定の変更は不可。対局設定(持ち時間等の設定)は変更してもいいのかも知れませんがよくわかりません。
      2.はルール上どうなってるのか私にはわかりません。仮に棋譜が得られても、それにより何をすることも出来ませんので…。
      3.はルール上、対局が一度はじまったあとは指し手の入力以外できないはずです。

  2. 「事前に研究される」という環境の中で、いかに最善かつワンパターンではない指し手となるようにするか、、、。開発者の皆様の苦悩が推し量られます。

    棋士同士の対局で、いかに相手の研究からは外して自分の構想に持ち込むかの駆け引きにも通じるところがありますね。

    その意味では、思考時間のランダム追加は有力そうですね。思考時間を追加すること自体は深く読むことに繋がりそうですし。
    理想は人間のように「指し手の展開を検討すべきタイミングで時間をつぎ込む」ことなのかもしれませんが、、、。

    • 「指し手の展開を検討すべきタイミングで時間をつぎ込む」は、Stockfish型の将棋ソフトでは結構うまくそのへん実現出来てるように思います。探索ノードが不安定であれば、時間を多めに使うんですけど、勝負どころで時間たくさん使ってる感じはあります。

  3. 最初の30手までは最善手を指し、
    その後は上位3手からランダムに選ぶ
    というのがいいんじゃないかなーとぼんやり考えましたけど、
    ある手数から考える手を増やすというのは難しいんですか?

    • 出来ますが、31手目から終局まで上位3手を挙げるために3倍の思考時間を要します。つまり中盤以降、本来の思考時間の1/3しかずっと使えないことになりますから、それをやってしまいますと恐ろしく弱くなります。あと中終盤の指し手は次善手が命取りになることが多々あるので、その意味でも、中盤以降をMultiPVにするとハンデが大きすぎますね…。

  4. 「1手の思考時間をランダムで追加する」案には「なるほど!」と思いました。
    私は将棋もコンピュータもド素人ですが、電王戦見てて対策について考えたことがあります。その時は、例えば棋士が1手7分考えた時は次のソフトも同じ1手7分、のように1手ごとに棋士と同じ思考時間にする。でした。
    棋士がシッカリ時間使った時はコチラもシッカリ時間使おう!という(笑)

    • それですと、プロ棋士は研究手順だと全部ノータイム指しされる可能性があるので、ソフト側も釣られてノータイムで指し手しまうことになります(´ω`)

  5. 最善手以外の手を指すプログラムは以前小学生が激指に勝った時もそうでしたね。今回のやねうら王も同様なのでしょうか?
    遠山先生の記事では休憩時間中の手番を渡さないための工夫が印象的でした。
    今回は棋士側がチームとして対策してる印象ですね。

    • 今回のやねうら王はAperyのように(自分の読みのなかの)次善手を指すようにはなってないです。一直線にハマる可能性もなきにしもあらず…。

  6. 電王戦用のソフトは12時と17時から休憩時間になっているということを知っているのでしょうか?
    前回までの電王戦での挙動を見ているとどうも分かってないような感じがしますが…

    • はい、休憩時間については思考エンジンは全く考慮に入っていません。休憩時間が何時から何時までであるか開発者には事前に知らされておりませんのでそういう対策を入れようがないのです。

  7. 公開されたAperyの思考ログによると40手目まではMultiPV=3、それ以降はMultiPV=Offだったようです。

  8. 3倍時間をかけて読むと、レーティングで40くらいあがるんでしたっけか?(うろ覚え)

  9. MultiPVが1でない場合の動作を詳しく説明していただけないでしょうか。MultiPV=1 でも特定の手が良くない場合には、別の手を選ぶので、他の手を読んでいない訳ではないですよね。MultiPV=1 である局面での手の評価値上位3つからランダムに選ぶ場合と、MultiPV=3 で評価値の上位3つからランダムに選ぶ場合の違いがよくわかりません。。。
    MultiPV=3の場合、相互にデータの参照をする事なく、たとえば、7手目まで読んで、その上位3つの手を”独立”に評価するのでしょうか。

    • > MultiPV=1 でも特定の手が良くない場合には、別の手を選ぶので

      反復深化法と言いまして、探索深さを徐々に深くしていきます。探索深さ=7と8のときとではベストの指し手は異なる、ということは普通に起きます…が、ある探索深さ、例えば探索深さ=7における2番目に優れた評価値の値を持つ指し手はMultiPV=1だと求まらないです。

      ベストの指し手の評価値を超えないとわかった時点で枝刈りをするのが、αβ探索の特徴なので…。

      • 解説有難うございました。

        >2番目に優れた評価値の値を持つ指し手はMultiPV=1だと求まらないです。

        なるほど、MultiPV=1 で保証されるのは、Bestの手のみ、なのですね。
        有難うございました。

  10. はじめまして。
    ブログ、楽しませていただいております。

    ところでカレンダー機能をつかって本戦当日を「MultiPV=3からMultiPV=Off」とするのはいかがでしょうか?

    思考エンジンの対局設定を元に戻して本来の強さが発揮できるようにする訳です。

    これなら「ソフト提出後人の手は一切入らない」のだから「ルール違反ではない」と思うのですが、、、。

    • カレンダーを使って当日、違う指し手にするのは去年の電王戦のときにYSSの山下さんが「やったらあかんのか?」みたいな話をされてたのですが、「プロ棋士側の研究が無駄になるようなことは全部あかんやろ」という(開発者たちの)結論になりました。何をもって「研究が無駄になっているか」というのは、結構微妙な話もあって難しいところですが…。

  11. 早速のご返事、ありがとうございます。

    この件「カレンダーを使う方法はソフト側にコスト負担がなさすぎる」という様にも解釈できますね。

    それに対して「乱数を使う方法は棋士側とソフト側両方にコスト負担がある」と。

    「それゆえにフェアである」という訳でしょうか。

    そうであればAperyも対局ごとに「MultiPV=3かMultiPV=Offか」を乱数で決める様にしておけば少なくとも今回よりは有利だったのでしょうね。

    そう思うと今回の結果は少々残念であります。

    時にカレンダーを使う対応策が自主規制の対象だとすると、あとは「局後学習」ぐらいしか「徹底抗戦の手段」はないように思われます。

    事実「ソフトが棋士と対局することで自動的に強くなる事」についてはクレームの付けようがない様に思われますが、いかがなものでしょうか?

    • 簡単な局後学習の実装だとある局面の指し手が1つしかないので研究手順にハマりかねないので、そのへんうまくやる必要があるのですが、これがなかなか簡単なことではなくて…。

コメントを残す

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