第28回コンピュータ将棋選手権の感想戦(雑談編)

2018.05.08に修正

第28回世界コンピュータ将棋選手権に妖怪惑星Qhapaqとして参加しました。悲願の決勝リーグ進出を達成し、最終的な順位は7位入賞となりました。応援してくれた方、大会を支えてくれた方、大会を楽しんでくれた方全てにお礼申し上げます。

 

本稿では御礼に変えて実況などでは出てきにくい、Qhapaqから見た舞台裏のうち技術と関係ない話(技術的な話はもう少し検証が必要なので)をしていきます。

 

Crazy shogi、マジでCrazy:

本大会の注目株の一つであったCrazy shogi。海外勢としては2人目なのですが、日本語を話せない参加者が来るのは本当に久々で英語対応に苦慮しました。基本的にYSSの山下さんが対応をしていましたが、山下さんが大会運営に出ているときは代わりに私が説明をしたりもしました(中継ブログの画像でやたらRémiさんと一緒に写ってるのはそれだ)。

開発者のRémiさんは本当に将棋を知らないらしくCrazy shogiが矢倉を指したのを見て「Foooo,ゼロから学ばせたDNN将棋が矢倉指してるゥウ」と喜ぶ観戦者を尻目に「Hey,河童、未だ始まったばかりだが彼らは何を喜んでるんだ。もう決着ついたのか?」と呑気な様子でした。

Crazy shogiは対局毎に評価関数を差し替えていました。曰く「Alpha zeroの学習で強くし続けている」とのことです。

私「Rémiさんは強くなってるだろうと言ってますが、将棋強い民的にこの棋譜はどうです」

強い民(誰だかは忘れた)「序盤戦略は悪くないんだろうけど、人間的にはちょっと奇妙ですね」

私「あ、でもCrazy shogiってCGP(レート3500級のソフト)に勝ったみたいですよ」

強い民「それ、人間的には一番手に負えないやつですね」

 

将棋民怖い:

大会終了後に詰将棋カラオケをやろうと思っていたので、10分で解ければ2段の17手詰めなどが記載された書籍を持ち込みました。カラオケをやりながら倒すのであれば平常時で1分ちょいで解ける問題が適切だろうと考え、会場にいた将棋が強そうな人たちに解いてみてもらいました。

私「どうです?」

PALの山口さん(東大将棋部)「N分で解ければM段ってのは結構適当ですからね。あ、解けました(大体1分ぐらい)」

私「東大将棋部パねえですね。ちなみにこれをプロがやったらどうなります」

山口さん「一瞬じゃないですかね」

私「と、いうわけで千田先生どうです」

千田先生(指で駒を動かすモーションをする)

千田先生「解けました(大体30秒ぐらい)」

私「プロ棋士パねえっすね。あと、詰将棋解くときに指って動くものなんですね」

千田先生「いや、今回のは解けた後に手数確認するためにやっただけです」

私(アカン)

 

ライバルソフト強い:

今回のQhapaqはシード組。此方はaperypaqよりも強い評価関数を用意していた(そして、floodgateを観る限りaperypaqを大いに引き離す関数はないように見えた)ので、それなりに勝つ気でいましたが、ライバルソフトの強さに終始圧倒されていました。個人的に一番記憶に残ったのはPAL(二次予選で席が隣だったので色々話したのもありますが)です。

 

決勝リーグにて

私「昨日は後手角換わりで負けたので、今日は意表をついて角換わり拒否にしてみました。定跡巧者相手に角換わりは危なそうなので。」

山口さん「いいんですか、銀は78ですよ?」

私「Qhapaqの評価値的にはそこまで問題はないです。定跡外れてくれたようで何よりです」

山口さん「いや、これは先手が速攻を決めれば結構勝てるので定跡優先度が低いからそんなに作ってないってのが...」

私「ふぇ?」

(宣言通りQhapaqが一方的にボコられて爆死する)

 

ちっ

 

HER○Z大人気:

