機械学習周りのプログラミング中心。 イベント情報
ポケモンバトルAI本電子書籍通販中

第5回将棋電王トーナメント総括(本番編)

2017年11月11日から12日にかけて、ドワンゴ日本将棋連盟主催の「第5回将棋電王トーナメント」に「ねね将棋」というソフトで出場しました。この記事では、東京・六本木の「ニコファーレ」で行われた本番の感想などを述べます。

ソフト開発に関しては、以前書いた記事をご覧ください。

select766.hatenablog.com

戦績としましては、ねね将棋は、予選で3勝5敗となりました。予選落ちです。

前日準備

大会前日(金曜日)から会場にはマシンが用意されており、将棋ソフトのセットアップが可能でした。参加は任意ですが、時間が取れたのでこの日に会場でセットアップを行いました。

依存ソフトウェア問題

C++製のソフトだと、実行バイナリと評価関数ファイルを設置するだけで終わることが多いかと思います。ねね将棋はPython製で依存するライブラリが多いため、会場でセットアップするための事前準備が必要でした。会場でのネット環境が不明だったため、ライブラリをオフラインでインストールできるようにあらかじめダウンロードしてUSBメモリに入れて持っていきました。最近のソフトはインストーラがネット接続を前提としている場合が多く面倒でした。

結果的には会場のマシンからかなり高速なネット接続が可能で、そこまで準備することは必須ではありませんでした。本番対局中だけネット接続を切断するという運用がなされていました。

依存ソフトウェアの種類が多いため30分ほどはかかりましたが、事前準備をしっかりしていたため、会場でのセットアップと動作確認はすんなり進みました。Linux利用勢はここでOSの入れ替えが必要なので大変そうでした。

予選(11/11)

9:00ごろ会場入りしました。テスト対局を経て本番に臨む準備が整いました。ソフトのトラブル対応を見越してか時間には結構余裕が取ってありました。ほかの開発者と交流していればそんなに暇という感じではありませんでした。

会場はこんな感じです。

f:id:select766:20171214081828j:plain

第1局 vs Ponanza

初戦は誰と対局になるか事前に知らされておらず、いきなり対局が始まるという状況でした。

開始直後の表示がこちら。

f:id:select766:20171214081703p:plain

お、おう。

Ponanzaに勝てるわけがないので、ある意味プレッシャーは減りました。バグでおかしな挙動をしたり30手で詰まされたりしなければOKという意識です。

Ponanzaは山本さんではなく、今回新たに参加された大渡さんが改良および本番の操作をされていました。従来通りの高速な探索部と深層学習を組み合わせて強化されたそうです。極限までチューニング済みの探索部に、鈍足な深層学習を組み合わせるのは難しい仕事だっただろうと想像します。

対局は、Ponanzaが1手ごとに着実に評価値を上げていきねね将棋の負けとなりました。偶然にもPonanza引退の大会で対戦できたことを光栄に思います。選手権だとシードがあるので強いソフトと弱小ソフトと当たることはそもそもなく、貴重な機会でした。

第2局 vs Novice

各局の対戦相手は、それまでの勝ち数が同じになるように組まれます。ここでは1敗同士の対戦になりました。

Novice戦。Noviceは探索部の高速化を重視されているそうです。

35~45手目でねね将棋の指し手が迷走し、一気に敗勢となり2連敗となりました。

第3局 vs 十六式いろは改

ここまでねね将棋は2連敗。1勝はしたいという目標を掲げていたので、焦ってきました。

十六式いろは改戦。十六式いろは改が先手で、いきなり定跡(やねうら王の標準定跡を使用しています)を外されたためねね将棋が2手目を即指しせず、バグったかと焦りました。

十六式いろは改は、相手が動かした駒の周囲にある自分の駒を動かすというルーチン(!?)で動いているそうです。ねね将棋が8五歩と飛車先を伸ばすと、8六歩と応じてくる独特すぎる棋風でした。

飛車先をそのまま突破し、20手で詰みに至りました。ねね将棋の初勝利です。

f:id:select766:20171214081743j:plain

開発者の方が楽しそうにお話しされていて、対局の勝ち負けだけではなく楽しむことも大事だと改めて思いました。

第4局 vs TMOQ

TMOQ(「とくだいもっきゅ」と読むようです)戦。

この間にニコ生に出演。阿部先生に(ソフト名の元ネタの)ねねっちネタを拾えてもらえて満足。

対局のほうは悪手で一気に形勢が悪くなり、そのまま負けました。

第5局 vs Girigiri

Girigiri戦。

Girigiri側が飛車を活用できず、ねね将棋が徐々に評価値を上げる初の展開でした。

Girigiriは数手先の負けを見切ると投了ではなく反則負けをするというちょっと変わった仕様らしく、58手目でGirigiriの反則負け。棋譜解析では4手で詰む局面でした。

第6局 vs CGP

CGP戦。

CGPはしっかり読みを実装されているらしく、順調に評価値を稼がれてねね将棋の負けとなりました。

評価関数がなんであれ、探索部がしっかり実装されているソフトは強敵です。

第7局 vs にこあ将棋

にこあ将棋戦。

にこあ将棋が先手で、初手5八玉。またいきなり定跡を外れる展開でした。

早々ににこあ将棋が角を捨ててしまい、一気にねね将棋が駒を成る展開となりました。ねね将棋3勝目。

第8局 vs なのは

なのは戦。

24手目まで定跡が続く対局でした。

50手目で事件が起きました。ねね将棋がクラッシュし、時間切れ負けとなりました。

ログを見たところ、読み筋が千日手になった場合に置換表の参照部分がおかしくなることがあるようです。開発中には起きなかったバグで、痛恨の敗戦となりました。棋譜解析によれば互角の局面で、最後まで指したいところでした。

伝統あるなのはとの対局で、強さ以前のソフトの品質についてもっとよく考えなければいけないと学びました。

決勝トーナメント(11/12)

翌日の決勝トーナメントはニコ生で観戦していました。優勝者決定の前には会場に行こうかと思っていたのですが、体調が思わしくなく断念。

自分は野田さんの「平成将棋合戦ぽんぽこ」を応援していました。ぽんぽこ vs Ponanza、ぽんぽこ vs shotgunの戦いは特に緊張して見ていました。自分の将棋の棋力は低いですが、西尾先生の解説を聞きながら上位陣の巧妙な手筋に感服していました。

ぽんぽこ優勝、おめでとうございます。

今後に向けて

すでに述べた通り、ねね将棋は予選で3勝5敗となりました。2か月ほどのソフト開発でここまで達成できたことは満足しています。しかしやはり対局で負けると悔しいとも感じました。次はもっと勝ちたい、という気持ちを感じたので、2018年5月に開催されるであろう世界コンピュータ将棋選手権でぜひリベンジしたいと考えています。

深層学習を用いた将棋ソフトの開発技術はまだまだ成熟していません。設定すべきパラメータ、学習のさせ方等に大幅な改善の余地があるでしょう。また、長い手数の詰みを見つけるという点では従来の軽量な評価関数を用いた深い探索はなくならないでしょう。これらの融合というのも大きなテーマになると思います。

最後に、大会主催のドワンゴ様、日本将棋連盟様、大会で対局・交流させていただいた開発者の皆様、そのほかコンピュータ将棋を応援してくださる皆様に深く感謝申し上げます。