電王トーナメントにおいて、Ponanzaの評価値が正常に表示されていなかった件について書いておきます。この問題、新規に思考エンジンを開発しようとするときに必ずハマります。なので、電王トーナメントの記事とは別に、本記事を用意しました。
まず、fail high/fail lowのときに思考エンジンがそれをどう出力するかという問題があります。
あれ…lowerboundとupperboundを出力するだけじゃないのかな…。Aperyのソースコードにすでに入ってるけど…。
— nodchip@tanuki- (@nodchip) November 22, 2015
USI原案にはlowerbound/upperboundを出力することになっています。Stockfishもそうなっています。Stockfishを参考にして書かれているAperyなどはそうしてあります。ところが、将棋所ではこの出力に対応していないため無視されます。
上位のソフトはStockfishを少なからず参考にしているので、将棋所がlowerbound/upperboundの出力に対応させてくれるだけで解決する問題なのですが、まあ、対応していないものは仕方がないので、どこかに出力しないといけません。
そこで、Ponanzaは評価値の後ろに「↑」「↓」をつけて出力しているというわけです。おそらく開発の初期のころから現在にいたるまで、そうだったと思います。ところが将棋所ではここにつけるとサーバーに対して評価値を送るときに、文字列のparseに失敗して0だとみなし、0をサーバーに送ってしまいます。
まあ、本来つけていいところではない部分に文字列をつけているわけですから、これを将棋所のせいにするのは可哀想だというものです。
そこでhackとしては、探索depthを出力するときに、末尾に「↑」「↓」の文字を付与するということです。これがいまのところ一番問題の少ない解決法かと思います。
また、Ponanzaはずっと以前からこの問題があり、floodgate上でも評価値が正しく出力されていませんでした。floodgateにPonanzaが評価値を出力しないのは、評価値を秘密にしておきたいからなのかと思っていましたが、今回の一件から察するに、違ったようです。
ちなみに私は、昨年、はてなブックマークにおいて、Ponanzaの山本君の記事に対してこのことを指摘しています。
何故はてなブックマークかというと、ブログのコメント欄がなかったもので、はてなブックマークが適切だと思ったためです。
今回の電王トーナメントで「それ、1年ぐらい前にはてなブックマークで指摘したよね?」と山本君に言ったところ「そんなところ、見てない(笑)」と言われました。ワハハ。
まあ、そんなわけでして、他の開発者の方も、lowerbound、upperboundはdepthのところに出力するようにしましょうということで…。
ShogiGUI & Apery の組み合わせでは、↑↓ が、表示されますね。あの矢印は、エンジンが出していたのか。ShogiGUIが出していると思っていました。
>なんでもいいから早くプログラムを書いてPCを稼働させないと凍え死んでしまう。
暖房器としてのPCは効率がいいかもしれませんね。
ソフトの学習はできるは、部屋は暖かくなるはで、一石二鳥であります。
つまりクヌースの矢印表記に対応できればいいんですね
マニアックすぎワロタ。あの矢印表記、20年ほど前にKunth先生の『Concrete Mathematics』でちらっと見たぐらいにしか知りません…。
将棋所の作者さんは前向きに対応していくとのことですが「↓」や「↑」という矢印は日本語なので避けたいようなので、それに代わるものを将棋所サポート掲示板のほうに。 http://www2.ezbbs.net/09/shogidokoro/
素晴らしい。