※:開発のデスマ故か記憶がパラレルワールドに飛んでいたので修正。

 

大会1日目の打ち上げでの話

私「評価関数ガチャに失敗しましたが、HEROZのIPO参加ガチャにも失敗しました」

打ち上げ参加者「あれ、めっちゃ株価上がったらしいですね」

私「でも平岡さん、今期もサンダル参加でしたよ」

打ち上げ参加者「そういえば平岡さんって何株持ってるんでしたっけ」

mtmtさん「8000株。ちなみに山本さんは...」

参加者(こ、この人全部覚えてやがる)

 

2次予選のQhapaq vs たぬき戦にて

たぬき「ちょっとたぬきが悪くなってきたかも」

私「Qhapaqの評価関数は良くなってきてます。このままHER○Zの株価並みに上昇してくれれば大成功です」

観戦者(名前失念)「30000超えたらMateですね」

平岡さん「それ安定してないやつやん」

(たぬきが唐突に河童玉の頓死を発見。その後Qhapaqも大反省)

私「hrokてめえええええええええええ」

 

修正前の間違った原稿も置いときます。

設営日から数えて大会2日目=一次予選ってのが何処かで飛びぬけ、

大会2日目=二次予選と勘違いした様子......

2次予選のQhapaq vs たぬき戦にて

たぬき「ちょっとたぬきが悪くなってきたかも」

私「Qhapaqの評価関数は良くなってきてます。このままHER○Zの株価並みに上昇してくれれば大成功です」

観戦者(名前失念)「30000超えたらMateですね」

平岡さん「それ安定してないやつやん」

(たぬきが唐突に河童玉の頓死を発見。その後Qhapaqも大反省)

私「hrokてめえええええええええええ」

---その後、2次予選後の打ち上げ---

私「と、いう暴言を吐きましたが、敬愛する平岡さんの財産形成のためにもHEROZの株価は高みを極めて欲しいですね」

打ち上げ参加者「平岡さんって何株持ってるんでしたっけ」

mtmtさん「4000株、ちなみに山本さんは...」

参加者(こ、この人全部覚えてやがる)

 

入賞スピーチの焼き直し:

本大会では決勝リーグでクラスタの準備が間に合わなかったりしたことをお詫び申し上げます。同時に、便宜を図ってくれた運営および視聴者の皆様に感謝申し上げます。

今回のQhapaqはそれなりに強くできたと思っていました。特に4月なんて本当に地獄でした。桜前線を観る代わりに評価値推移の前線を眺め、5月の旅行先を悩む代わりに飛車の行き先を決めることを悩むのは本当にクソゲーで、私はこんなクソゲーは一日でも早く滅んで欲しいと思っています。

しかし、私はこのクソゲーが大好きです。指す人や観る人をドキドキさせる力が将棋にはあります。そして、その魅力の運び手は400年前の名人であり、今のプロでありココで私と凌ぎを削ったライバルたちです。だから、私はみなさんが大好きです。

ですが、Qhapaqを倒した者共を私は決して忘れません。次こそは報復します。そのために、二つのお約束をします。一つは、Qhapaqをもっと強くして持ってくること、そしてもうひとつは私自身が強い将棋指しになって帰ってくるということです。Qhapaqにはまだ大きな弱点があります。開発者の棋力が低いことです。次はこれを乗り越えてみせます。勿論、棋力の高い人を加えて解決するのではなく、Qhapaqの力を使って私を強くすることで解決してみせます。

次の大会、ぜひ、Qhapaqとだけでなく、私とも将棋を指してくれれば幸いです。これからもよろしくお願いします。

 

 

なお、実際はこんなにうまく喋れてはいない。

【締めきりました】技術書典で頒布した電子書籍のweb販売のお知らせ

技術書典4で頒布した「科学するコンピュータ将棋」のweb販売を行います。

締めきりました。注文された方の中で、DLコードが届いていない、

ダウンロードできないなどの不具合がありましたら、お手数ですが

