fail high/fail lowの表示について

電王トーナメントにおいて、Ponanzaの評価値が正常に表示されていなかった件について書いておきます。この問題、新規に思考エンジンを開発しようとするときに必ずハマります。なので、電王トーナメントの記事とは別に、本記事を用意しました。

まず、fail high/fail lowのときに思考エンジンがそれをどう出力するかという問題があります。

USI原案にはlowerbound/upperboundを出力することになっています。Stockfishもそうなっています。Stockfishを参考にして書かれているAperyなどはそうしてあります。ところが、将棋所ではこの出力に対応していないため無視されます。

上位のソフトはStockfishを少なからず参考にしているので、将棋所がlowerbound/upperboundの出力に対応させてくれるだけで解決する問題なのですが、まあ、対応していないものは仕方がないので、どこかに出力しないといけません。

そこで、Ponanzaは評価値の後ろに「↑」「↓」をつけて出力しているというわけです。おそらく開発の初期のころから現在にいたるまで、そうだったと思います。ところが将棋所ではここにつけるとサーバーに対して評価値を送るときに、文字列のparseに失敗して0だとみなし、0をサーバーに送ってしまいます。

まあ、本来つけていいところではない部分に文字列をつけているわけですから、これを将棋所のせいにするのは可哀想だというものです。

そこでhackとしては、探索depthを出力するときに、末尾に「↑」「↓」の文字を付与するということです。これがいまのところ一番問題の少ない解決法かと思います。

また、Ponanzaはずっと以前からこの問題があり、floodgate上でも評価値が正しく出力されていませんでした。floodgateにPonanzaが評価値を出力しないのは、評価値を秘密にしておきたいからなのかと思っていましたが、今回の一件から察するに、違ったようです。

ちなみに私は、昨年、はてなブックマークにおいて、Ponanzaの山本君の記事に対してこのことを指摘しています。

スクリーンショット 2015-11-26 7.40.58

何故はてなブックマークかというと、ブログのコメント欄がなかったもので、はてなブックマークが適切だと思ったためです。

今回の電王トーナメントで「それ、1年ぐらい前にはてなブックマークで指摘したよね?」と山本君に言ったところ「そんなところ、見てない(笑)」と言われました。ワハハ。

まあ、そんなわけでして、他の開発者の方も、lowerbound、upperboundはdepthのところに出力するようにしましょうということで…。


fail high/fail lowの表示について” への6件のコメント

  1. ShogiGUI  & Apery の組み合わせでは、↑↓ が、表示されますね。あの矢印は、エンジンが出していたのか。ShogiGUIが出していると思っていました。

  2. >なんでもいいから早くプログラムを書いてPCを稼働させないと凍え死んでしまう。

    暖房器としてのPCは効率がいいかもしれませんね。
    ソフトの学習はできるは、部屋は暖かくなるはで、一石二鳥であります。

コメントを残す

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