コンピュータ将棋選手権の話

早めに書いておかないと熱が冷めるので書こうと思いますが,あれ以来睡眠周期が乱れて酷い体調になってるのでこんな時間でもあるし,きっちり整理できてる気がしません。

まぁ,いつもの追記にするか訂正することを前提にメモっておきます。

 

アピール文の話

書き方が雑というか予定ばっかりで確定的な情報が皆無であったこと。実際に確定事項がほんとうにありませんでした。評価関数を人造棋士18号の松下さんに頼る決断をしたのは4月に入ってからですし,魔改造技巧エンジンの使用用途は最後まで迷いました。

証人は松下さんしかいませんが技巧型の評価関数と今回たぬきが導入したようなディープラーニング型の評価関数や指し手確率分布の試みは既にこちらも行っておりました。

AWSのテストができたのは4月末でnpsのベンチマークでm5.24xlargeがベストと確認しましたけど,複数利用するには事前申請が必要と分かりまして,この制限が申請後解除されたのは本当に5月1日の午前のことです。Amazon外資系なので休日出勤がないというのは事実のようです。(ここのネタを公に言うのはこれが初めてです)

相手の手を予測する部分のベンチマークは結局間に合わず,大会後間違ってなかったんだろうなぁってデータが集まっていたことを確認しました。魔改造した技巧は無駄でなかったことをアピールできます。一次予選はそういう意味でリアルタイムの実験でした。時間制御をあんなことしたのは遅延時間計測も含めてのことですので御理解下さい。

 

定跡の話

昨年のshotgunの定跡の大半が自動生成されたものであることは記載済ですが,これがdepth24で探索されたものです。今回の選手権ではAWSクラスタが用いられるためdepth24には秒以下で到達します。つまり,depth24で切ったデータなどは悪手のリスクしかない塊になりかねません。事実長時間対戦では定跡の粗が多く見られました。

そこで,取り急ぎ全てdepth26で再探索することにしました。これがi9含め手持ちのリソース全投入して一か月程度の計算量であることを確認しました。というか28とか30は間に合わないことを確認していた。26は苦肉の妥協です。使わないという選択肢も対戦勝率計測時に用意していました。

未確認ですが,5月5日朝に最終更新した4000局面強で99.9%程度は更新できたと思っています。i9とのリモートデスクトップ通信が不調でなければ4日朝に更新できたと思われる分です。

また,同時に自動での定跡延長を行いファイルサイズは二か月で2割程度増えました。

ちなみに,若干規模深さなどが異なりますが,たぬきさんも今回同様の自動定跡生成を行っているらしいですね。

 

評価関数の話

正直シボレーでうまくできた試しがありません。結構作ったつもりだがあまり強いものができなかったのでライブラリ使用規定範囲内でキメラ対応かと思ってました。また,遺伝的アルゴリズムで評価関数合成し短時間対局で強いものを選ぶ的なスクリプトを用意していましたが,実用時間での解は得られ無さそうであることを確認してました。

そういう愚痴を松下さんに零したところ人造棋士18号からさらに進化した棋人ブゥの存在を知らされ,こちらでテストさせて貰うことにしました。作成手法については人造棋士18号の使い方などを参照してください。(私はあんまり理解していない。)

sdt5でのたぬき,かっぱ,えるも,aperypaq,wakameなど公開評価関数との対局相性を確認しながら棋人ブゥの改良に努め結局通し番号で14番まで作成して頂きました。

結果として12番13番のダブルエースで行くことに決まりましたが,選手権で使ったのは13番のみです。12番は対かっぱ(qhapaq_sdt5, aperypaq)専用であったが対戦前に設定を忘れてました。実際の対戦がアレなので事後検証してみたいと思ってます。

この間,多数の評価関数の評価と並行して定跡延長を行う術を思いつきましたので,この間の評価関数は定跡抜け局面限定の定跡間対局となります。また,定跡の生成も途中から7番,9番,12番,13番と使用評価関数の異なる混ぜ物となりました。(いいのか悪いのか知りませんが現実解としての妥協です。)

 