f:id:qhapaq:20180424225620p:plain

までご連絡ください([atmark]は@に変換してください)。

中学生棋士(加藤九段、谷川九段、羽生竜王、渡辺棋王、藤井六段)の棋力をAIに分析させてみた

藤井四段と羽生三冠のどちらが強いか、流行の人工知能に聞いてみましたの拡張版として、中学生棋士5人の棋力をAIに分析してもらいました。

 

本稿は4月22日の技術書典4で頒布する「科学するコンピュータ将棋」の一部分となっております。興味がありましたら、是非イベントにお越しください(本書の宣伝ページは此方)。

中学生棋士の棋力解析の全文は此方のページから閲覧可能です(このデータに加え、対局相手との比較などのデータがあります)。

 

 

【人間の強さは良く解らない】

「藤井六段は羽生竜王より強いか」

「最盛期が最も強かった中学生棋士は誰か」

これらは観る将であれば一度は考えたことだと思われます。藤井六段と羽生竜王の成績は非公式戦で1-1、公式戦では1-0です。現時点では藤井六段が勝ち越していますが、勝率を測定する上では全然足りていません。プロ棋士が年間に戦う数は精々50前後であり、この程度の数だと勝率には10%以上の誤差が付随してしまいます。

しかし、対局数ではなく指した手の数に注目することができれば、データを大幅に増やすことが出来ます。年間にプロ棋士が指す手数は3000手を超えているので、指し手から強さを測定する方法さえ見つかれば、棋士の棋力を少ない誤差で測定することが出来そうです。

 

【そうだAIを使おう】

YSSの開発者である山下氏によって、将棋ソフトによって得られる悪手率(手を指す前の評価値と後の評価値の差から求められる悪い手を指す確率)によって、将棋倶楽部24のレートを悪くない精度で測定できることが報告されています。

www.yss-aya.com/20141107gpw_meijin.ppt

本稿ではこの研究の拡張系として、評価値毎の悪手率を計算しています。粘り強さが重要となる劣勢局面での悪手率、研究の深さが重要となる互角局面での悪手率、詰めの腕が重要となる優勢局面での悪手率を比べることで、中学生棋士たちの棋力を調べてみます。

 

【比較と総評】

f:id:qhapaq:20180420010153p:plain

 

横軸が手を指す前の評価値、縦軸が悪手を指す確率(厳密には手を差した前後での評価値の減少分の平均)です。端的に言って低いほど強いです。以下、各中学生棋士たちの評価です。

 

【藤井六段】
藤井六段の最大の強みは有利になった局面での悪手率の低さです。中学生棋士全員の中でもずば抜けて低いです詰将棋で培った終盤力によって紛れを起こさせないことが上手であると言えましょう。また、-200〜200程度の互角の局面でも、中学生棋士達の中で最も良いスコアをあげています。21世紀の若手棋士よろしく、序盤戦略を相当練り込んでいると言えましょう。逆に不利な局面での粘りは意外なことにも中学生棋士の中で最も悪いスコアが出ています。紛れを求めた実戦的な指し回しを学ぶことが今後の課題となるかも知れません。

 

【渡辺棋王
渡辺棋王は勝勢の局面での指し回しが中学生棋士の中でも一番正確です。玉の固さに関する感覚が優れており紛れにくい終盤戦を展開するのが得意なのだと思われます。一方、自分が不利な局面での指し回しはソフト的にはミスが多いようです。「形勢が悪くなると顔に出てしまう」という本人評を反映した形になってしまっています。

 

【羽生竜王
羽生竜王は全体的にスキがなく流石はオールラウンダーといったところです。特に凄いのが不利な局面での悪手率の低さと対局相手の悪手率の高さです。悪い局面では意図的に変な手を指して紛れを求めなければならないとは言いますが、羽生竜王は自身の悪手率を上げることなく、紛れを求められているようです。羽生竜王の大逆転は羽生マジックと呼ばれますが、悪い局面で正確に指しながら、相手を複雑な局面へと追いやることについては、棋界のレジェンドである中学生棋士たちすらも寄せ付けません。羽生竜王自身はほとんどの棋戦でシードであり、対局相手の平均レートが最も高い棋士の一人であるにもかかわらず、このようなスコアを叩き出せるのは驚嘆の一言に付きます。

 

