やねうら王の局後学習アルゴリズム


今回の電王戦、佐藤紳哉六段との対局では、対局中に指し手を学習させる設定はオフにしています。対局中には棋譜書き出しておき、対局後にその棋譜を見て、それぞれの局面について長い時間をかけて指し手を考えなおすようになっています。


考え直す時間は、node数(≒探索する局面数)として定められており、100Mnodes(1億局面)がデフォルトで、その局面に2回目に出会ったときには、200Mnodes、3回目には400Mnodesというように指数関数的に増えます。上限は任意に変更できます。今回は3200Mnodesを指定してあります。この局面を検討する部分は並列化されており、CPUの各コアが、1局面ずつを担当します。こうなっていると並列化のロスがほとんど出ないので、対局中よりもずっと効率的に局面について考えることが出来ます。


また、このように書くと「上限に達した局面ではコンピューターは毎回同じ手しか指さないわけだから、勝ちまで研究されてしまうとなぞり将棋で勝ててしまうのでは?」と思われるかたもおられるでしょう。


ところがやねうら王は、これには対策がしてあります。


MultiPVと言って、探索開始局面で複数のPV(最善応手列≒読み筋)を調べる機能を持っています。普通のαβ探索ですと、1番いい指し手のスコア(評価値)だけ求めて、2番目以降の指し手のスコアは不正確なのですが、例えばMultiPV = 5の時は、上から5つ、スコアの良い指し手を列挙することが出来ます。また、このとき、それぞれの指し手を指したときのスコアもそれぞれ得られます。


例えば、1番の指し手 = 70、2番の指し手 = 68 , 3番の指し手 = 60 , 4番の指し手 = 50 , 5番の指し手 = -10 のように、スコアの良い順に上から5つの指し手とそれに対応するスコアが得られます。


そして、やねうら王の場合、bestの(1番の)指し手から、どの範囲まで許容するか設定することが出来ます。例えば、「3」まで許容すると設定すると、bestの指し手が70ですから、70 - 3 = 67の指し手までが許容されます。すなわち、このケースでは、1番と2番の指し手が許容され、このどちらかをランダムで選んで指すのです。


このようになっているので、やねうら王は指し手のランダム性を確保しつつ、かつ、局後検討で熟考することによりさらに強くなるのです。今回の電王戦に出場している他の4ソフトがランダム性の確保のために評価関数のパラメーターに乱数を入れるなどしてあるので、(おそらく)レーティング換算でR30〜50程度弱くなっているのに対して、やねうら王だけは指し手のランダム性を確保しているにも関わらず、むしろR100〜200強くなっているのです。


そのことは、このあと将棋倶楽部24に参戦して証明したいと思っています。


ちなみにfloodgateに参戦させているPCはCore i7 4771(3万円台で買えるコスパのいいCPUです)で、このPCで将棋倶楽部24に参戦します。5万円のPCで人類の最高レーティング3312を超えられるでしょうか。そして弱点を見つけ出すとそこを執拗に突いてくる人間にやねうら王の局後学習メソッドは対応できるのでしょうか。お楽しみに!