ちょっと誤解している人が多いようなので補足。
ponanza、multiPVに対応してないし、それどころかUSI optionの読み込みすらたぶん対応してない。詰みのスコアは評価値30000固定なので最短手順で詰まさないし(これのせいで本来勝てるはずの将棋が256手を超えて引き分けになることも)、将棋ソフトとしては極めて稚拙
— やねうら王 (@yaneuraou) May 23, 2016
(承前) な作りなのだけど、そういうところには労力を一切注がないという割り切りこそが、最強たるゆえんでもある。普通のプログラマではこんな杜撰な作りのまま放置しておく気になれないところであるが、その神経の図太さこそがponanzaの最大の長所なのであるな。見習う気にはなれないが…。
— やねうら王 (@yaneuraou) May 23, 2016
私の「やねうら王」のtwitterのアカウントはコンピューター将棋に詳しい人しかフォローしていないと仮定して、適宜説明を端折ってツイートしていることがあって、コンピューター将棋関係者以外に向けて書くなら、上のツイートも色々と本来ならば説明しなければならないことが抜けているのでわかりにくいかと思う。誤解している人が多かったようなのでこのブログで少し補足する。
まず、「multiPV」というのは、1つの局面で複数の候補手とその読み筋を表示させるための機能である。
multiPV = 5に設定すると上位5手に関してその読み筋を表示する。5手分きちんと調べないといけないので同じ探索の深さまで調べるためにmultiPV = 1(平常時)と比べると5倍近い時間を要するようになる。
そこで電王トーナメントや世界コンピューター将棋選手権などの大会においては、どのソフトも常にmultiPV = 1である。昨年の電王戦においてAperyが(貸出対策のため)序盤の指し手を散らすために序盤でmultiPV = 1以外 で探索するというのをやっていたが、そういう特殊な状況を除けば multiPV = 1に固定しておくのが普通である。
つまり、multiPVに対応させてもこれっぽっちも強くはならない。将棋として強くするための機能ではないからである。複数の候補手が見れて便利だなーぐらいの話である。ではなぜmultiPVにほとんどのソフトが対応しているのかと言うと、それは、ほとんどの将棋ソフトがStockfishの探索部を参考に(もしくはコピペ)しているからであり、それらのソフトは自動的にmultiPVに対応するわけである。
そんなわけで、multiPVに対応していないというのは、Stockfishを直接的に参考にしているわけではないということでもあり、Stockfishを真似せずに(参考にすることはあっても、決して真似はせずに)開発しているという証左であり、そこに王者としての貫禄を感じさせるわけであるな。
だから、「いまどきmultiPVに対応してないだなんて、将棋ソフトとしてありえんやろ!」と山本くんに私は口では言っていても(実際、昨日、それに近いことを直接彼に言った)、そういう彼の開発者としての姿勢をリスペクトしているわけである。ただ、そういう姿勢を私は見習えないし、見習うべきでもないと思っている。私は彼ではない。彼と同じ生き方を私は出来ないし、するべきでもない。
…ということがわかってもらえているものだとして、最初の2つのツイートをしたのだが、さすがに説明不足だったのかな。
今年の選手権でAperyクラスタが1コアだけmultiPVを多くとっていたらしいですが、終盤の読み抜けが減るのかな?ソフトによって局面によって枝刈りを変動させる機能があるみたいですがその代用になるのでしょうか?
はい。クラスタで余っているPCは投機的にmultiPV有りで読んで楽観合議にしたりするのは、(合議するPC同時の)探索を散らす意味があって有効かと思います。
multiPVにするメリットとしては、ソフトの利用者がソフトの手に納得が行かない時に代わりの手を考える参考になることというのもありそうですね。激指で検討をする方は便利に使っているのでしょう。
ということで、オープンソースで公開するソフトにそういう機能があると助かるのではないかなんて思ったり。
しかしながら、強さを追求するならない方がいいですよね。読みを外すといったって、一定の効果は期待できるものの、どうせ同じ評価関数積んでないんだからズレるしいいじゃん!と思ったり。
Aperyの評価関数を流用している者同士の場合は、過激な枝刈りをした方に軍配が上がってしまうことも多そうなので効果が期待できそうでしょうか。
強さのために無駄を徹底的に省く姿勢は尊敬できますけれど、プログラムをそのままにしておくと気持ちが悪いという方に私は賛成です。
ところで、
次元下げをしているソフトって、やっていることがディープラーニングに近いよな〜
(情報量を落とすことで、過学習を抑制できそうという意味で)
と思っているのは私だけなのでしょうか。
追記
初コメントです。認識に間違いがあったら正していただけると嬉しいです。もしよろしければ、馬鹿な日本人(とか猫とか)でも分かるtransflowの使い方講座とかがあると嬉しいな〜って思ったり
> しかしながら、強さを追求するならない方がいいですよね。
検討のときにはmultiPVがあるとShogiGUIはその出力に対して適切に画面に表示できますので、わりと便利ですけどね。今回の電王戦でもソフト検討陣の間ではmultiPV + ShogiGUIが大活躍でした。
今、見返したら、なんというスペルのミスでしょうか…
transflowなんて…。
TensorFlowですね…。(疲れてるのかな…)検討してくださったら嬉しいです(と言いながら自分は着手できる見込みがしばらくないのですが)この間こんなツイートをしていたので是非と思いまして。
そのツイート
https://mobile.twitter.com/yaneuraou/status/728238313589465088
やねさんが説明すればやろうと思う人増えるかも…
(やねさんが返信してくれるなんて!わーい(^o^))
これで我慢して!(`ω´)っ https://qiita.com/tags/TensorFlow/items