【谷川九段】
最近の谷川九段には自身が少し有利になった局面での指し回しに難があります。評価値+1500以上の勝勢の局面での指し回しは光速の寄せよろしく盤石ですが、そこに至るまでの構想に苦慮している様子が見て取れます。ただし、不利な局面での粘りは健在であるため、ここ暫くの成績の停滞は序盤中盤の研究の時間が取れなかったことが原因なのではと予測できます。

 

【加藤九段】
加藤九段は不利な局面(特に-400〜-600程度の形勢が傾き始めた局面)での指し回しは羽生竜王と並んで最も優れています。不利な局面でも折れずに戦えるのは歴戦の猛者の証左と言えます。また、勝勢の局面での指し回しも血気盛んな後輩たちと比べ遜色ないものとなっています。加藤九段の最大の弱点は有利な局面でのミス率の高さです。棒銀の名手として名を馳せすぎたゆえに、相手に研究をされてしまっているのかも知れません。

 

【総評】
これらのデータを踏まえ、私が予測する2018年時点の中学生棋士の強さの順位は 藤井六段=羽生竜王>渡辺棋王>谷川九段>加藤九段 です。数字の上では藤井六段の方が羽生竜王より強いのですが、対戦相手の平均レート差を加味すると、勝負はこれからであると予想しています。あくまでソフトの予想(しかも、一般的な下馬評と殆ど差がない)ではありますが、棋風を解析することで時代を作る彼らが今後どのように伸びていくかをこういった形式で解析するのも一興でしょう。

 

【改めて宣伝】

本稿は4月22日の技術書典4で頒布する「科学するコンピュータ将棋」の一部分となっております。興味がありましたら、是非イベントにお越しください(本書の宣伝ページは此方

 第五回将棋電王トーナメントのトロフィーも持っていきます。ガラス製の鈍器です。

技術書典4にてコンピュータ将棋本を頒布します in 4月22日 秋葉原

4月22日に行われる技術書典4にて昨今の将棋ソフトを語りつくす本「科学するコンピュータ将棋」を頒布いたします。約70ページ、700円での頒布を予定(※)しています。

注:電子書籍での販売を予定しています。名刺にQRコードを印刷するような感じです

 

techbookfest.org

【サンプル】

第3章までを此方のページで読むことが出来ます。

 

【詫びDLC(ダウンロードコンテンツ)について】

70ページのうち16ページぐらいを公開しているのに700円というのもきまりが悪いので、WCSC28後に本書購入者を対象に学習用データ(及びソフト)を先行公開いたします。本書に付随するDLCに関する情報は此方からご確認ください

 

【その他アピール事項】(4月17日アップデート)

・会場販売限定ですが、レフェリー割があります

以下の本(名刺)を持ってきた方には200円引き(700円→500円)にて販売いたします(マニア向け補足:割引の重複はありません。お許しください)

Short Coding ~職人達の技法~2007/8/9 Ozy、 やねうらお

Windowsプロフェッショナルゲームプログラミング2002/5/31 やね うらお

ひなた先生が教えるデバッグが256倍速くなるテクニック (Software Design Books) 2008/11/14 やねうらお

ショートコーディング 職人達の技法 2014/3/11 Ozy、 やねうらお

解析魔法少女 美咲ちゃん マジカル・オープン! | やねう解析チーム

やねうらお氏の名刺

Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS) 2016/8 池 泰弘

Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS) 2007/4/25 池 泰弘

コンピュータ将棋のアルゴリズム―最強アルゴリズムの探求とプログラミング (I・O BOOKS) 2005/2 池 泰弘