そうこうしているうちに定跡が延長され,悪手が減って,強い評価関数が選別されました。

最終段階では某サイトでトップスコアのwakame相手に7割弱程度の勝率を誇る程度まで仕上がります。ここで,13番がqhapaqとaperypaqだけに相性が悪いことも確認されており,この際12番を控えのエースとすると予定しました。(事後確認ですがaperypaq相手だと7番とか9番が優位だったのは忘れてました。)

 

計算リソースの話

事後で考えればAWSのリソースを早めに導入し金にモノを言わせるのが正解だったでしょう。貧乏性が足をひっぱったのもあると思います。しかしながら,個人的には一応コンセプトとして電王トーナメントの賞金の範囲でやろうと決めていたので仕方ありません。

新規に購入したのは昨年職場に入れたi9デスクトップと自宅用のryzenノート(ASUSの8コア)です。前者はちょっとした空き時間に応答のいい検討ができるので非常に便利でした。後者は評価関数を松下さんに頼ることを決定したときに選手権まで預けることにしましたので購入僅か2週間足らずで手を離れることになりました。

実際の対戦ではryzenで行う予定にしていたのですがAWSSSHの設定などの手間を考えてテストしていたモバイル機で行くことにしました。これは選手権現場での決断です。余ったryzenノートは現地でクジラちゃんの養分となったことは現場にいた人たちは目撃したと思います。(断っておきますが,対戦マシン以外の会場回線への接続は禁止されておりますので自前スマホによるテザリングでのクジラクライアント参戦です)8コア3.2GHzですのでそこそこ戦力になったと思っています。

 

ソフトウェア公開の話

うちのソフトと対戦したいとの要望があるようなのですが,既に24で松下さんが流す準備をしています。(もう流れているのかも)うちでfloodgateも流したいと思いますが連戦となるとちょっとマシンの準備をさせて下さい。他の案件との兼ね合いで高速なマシンは用意できないかもしれません。もちろん,スポンサーがいればAWSでfloodgateに繋ぎます。遠慮なく申し出下さい。

また,個人的には対人戦は好まないのですが,大学のイベントの余興として広報から依頼されましたのでshotgunを展示予定にしていました。5月29日以下のイベントです。勝ち負けとか気にしない軽い感じでお願いします。

OPUフォーラム2018

AWSクラスタではありませんが,Hefeweizenの劣化バージョンも準備しようと思っています。たぶん定跡と評価関数くらいしか変わりません。対戦御希望でしたら是非御来場お待ちしております。

将棋所などが導入されたPC持ち込みでしたらLANケーブル直結で対戦できるかもしれません。

 

最後に,実行ファイル等の配布は行わないと明言しておきます。今回多くの方と交流させて頂いてファイル公開を希望している人の多くが局面検討を目的としているようですので,我々のような対戦特化型のエンジンは不要と思います。序盤定跡におきましても上記のような作成方法のもので万が一プロや奨励会の方が真に受けて影響を受けられても私が困惑してしまいます。floodgateにDDoS入れるのも好ましくありません。また,松下さんも評価関数作成のノウハウは公開するがファイルそのものの公開は行わないポリシーのようですので御了承下さい。

ーーー

一部ネットで批判されている公私混同の件については一言申しておきます。

まず,電王トーナメントは完全にプライベート参加でした。その後,大学の広報等が私のプライベート活動を利用した形になります。現時点では大学運営側から支援も頂くことを確認しておりますし,詳しいことは出せませんが学生の希望する研究テーマとしてスタートしております故完全に職務の範囲となっております。研究成果は公的な発表を行うことになると思いますので御期待下さい。

知る人ぞ知る話ですが,学生時代に創設したF-tecと言う人力飛行機チームを彷彿とするエピソードになります。おっさんの武勇伝に興味ある人は酒の席にでも聞いて下さい。