今年のSDT(将棋電王トーナメント)の開催日が発表になりましたね。11月の11,12日だそうです。参加予定の皆さんの開発は捗っているでしょうか?やねうら王はまだ1㍉も強くなってませんが。
将棋ソフトに興味のあるプログラマの方から「将棋ソフトばっかりずっといじってて飽きないのか」という質問があったのでこの場でお答えしますが、毎年トレンドって変わるんですよね。
SDT1(第一回将棋電王トーナメント)からやねうら王の変遷をざっと振り返ってみましょう。
SDT1 .. Bonanzaの高速化
高速化と言っても並列化もさほどする余地がないので、SSE2/4の命令でガシガシ書いて速くなるわけでもなく、アルゴリズム的に等価な変換を利用して計算量を減らすとという感じでした。コメントがほとんど書かれていないBonanzaのソースコードを解読する作業とパズルを解くような作業の繰り返しでした。ずいぶん頭の体操になったような。
SDT2 .. Stockfish化
探索部をStockfishにして丸ごと書き直し。この作業は、アーケードゲームをプレイステーションに移植する、みたいな感じの移植作業に近いですね。Stockfish化したおかげで、ソースコードはずいぶんシンプルになりました。
SDT3 .. 機械学習
Bonanzaメソッドによる機械学習、そして、KPP/KPA次元下げ。機械学習について色んな論文を読んだりした時期でした。また、この次元下げのコードが本当、腕力が必要なコードで大変苦労しました。
SDT4 .. 大規模学習
教師局面を50億ほど生成してそこからの評価関数を学習させました。連続自己対戦フレームワークの作成、Jenkinsを導入してjob化するなどインフラにずいぶん時間がかかりました。『技巧』の開発姿勢に大いに影響を受けました。
SDT5 .. 新たな評価関数の設計
そして今回のSDT5のトレンドは言うまでもなく、新たな評価関数の設計です。KPPT型評価関数が限界を迎えているので、新たな評価関数を設計したチームのみが上位に残れます。
新たな評価関数と言うとすぐに(3駒関係の次だから)「4駒関係だろ?」と思われるかも知れませんが、4駒関係は3駒関係に比べると12倍ぐらいの計算量が必要で、現在の3駒関係でも評価関数に40%程度のCPU時間を消費しています。それが12倍も時間がかかるようになるとnpsは1/5以下に低下します。レーティングで言うとR500程度のダウン。4駒にしてそれ以上のリターンがないと結果的に弱くなります。まあ、そもそもPCの搭載メモリが128GBあっても4駒関係は収まりませんしね…。
ともかく、SDT1〜4をざっと振り返り、SDT5の展望を書いてみました。こうして見てみると、毎回トレンドが違うので、力を入れている分野が異なるんですよね。来年のトレンドは探索部かも知れませんし、再来年のトレンドは定跡部やDNNかも知れません。
そう考えると、コンピューター将棋で長年にわたり上位の成績を残すには、このように毎年激しく移り変わるトレンドに適応していく能力が問われているのかも知れませんね。「将棋ソフトを作って5年目になります」とは言っても、毎年やっている内容(競技種目)が異なる感じです。それだけに、私としては、やっていて飽きないのですが、このトレンドについていけなくなったチームは上位から脱落していくのでしょうね。
最近コンピューターの大会を見ていて思うことが、上位のプログラムの殆どが公開されているいわゆる強いライブラリーを使用していて、以前ほどの強烈な個性臭が無くなってきていると感じています。特に新参のプログラムが勝ち進むと以前なら第2のBonanza登場か!と盛り上がったのですが、○○ライブラリー使用と記載されているのを見てしまうと一気に醒めてしまいます。
このように情報公開化社会になると全体の技術は向上する反面、没個性になることは仕方ないのでしょうか・・将棋もお強いヤネさんはこの状況をどう思われますか?
評価関数の形が違うと全く異なる棋風にはなるので、次のSDTはライブラリ勢も上位陣は強烈な個性を持った面白い将棋を見せてくれるのではないでしょうか。
囲碁でいうalfaGOやmaster並の異次元の強さを持ったプログラムの出現に期待します❗ヤネさんから出ないかな~
やねうら王は、いまのところ棋力+R0 (何も強くなっておらず!)ですけど…。まだ温めてる途中ですわw
ずいぶん煮詰まってますね。
自分もジョーク言えるほど何かひらめきがあるわけじゃないですし。
ちゃぶ台返しがそろそろ必要なのでしょうか。
流行りのディープラーニング型にしちゃうとかもどうなんでしょう。
割とハニースポット絞りつくしたっていうのがあってるのかなぁ。
妙案ありますか?
評価関数の形を変えればまだR2、300ぐらい余裕で伸びるでしょう…。どう変えていいのかは知りませんけど…。
PPAPでしょうか?
低位テンソルをテーブルにするとかになるんでしょうかねぇ。
なんかディープラーニング型の走りっぽく?
SDT9 .. 学習時の乱数の導入
学習時の乱数なら、Bonanza時代から入ってますけども?
そういう意味ではない?