池 泰弘氏の名刺(うさぴょんソフトウェア製作所の名刺)

 

・入場は無料です

技術書典は一般参加は無料です。ご安心ください。

 

・電王トーナメントのトロフィーを持っていきます

電王トーナメントのトロフィーの最大の特徴はガラス製ででかくて重いことです。持っていただくのは安全上難しいですが、撮影などを楽しんでいただけると幸いです。

※:会場混雑によってはチラ見になってしまうかも知れません。会場スタッフの指示に従うようお願い申し上げます。

 

【web販売の予定について】

技術書典終了後にwebベースでの販売を予定しています。アマゾンギフトあたりを使うことになると思います。

速読コンピュータ将棋用語【記事募集中】

将棋ソフト開発者をやっていると当たり前に見えてしまう怪しい用語、これを解りやすくするというミッションを受信したのでやってみます。

 

 

 【もっと良い辞書をくれ】

コンピュータ将棋専門用語辞典【寄稿、独自解説など】(できるだけ数学抜きで解説する) - rewritemath’s blog

コンピュータ将棋 レーティング

などがおすすめです。

中の人のボヤキ:(初心者視点で解りやすい記事が増えてきたので、この記事は開発者しか使わなさそうな謎のスラング辞典にするべきかも解らぬ)

 

本稿では受験生御用達の英単語風に、よく出てくるソフト用語を大盤解説語に翻訳していきます。受験生のようなまっさらな気持ちでどんどん覚えていきましょう。

 

【将棋ソフトに詳しいフレンズ、興味があるけど開発者が何を言ってるかわからないフレンズへ】

コメントやら作者twitter(妖怪惑星Qhapaq(@Qhapaq_49)さん | Twitter)で単語を募集しています。なお、作者は大半のコム将棋用語を知っているはずですが、息を吸って吐くかの如くコム将スラングを使い過ぎた結果、どこからが辞書にするべき単語なのかわからなくなってしまっています。

 

大盤解説で出てきそうな話】

評価値:現在何方がどれぐらい有利かを示した指標

評価値がプラスであれば手番側が有利、マイナスであれば手番側が不利であるという判定方法が一般的です。点数については±200以内で互角、200~600ぐらいで有利、600を超えたあたりから優勢で、1200を超えたあたりから勝勢と言われますが、最近のソフト同士の勝負だと400を超えると殆どひっくり返らない感じです。

例文:「現在の局面の評価値は+800です」→「現在の局面は手番側が優勢です。評価値は800点程度のようです」

 

Mate x:x手以内に詰む

25手詰めではないことに気を付けてください。どう逃れてもX手以内に詰むというのが見つかるとソフトはMateを吐いてきます

例文:「Mate +25と出ています」→「25手以内に詰むようです」

 

depth :手を読んでいる深さ

pv :読んでいる手筋

今の将棋ソフトには一部の手を選択的に深く読む機能が実装されています。故に、読みの深さが2種類表示されたりします。また、読み筋のことをちょくちょくPVと呼んだりします。

 例文「現在depth 10/14まで読んでいて、pvは83飛車82香です」→「現在10~14手先まで読んでいるようです。今は▲83飛打△82香打の筋を考えて居ます」

 

multiPV :読んでいる手の種類

multiPVはソフトを使って戦型などを研究するときによく出てくる技です。multiPVの後ろにある数と同じだけの候補手を出してくれます。

例文「multiPV 3で読ませると76歩、26歩、78金が候補になります」→「ソフトが良いと考えている上位3手は76歩、26歩、78金です」

 

Ponder:相手の手番中に読んでる手筋

将棋ソフト用語でのponderは、相手の手番中に相手の指し手を予想して読むことを意味します。殆どのソフトは相手の指し手の予想を1通りに絞り、その手を指した場合についてのみ深く読む作りです。当たれば相手の消費時間分だけ長く手を考えられますし、外れればゼロから読み直しになります。それ故にponderが当たるか否かは勝負を決める上で重要な要素となります。

