電王トーナメントその後


昨日までの記事で、書き忘れていたことがあるので、いくつか補足しておきたいと思います。


SeleneはBonafishか?


Bonafishというのは、評価関数がBonanzaのfv.bin相当で、探索部をStockfishに差し替えたものを言います。


西海枝さんに聞いてみたところ、「Bonafishも、実は作ったんですけどねー(あんまり強くなくて、いまはBonafishではない)」とのことです。


私もBonafish作りましたが、PonaX相手に3割勝てなかったので、西海枝さんのほうは評価値の差分計算の方法がまずく、npsが私のBonafishより2割ぐらい遅いようなので、おそらく25%ぐらいしか勝てないでしょう。


SeleneがPonaXに4割勝つ」ということの意味するところは、つまり、そこからの改良(主にNDFの相対KPPでの学習をしたことによる棋力向上)でしょう。


■ mate 63 ≠ 63手詰の件


まず、AWAKEの「mate 63」の件ですが、「mate X」については以前から何度か書いているので、今回は詳しく定義を書かなかったのですが、間違って理解している人が多いので補足します。


mate 63は63手詰めではないです。63手詰めというと、連続王手で63手で詰み、それが詰ませるときの最短手数であるという意味ですが、そうではないです。また、mate 63は王手 or 詰めろの連続でもないです。


「相手がどのように応じても最長でも63手で詰ませることが出来る」ということです。無駄合いが含まれますし、迂回手順での攻め方も含まれます。


詰将棋を考えてみるとわかると思いますが、相手側の応手はすべて読まないといけませんが、こちらの応手はその手で詰むのであれば他の指し手を読む必要はありません。(最短手数を目指さないでいいならば)


実際にはAWAKE側が最善を尽くせば20手ぐらいで寄るのでしょうが、たまたま読めたのが63手かかる手順だった、ということです。やねうら王のほうもAWAKEの「mate 63」を認識した局面から数手進んだところで「mate 43」を認識しました。


それでも「mate 63」はやっぱり凄いなー(部分的であれ、そんなに深く読んでいるのかー)というのが私の感想です。


■ AWAKEのseldepth = 50の件


部分的にでも50手も読んでるということは、1手ごとに2通りの指し手を考慮するとして、2^50 = 1,125,899,906,842,624局面も読んでいるのかー。と思っている人がいるようなので、これに関しても補足します。


seldepthというのは将棋所で動かしたときに、探索深さのところに「15/30」のように表示される右の数字(「15/30」の「30」のほう)です。


これは何の数字かと言うと、PV node(最善応手列に関わるnode)での読みの深さです。PVは最善応手列ですので1本道です。


PVを作るためには、当然、それ以外の指し手もそれなりに読まないといけないのですが、そのへんはざっくりとしか読んでいないのがいまのコンピューター将棋でして、seldepth = 50を読むための必要なnode数は、2^50というよりは2^25より少し大きいぐらいと考えたほうがいいでしょう。


探索部の作りにより、seldepthが伸びやすいソフトと、seldepthが伸びにくいソフトがありますが、seldepthを伸びやすくしておいたほうが超部分的にですが深く読めて、深く読まないと形勢が判断できないような局面においてはそれが正しい形勢を反映していることが統計的に多いので、seldepthを伸びやすくするほうが有効なのではないか、と私は思ったのですが、真偽のほどは実験してないのでわかりません。


■ やねうら王は電王トーナメント期間中に強くなっていた?!


初日のバージョンでPonaXに少し勝ち越す程度。3日目のバージョンで初日のバージョンに5%程度勝ち越すようになっていたようです。参考まで。


■ やねうら王はこのあとさらに強くなる?


平岡「やねさんなら、このあと1ヶ月あればAWAKEのKPAとかやれるんじゃないですか?」
やね「私なら1週間あれば余裕ですね。1日で実装して6日で学習を回す、みたいな…」
平岡「ひえー。そんなことより、秒読み(のバグ)直しましょうよ!」
やね「は、、はい。すみません。」


そんなわけで強くするのはさておき、秒読みのバグなおしてきます…。
あと、置換表上限も修正しておきます…。


■ やねうら王は定跡を入れる


習甦の方法で定跡を1万通りぐらい入れておきます。なかには損な定跡も多分にあるでしょうけど、多少不利な定跡でも中終盤で盛り返せるかも知れませんし、プロ棋士の先生には勝負にこだわらず、いろんな戦型の将棋を楽しんでもらえればと思います。


■ やねうら未来定跡はどうだったのか


やねうら未来定跡は、予選1回戦でPonanza相手にやって一方的に作戦負けになったため、そのあと定跡オフにしていましたが、思うところあって、最終局(3位決定戦)だけやねうら未来定跡をオンにしました。


