第5回将棋電王トーナメント(参加した)

何も開発しないまま大会2週間前になる。体の調子が悪かったり精神の調子が悪かったりで開発できないと思っていたが、体調がよくなってさあ開発しようとなると、またどうしようもない嫌悪感が襲ってきてコンピュータ将棋のコードは書けないのだった(競プロのコードは書ける)。
もちろん何も書かずにshogi686microのまま出場するわけにはいかないので、頭の中では計画を練っていた。PR文書に書いた学習の実現に必要なのは、2駒関係の実装と学習部の実装、そしてその学習を回すための時間(必要な時間は不明だが、一晩程度、失敗したときのために二晩はほしい)。だが、頭の中でいくら考えても、いざ実装してみると新たな問題が出てくるのがプログラミングというもの。何もせず焦っていた。
2駒関係の計算方法をしっかり頭の中で確認したり、自己対戦の方法を詰めたり、頭の中では頑張っていた。手は動かさないままだった。コードを書き始めたのは11/6ごろだったと思う。ツイートしていないから確かなことがわからない。2駒関係は何回か実装したことがあり、詰まることはあっても本格的な困難はないので自分用のメモにも何も書いてない。完成を最優先とし、差分計算は実装しなかった。
11/7の夕方辺りから学習部を書き始めたと思う。shogi686microは本当に単純なアルファベータ探索なので、学習時の自己対戦も書きやすい。AdaGradは実装経験もある。ただ、さすがに機械学習は難しい部分だということも実感した。体調が回復傾向にあり、本番が近いという緊張感がいい方向に働いたこともあり、1日ちょっとで動くものが出来上がった。ここは我ながらよくやったと思った。発生したバグで大きかったのは、PPの回転対称で符号を逆にしてなかったこと(初期局面で評価値が-3000になったりした)。
depth1で感触を確かめたあと、11/8夜にdepth2の学習を一晩回した。翌朝、sspに一発入れたので「これで出場できる」と安堵した(ただし、実際には終盤が想定外に弱く、このときsspに勝てたのはただのまぐれだった模様)。
探索がやはり弱いということで、1日でできる棋力アップがないか検討し、スコアのみの(hash moveを使わない)置換表を入れた。歩の成り捨てとかも恥ずかしいのでそこも修正した(その晩にまた学習させるつもりだったので、2駒関係の表現力を少しでも稼ぎたい(成り捨てに関する値が少しは付いていたと思われる)という思いもあった)。置換表のスコアの使い方は、必要な処理を忘れていて理解不足を露呈した。
また、どうも棋風が荒いので、出力した20個の評価バイナリ(途中経過)の平均を取るという手段を思い出して実装した。強さはともかく棋風が安定したので(好みだったので)採用した。
11/9夜に最後の学習(追加学習)(11/10夜は狭いところに泊まるので学習はできない)。これがどうも弱い。平均を取ってもダメなので、結局一晩だけ学習させたもので出場することにした。玉の真上に相手の金があるとかには大きい値を付けたいが、玉を含まない関係に大きな値が付いていても困るので、難しいところ(まあ実際には学習の不備なんだろうけど)。
学習が途中で止まるんじゃないかという不安から、11/10の朝はPCのファンの音が小さくなったことで目が覚めた(もちろんパッチリしたというだけで元から覚めてはいたのだろうけど)。実際には、CPUを使い切れない学習部と朝の寒さの組み合わせが原因だった。
11/9は変なツイートばかりしていた。ソフトのほうはなんとか形になったが、熱が出て参加できなかった半年前の選手権を思うと体が心配だ。ツイートはしたいけど、フラグになるようなツイートはしたくなかった。何を気にしてるんだという感じだが、フラグにも相関関係はあるかもしれない。自由意志でツイートしてるつもりでも、体調を崩すときしかフラグになるようなツイートはできないのかもしれない。ツイートできないならいいじゃんて?まあそうなんだけど、怖いんだよ。
11/10は事前準備の日。宿泊・交通のための準備も大変だった。どうにかターゲットの電車に間に合った。13時ちょうどにニコファーレに着くと、まだ開いていなかった(すぐ開けてくれた)。中に入ると、レイアウトは去年と同じ。ちょっと机が小さくなったのかな?案外早い時間帯から人が増えてきた。
テスト対局では、(そうならない仕様のはずなのに)角不成を指してしまった。駒割だけのときにオーダリングをランダムにしていたのだがそれを切り忘れていたのが原因だった。設定のデフォルト値を修正して再コンパイル。電王トーナメントバージョンが出来上がった。
今回は、事前準備で無駄に早く会場入りしたので、PCにVisual Studioをインストールした。ネットとSSDがめっちゃ速い。mEssiahさんにソフトマックスの話を聞いたりしていた。18時頃に、僕が糖分補給をしようとしたタイミングでカレーが支給され、それがとてもおいしかったので、みなみけ1期3話の「クリームシチューごときが、こんなにも人の心をとろかすものなのか」を思い出していた。
その後、海底さんカツ丼さんきふわらべさんと話をしていつの間にか遅い時間になっていた。早歩きで10分ほどの宿泊先へも無事辿り着き、(あのダメな状態から)ようやくここまで来たという嬉しさがあった。
その他のことはツイートを参照。色々あって、自分にとって楽しいことばかりではないけれど、ものすごく貴重な時間だった。
あんま関係ないけど、あれは「ケンカ」ではないよ。きつい口調で言い合っていると、クラスタ外からはそう見えちゃうのかもしれないけど、内容的にしっかりしていて僕は安心感しか感じなかった。
話を戻す。いやもう人数がめちゃくちゃに多いし、大変なのよ。基本的にはコンピュータ将棋の話をしたくて参加してるんだけど、話しかけていいものかわかんないし、きっかけも思いつかなかったりして。それでも、コンピュータ将棋が好きという共通点があるので、一般のアレよりはずっと楽ではあるのだよね。
余裕がなくて事前にはツイートできなかったけど、僕に対しては誰でも気軽に話しかけてください(ていうか話しかけてもらえるくらいすごいソフトを作ればコミュ力とかそこまで必要じゃなくなるんだよなあ)。まあとにかく、僕は参加したからにはコンピュータ将棋の技術的な話がしたいと表明しておきます。