例文「Qhapaqがponderを当てられ続けていて辛そうです」→「Qhapaqの指し手が相手の読みと当たっているせいで時間攻めを喰らっています」

 

反省、土下座:評価値が急落する様子

ソフトも結構な頻度で勘違いをします。自分が有利だと思っていたソフトが数手先で評価を翻すことを反省、土下座と呼びます。体感的には土下座の方が反省より評価値の下落が大きいことが多いです

 

説得中:ソフトの評価値が割れている状態

評価値が割れることでどちらかの反省 or 土下座が不可避になった時に開発者が良く「説得されろー」と互いを罵り合います。

例文「「nozomiの評価値+400で有利って出てます」「Qhapaqはまだ互いに0ですね」「説得されろー」「説得されろー」」(WCSC27の開発者雑談より。因みにこの後Qhapaqが反省した)

 

ライブラリ:コードが公開されていて改造できるソフト

やねうら王、Apery、技巧が有名。今のソフト開発の爆発的進化を支えているとても偉いソフト達です。

 

チルドレン:ライブラリを使ったソフトの総称

先人が与えてくれた探索部や学習のノウハウを改造して戦っているソフト達の呼び名です。有名どころで言えば、elmo(WCSC27優勝)、たぬき(sdt5優勝)など

 

【ソフトの手法について出てきそうな話】

評価関数:一つ一つの局面に対し、どちらが有利であるかを判別する手段

 

探索部:各々の指し手に対する評価値から、どの手を指すと一番得かを判断する部分

昨今の将棋ソフトを理解する上で恐らく最大の障壁になっている、評価関数と探索部。評価関数も探査部も一緒くたにソフトと呼ぶのは本来適切ではないのですが、用語として広がりすぎているので、評価関数、探索部の意味をそれぞれ簡単に解説する必要がありそうです。

 

ボナメソ:ボナンザメソッド。Bonanzaが使った学習方法です。具体的にはプロ棋士の手を再現できるように評価関数を調整する手法です。

 

雑巾絞り:深い読みで与えられる評価値や指し手に対して、浅い読みの評価値を一致させるようにすることで、評価関数を学習する手法。凄く雑に言えば読みが深くて強いソフトで読みが浅いソフトを教育する超高速指導対局

 

elmo絞り:雑巾絞りの進化形。評価値と勝ち負けの合議で手の良し悪しを求め、それを教え込む超高速指導対局

 

KPPT:よく見る評価関数の形。玉と駒二つの並びに点数をつけて、それの和で盤面の良さを判定します

 

 

第28回世界コンピュータ将棋選手権の成り行き予想(4/1 ver)

エイプリルフールだし、WCSC28の決勝リーグへ行くソフト予想という全く当たらない類の予想をしても許されるだろうと言うことでダラダラ書いていきます。

「あのソフト無いよー」的なツッコミは多々あると思いますが、全ソフトについて書くと私の工数削減がマッハなので許してください

 

【今回の予想】

評価関数がある程度強いことを条件に、弱点の少ないソフトが勝ち上がりやすいと思います。これは技術共有により各ソフトのレート差が小さくなってきていることと、決着までの手数が長くなり小さい得を積み上げるような展開が増えてきており、定跡や読み落としに起因した事故からの復活が大会を重ねる毎に難しくなっていると感じているからです。

 

【決勝リーグに多分進むと思ってるソフト】

クジラちゃん

個人的には優勝候補。wcsc27でも計算資源の効率的な運用を以て、蒼天幻想ナイツ・オブ・タヌキなどを撃破していますが、今回は評価関数と定跡も独自調達するようです。個人的には一番隙がない相手だと思っています。

 

読み太