オンにした理由は、3位決定戦だったので負けても4位であり、電王戦出場には響かないということと、Seleneに搭載されている定跡を本大会での棋譜から調べたところ、やねうら王側がそれで暴発してしまうような変化にはならないと判断したからです。


やねうら未来定跡は、事前にやねうら王が自ら長い考慮時間を費やして考えだした定跡です。
本局は矢倉模様になりました。序盤のわずかな形の良さを活かしてSelene相手に作戦勝ちになりました。


コンピューター自らが矢倉戦法(とその早囲い)を再発見し、そして、自らの思考により、端歩を突き越しあってそれで作戦勝ちというのを意識し、端攻めから快勝しました。一昔前のソフトは端歩のタイミングがおかしいことが多々あったのですが、今回のやねうら王は端歩を突くことの必然性(相手玉のほうが端に近いので端歩を突き合うのは自分が有利!)を理解した上での端歩突きだったわけで、序盤はともかく、中盤に関してはコンピューターが長時間考えれば、中盤の定跡を自ら開拓できるだけの力をつけてきたということは言えそうです。


■ やねうら王の不安定性について


同じぐらいの棋力のソフトと互角の勝率だからと言って、下位のソフトに同じぐらい勝つとは限らないのが将棋ソフトで、そういう取りこぼしが少ないように探索部を調整するのが普通なのですが、やねうら王はそういうチューンは一切してないです。AWAKEなんかは比較的取りこぼしを少なくするように調整しているそうです。


探索部の調整は結構難しいのですが、やねうら王も、調整していきたいですね…。


■ AWAKE、PonanzaとApery、やねうら王の差


AWAKEやPonanzaは探索部をかなり調整しています。


巨瀬「探索部、半年ぐらいかけて(Stockfishの探索部から将棋向きに)調整してR50〜100ぐらい」
「半年かけてR50〜100上がる」を肯定的に捉えるべきか、否定的に捉えるべきかは私にはわかりません。


AWAKEもPonanzaもそのへん力を入れているので当然長い時間を費やして調整しています。
やねうら王やAperyは、評価関数の改良に期待をかけています。評価関数のほうが伸びが顕著なので(ちょっとした改良でR200や300ぐらい伸びかねない)、まずはこちらを改良するほうが(少ない時間で)強くできそうだからです。


やねうら王も探索部を調整したいのですが、半年も費やすのはちょっと…。


■ AperyがSelene相手に金のタダ捨てをして連続王手の千日手に誘導して勝った件


相手による連続王手の千日手を勝ちだと判定しています。どのソフトでもそうなっています。Seleneはそこ、きちんと実装していなかったようですが…。


それで、相手からの連続王手の千日手が勝ちなので、その局面に誘導したほうが短手数で勝てるなら当然その局面に誘導します。それが金のタダ捨てだったというだけです。


連続王手の千日手Seleneがきちんと実装していない&金のタダ捨てで最短手順でその局面に誘導できたという二つの偶然によって発生した現象です。やねうら王でもこの局面なら金をタダ捨てする手を候補に挙げます。


ただ、こういう大会の場でこれが起きたのはドラマであり、また「金のタダ捨てで勝ち」という手順の妙もあって、この局面図はコンピューター将棋史に確実に残るでしょう。


https://twitter.com/shogi_pineapple/status/529485798182100992/photo/1


■ 今回のマシンは本当に速いのか?


先日発売になったばかりの8コアCPU、Core i7-5960XなのでPCを提供しているドスパラさんはよく頑張ったなという印象なのですが、このPC、8コアの割に定格が3GHzしかないので、遅いです。やねうら王のベンチマークで1スレッド当たりの探索速度は800knpsしか出なかったです。(Core i7 4771で1Mnps超え) 2割ぐらい遅い計算ですね。コンピューター将棋の通常探索のときの性能で考えるなら6コア 3.5GHzとあまり変わらないように思います。


■ 準決勝AWAKE vs やねうら王を見守る山本君に聞いてみた


大会最終日、準決勝AWAKE vs やねうら王を見守る山本君。


やね「山本君は、やねうら王のほう応援してくれてるんでしょ?」
山本「なんでっすか?」
やね「だって、やねうら王のほうがAWAKEより弱いとしたら、やねうら王が勝ったほうが、Ponanza的には優勝しやすいでしょ?」
山本「そんなことは考えてないです。強いほうが勝ち上がってきてもらえれば。」
やね「(おお、これが、王者の風格か…)」


その後、AWAKEがやねうら王に勝ち、決勝でPonanzaはAWAKEに負けはしたものの、山本君の姿勢には敬意を表します!