今回はクラスタ化をするそうです。独自実装の学習+depth 8/200億の教師ででwcsc27のelmoに75%勝つ程度の評価関数を用意出来ているので、やねうら王並み(もしかしたら以上?)の学習部を搭載していると考えられます。独自実装は格上を倒す可能性を上げると同時に格下に負ける可能性も増やすのですが、読み太がここぞという試合で負けたのを見たことがないので、今年も勝ち上がると思っています。

 

elmo

WCSC27では評価関数の公開とponanzaを撃破しての優勝のインパクトがありすぎて忘れられがちですが、開発者の棋力に頼らない定跡生成ルーチンを持ってる数少ない開発者の一人です。学習と定跡作りを同時にやろうとすると往々にして人や計算機などの資源が足りなくなるのですが、過去の実績を鑑みれば隙のない構築にしてくることでしょう。敢えて言うならsdt5でのelmoはとても運が悪かった(予選は後手ばかり引いてたし、本戦では読み太+まふ定跡に狙撃されるし、5位決定トーナメントでは永世後手のQhapaqに先手を譲るし)ので、それを引きずってないか心配です。

 

【以下、この辺のソフトが椅子をとり合うと予想】

Apery

depth 10のelmo絞り+aperyがあまり機能しないという極めて貴重な情報を提供してくれています。アピール文がメモ帳ですが、ここで紹介してるソフトの中では一番たくさん情報を出しているすらありえます。有志の強力を元に大量のデータを持っていること、これまでの成績的に学習部では高いパフォーマンスを出してくる可能性が高いことなどから、今回も注目株だと思います。探索部がsf9仕様になってたら言うことなしです。

 

たぬきCrazyShogi

 非線形関数を引っさげてくる勢。Ponanzaが示してきたようにディープラーニングはKPPTよりも高い精度で盤面を表現できることが知られていますが、計算効率でKPPTを上回るのにかねてより難がありました。たぬきチームは差分計算などの実装を頑張ることで高速化を、CrazyShogiは「んなこと知るか」と数の暴力で殴りかかることを考えているようです。

CrazyShogiはお値段100万円ちょいのTesla V100を8体連れてくるようです。たぬきチームは詳細は解りませんが、遂に所属企業を連れてきたので割とガチで来る可能性があります。こいつら頭おかしい

良くも悪くも線形計算でガラパゴス化したコム将棋界でディープラーニングベースの評価関数が簡単に計算効率で勝ち越してくるとは思いませんが、WCSCには計算資源制限はないし、並列化とニューラルネットの相性の良さを考えると脅威ではあります。

 

nozomiHoneyWaffleQhapaq

sdt5後の学習のメタゲームはelmo絞りから変化していません。インフラの改善が大きなウエイトを占める状態では開発者の経験に基づいた隙の無さと手の広さ(評価関数、探索部、定跡、高速化など伸びる要素に手を出すこと)が重要です。nozomiはミリオンファイターとしての長い経験が、HoneyWaffleは振り飛車というブルーオーシャンに相手を引き込むことで、こうしたゲームを上手く制することを助けると思っています。Qhapaqは正直隙だらけなのですがAperypaqより一応強い評価関数を作ってるので、外がサボってれば勝てます。

 

PALYorkiesHafeweizen

恐るべき新人。PALはコンピュータ囲碁界のAperyことAQの開発者のチーム、Yorkiesはsdt5でやねうら王の大幅な高速化に成功したチーム、Hafeweizenはsdt5の準優勝ソフトshotgunと13位の人造棋士18号の連合チームです。独自手法について深くを語ってはいませんが(PALは囲碁ベースの学習、Yorkieは並列化と高速化、Hefeweizenは未定らしい)飛び抜けたスキルを使って虎視眈々と上記ソフトの暗殺を狙ってくると思います。

 

monkey magic再び?】

wcsc27ではmonkey magicというソフトがfloodgateで謎の高レートを成し遂げていました(ちなみに正体はwcsc27優勝ソフトのelmoだった)が今年も唐突にヤバイソフトが出てくる可能性はゼロではありません。今のfloodgateの参加ソフトは評価関数やハードが明らかでないものが多く(最も、明らかにしてるソフトも自己申告ですが)レートの正確な推定は難しいと思っています。i9のaperypaqなどを有意に倒しているようなソフトは今の所いませんが、floodgateの旬は4月なので今後の動きに注目です。

注:といっても開発者はこの時期は最後の調整が忙しすぎてfloodgateを見てる暇は概ね無いのですが

 

【結論】

よくわからん

学習の最適化に纏わる考察

評価関数の学習をやっている人達における、バッチサイズや学習率に関する話は、
アラサー男子の健康トークのような立ち位置であると言えます。

私自身は、学習におけるパラメタ調整は落とし穴のようなものだと考えています。
微調整した所でそこまで強くはならないのですが、設定を誤ると学習を大失敗させる ポテンシャルはあるからです。
故に、どういうケースでどういう失敗をするのかを考えておくことは有意義と言えましょう。

【取り敢えず実験】
以下のコードを実行すると、バッチサイズ、学習率を変えながら1次元問題の最適化が出来ます。
勾配は -x + 乱数 なので、理想的にはx=0になってほしいところです

import random
import sys
import math

def getgrad(x,batchsize):
    grad = 0
    for i in range(batchsize):
        grad += -x + random.uniform(-1.0,1.0)
    return grad

def adagrad(initx, batchsize, epochsize, eta):
    x = initx
    g2 = 0                                                          
    save = 10 # 適宜変える
    for i in range(epochsize):
        g = getgrad(x,batchsize)
        g2 += g*g
        x += eta * g / math.sqrt(g2)
        if i % save == 0:
            print(x)
adagrad(float(sys.argv[1]),int(sys.argv[2]), int(sys.argv[3]), float(sys.argv[4]))

【バッチサイズを変えながら計算してみる】

データ数を1000万、batchsizeを1,100,1000に変えた結果が此方です。
横軸が食わせた教師の数、縦軸がxの値(0に収束するはず)です。
青:1000 赤:100 黄:1 です

f:id:qhapaq:20180311004024p:plain

基本的に収束した後の綺麗さはバッチサイズが大きいほど、
収束速度はバッチサイズが小さいほど早くなります。


【バッチサイズを大きくすることの数理的な意味】

雑に言えば、バッチサイズの平方根に比例してノイズに対する耐性がつきます。

というのも、各特徴量に対してホワイトノイズ(統計誤差)が乗ったものが勾配になると考えれば、
真値から特徴量がずれていた時に勾配が真値の方向を向くか否かは真の勾配とノイズの
SN比に依存しており、ノイズレベルはサンプル数の平方根に反比例するからです。

【将棋の学習への適用】

将棋では一度の学習でxx局面を使うという形でバッチサイズを決めていますが、
各々の特徴量について、バッチ毎に何回出てくるかは異なります。

故に特定の特徴量についてバッチサイズや学習率を良くした所で、その他の特徴量に
ついても設定が最適化されているかといえば、それは結構怪しいです。

一番避けたいのは出現回数が少ない特徴量が変な値を持つことで、マイナーな局面について
大幅な読み誤りをしてしまうことです。それらを避けるには

・出現回数の少ない特徴量は更新させない or 学習率を下げる(河童絞りでよく使う)
・学習速度を犠牲にバッチサイズを大きくしておく(雑巾絞りの追加学習でよく使う)

が有効ですが、最強の解決策は

・教師データの数を課金して増やす

ことです。しかし、私自身は課金してデータを増やすのはあまりよい戦略だとは思っていません。
というのも、教師データの質に問題があれば数をどんなに増やしても強くはならないからです。

【私が考える学習パラメタ弄り論】

学習に失敗した際に、何より先に知るべきなのは教師データの質に問題があるのか量に問題があるかです。
基本的にはバッチサイズを大きくしたり河童絞りのような手を使って、変な学習をさせないことを重視して(必要ならReMUとかを使って)
時間をかけて勝率を測定してみるのが良いと思ってます。