千田先生の定跡への機械的回答

定跡も公開でしたので,公開私信モードです。

遅くなってすみません。

以下の計算自体は先週末に終わっておりました。(それでも約3日)

うちの定跡との照らし合わせがまだですが職務等で少々時間かかりそうなので,機械的な部分だけ先行します。

 

具体的には以下の2つのファイルです。

行った行為は千田先生の定跡ファイル(5月15日付)をBookConvのR8でやねうら王形式に変換。

その後,各局面と定跡の指し手局面の評価値を比較し,評価値が300以上下がった局面および500以上下がった局面を自動的に抜き出したものになります。思った以上にゴミがある風に感じます。(私が定跡を管理するなら自動削除するレベルという意味です)

ファイルの中身はテキストファイルで1行に1局面のデータがあり,sfen文字に続き,指し手,指す前の評価値,指した後の評価値となります。手番視点の評価値ですのでもちろん符号が異なります。

BookConvの不具合か手数に不自然な数字が入ってるケースがありますが,今回は特に気にしていません。

使用したのは評価関数Qhapaq_wcsc28,実行ファイルYaneuraOu 2018 Otafuku KPPT 4.82 64AVX2,探索深さノード指定1000000です。ノード数指定の理由は所要時間の見積りがやりやすい点と各局面の所要時間がほぼ等しくなる点です。

 

https://1drv.ms/t/s!AqprfPHDsDdxh6pmwyLuX0T5lq_FXA

https://1drv.ms/t/s!AqprfPHDsDdxh6pl9yPG6AwLQtVggg

 

コメント等頂ければ幸いです。

序盤限定に絞ってもう少し探索ノード数を増やせばよかったとかは自覚してます。

長時間戦でのAperyについて

bleu48.hatenablog.com

 

前回の続きですが,あんまり長いので別にします。

i9をフルに使って長時間戦(持ち時間30分)を行ってましたが,なんと再起動されており以下の数で中断しておりました。感想戦ばかりしていられないのでこの辺で切らせてください。(以下ので5日間かかるんです)

 

勝敗 Boo13 52 Apery_WCSC28 41 レート差 31
先手勝 Boo13 : 29 Apery_WCSC28 : 22
後手勝 Boo13 : 23 Apery_WCSC28 : 16
千日手 9 持将棋 19 平均手数 184 対局数 121

 

まず,平均手数が長いw。そして時間が短いのも両方とも引き分けが多い。

勝率は思ったほど変わりませんでした。66%から56%って具合ですね。

これだけじゃどちらとも断定しづらいですね。

 

やねうら王長時間戦には枝狩り過ぎ説は難しい課題なのでとりあえずは保留とします。

まぐれ度計測の話

選手権優勝の件,やはり出来過ぎ感があります。

ネタっぽく世界チャンピオンですと言ってもなんか笑い以外のモノが混じる感じです。

 

昨年と同じように順番に検証していきたいと思います。

今回の我々のチームはエンジョイ勢なので何より楽しめるかどうかに重点が置かれています。私の部分においては例えばMulti Ponderを見てもらいたいなと思っており,昨年の懇親会など面白いことをアピールし続け,今大会はクジラちゃんとの合体を打診したこともあります(フラれましたけど)。先行読み部を上手に可視化すると面白いんじゃないかと思ってますが,何分そういうのは苦手で止まったままです(この辺はドワンゴさんに話してあります)。Tamaさん部はもちろん人造棋士18号の評価関数合成ツールを皆に使ってもらいたいとのことです。今大会の懇親会においてはコブラさんと並んで,評価関数「何してるか分からん」群に入っていたようです。

もちろん,ある程度勝たないと面白みは伝わらない(気にもされない)のでネタの0秒指しでも勝たないとダメとの認識でした。0秒指しはLANとWANの両方の通信遅延のチェックも兼用してるのでちょっと賢いメソッドです。

 

github.com

 

また,ふたりの共通の敵はたぬきとHoneyWaffleなので(理由はSDT5参照)二次予選のたぬき戦と決勝のHoneyWaffle戦が終わった段階で軽い祝勝会を行いました。ミッションコンプリートです。

残念ながら,大将軍には土を付けられたままになっておりますので今後のターゲットは「大将軍」となります。PALとコブラ相手には2勝1敗なので勝ち越しカウントです。

 

では,本題の事後検証です。

とりあえず,公表の早かったクジラちゃんとAperyで測定を行いました。うちで選手権直前で調整に用いた4コアのPCで30分切れ負けとしてあります。(一手20秒固定より時間の無駄が少ないかと思ってます)

クジラちゃんとは決勝戦で当たったのですが,棒銀に上がったところで切れ負けされてしまったので勝負は勝ちですが,戦った気がしません。要検証の相手です。

Aperyとは二次予選で得意の横歩を取ったにも関わらず引き分けまで粘られてしまいましたのでこれも要検証の相手のひとりです。特にそれほど改良してきていないとの平岡氏の言葉が真実なら,高パフォーマンス戦においては枝狩り過剰による読み抜けの方が危険とのことを検証する機会になります。

 

6700HQ,4コア8スレ,30分切れ負け,ResignValue 3000、hash 4096,定跡なし

対局数300 先手勝ち173(61%) 後手勝ち109(38%) 引き分け18

Boo13
勝ち149(52%) 先手勝ち91(64%) 後手勝ち58(41%)

GodwhaleChild-5.0.5 KPPT 4.80 64AVX2 TOURNAMENT
勝ち133(47%) 先手勝ち82(58%) 後手勝ち51(35%)

 
6700HQ,4コア8スレ,30分切れ負け,hash 4096,定跡入り

対局数300 先手勝ち155(58%) 後手勝ち111(41%) 引き分け34

shot_gun 0.32 ←(定跡入りPonder無し仕様のやつ)
勝ち176(66%) 先手勝ち100(74%) 後手勝ち76(58%)

Apery_WCSC28
勝ち90(33%) 先手勝ち55(41%) 後手勝ち35(25%)

 

とりあえず,両方ともPonder無しでも思ったほど分が悪くないようです。

クジラちゃん相手に後手だと危ない感じですか。

対Aperyは長時間戦を用意していたのですが先週の私がボケてたのか設定ミスのためこれから再計測します。また,公開されたのは決勝バージョンのようで,一次予選や二次予選でうちが使った棋譜が丸ごと取り込まれていてAperyの名の通り平岡さんの柔軟かつ迅速な対応に驚かされました。(決勝でAperyがうちの横歩定跡をなぞったらしいです。)

 

次は河童と河童巻きですが,河童の方がマシンが落ちてしまったため勝率が出ておりません。棋譜が残っているので後ほど(スクリプトで)集計します。手動嫌です。しました。(uuunuuun様ありがとうございます。)

定跡アリもやってみたいところです。

 

Ryzen7 1800X,15スレ、一手10秒、ResignValue 3000、hash 4096,定跡なし

対局数201 先手勝ち108(55%) 後手勝ち86(44%) 引き分け7

Boo13
勝ち70(36%) 先手勝ち41(41%) 後手勝ち29(30%)

QQR
勝ち124(63%) 先手勝ち67(69%) 後手勝ち57(58%)

 

6700HQ,4コア8スレ,30分切れ負け,ResignValue 3000、hash 4096,定跡なし

勝敗 Boo13 58 Qhapaq_wcsc28 88 レート差 62
先手勝 Boo13 : 32 Qhapaq_wcsc28 : 48
後手勝 Boo13 : 26 Qhapaq_wcsc28 : 40
千日手 15 持将棋 7 平均手数 140 対局数 168

(300戦分なかったのは途中落ちたんでしょうか遅延書き込みでしょうか。)

 

やはりQhapaqもQQR強いですね。今期のレーティング覇者でしょうか。(300戦予定を途中で切ったのは仕事のためです。御容赦下さい。)

 

最後にelmoです。直接要望がありましたので一手10秒固定にしました。こちらもSDTでは当たったら負けを覚悟してた昨年チャンピオンですので強敵認識です。

 
4コア、一手10秒、ResignValue 3000、hash 4096,定跡なし

対局数300 先手勝ち114(41%) 後手勝ち162(58%) 引き分け24

Boo13
勝ち160(57%) 先手勝ち67(49%) 後手勝ち93(66%)

elmo_wcsc28
勝ち116(42%) 先手勝ち47(33%) 後手勝ち69(50%)

 

後手勝ちが多いですね。何なのでしょうか。ちょっと精査しなくてはなりません。相性問題意外とややこしいですね。

  

今のところ,とりあえず以上です。主に評価関数部分のみですが,優勝がまぐれでもない結果にはなってるかと思います。Mutli Ponderクラスタについては来月の第40回ゲーム情報学研究会で一部発表予定です。その他追加計測も出していきますが,そこそこ長くなったので追記にするか新規に立てるかは未定です。

現在計測対象の評価関数は棋人ブゥ13番だけですが,サブエース12番や定跡部生成で頑張った7番9番などがそこそこ面白い動きと勝率を誇ります。魔改造技巧も一軍登板へボチボチ詰めていきたいものです。

また,巷では既にYaneuraOuにNNUEが取り込まれるなど多数の改造が加えられているとの話もありますので今後もコンピュータ将棋業界はどんどん進化していきそうです。 

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

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

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

 

アピール文の話

書き方が雑というか予定ばっかりで確定的な情報が皆無であったこと。実際に確定事項がほんとうにありませんでした。評価関数を人造棋士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と言う人力飛行機チームを彷彿とするエピソードになります。おっさんの武勇伝に興味ある人は酒の席にでも聞いて下さい。

技巧型の評価関数

github.com

 

前回,ちょっとだけ強くなったのが出来たってやつを公開しとく。

選手権本戦で使うかどうかは未定。

割とモダンな差し回しをするのが分かると思う。学習データの差かな。

 

探索部は未検証過ぎるので保留。

選手権後に考えることにする。

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

前回の追記でもいいんだけど,前回も長いので新規に立ててみた

bleu48.hatenablog.com

 

各チームのアピール文書に対して運営から追記の依頼があったようだ。(うちにも)

更新情報や漏れ聞こえる噂などを加えて更に状況分析してみる。

 

  

前回,主観的に予選やばいって話がメインになってしまいました。事実,前回記事で技巧2がSDT5の予選落ちラインと書きました。今回の予選落ちラインは昨年チャンピオンelmoより上になりそうです。

というのは,ソフト面でelmo絞りのノウハウはオープンになってしまったので弱くなっても独自性を貫くというチームやスキルが無いチーム以外はelmo@wcsc27より強くなることは確実です。例えばシード枠でクラウドを使う方々8チームは皆確実にelmo@wcsc27より強いと考えるべきでしょう。

また,クラウドの性能です。昨年よりアマゾンやグーグルのクラウドのハイエンド性能はインテル社のおかげもあり,二倍以上のコア数+クロック上昇になっています。ということで昨年のelmo@wcsc27がそのまま出ても予選通過できないと思われます。

ここでwcsc27とつけているのはelmo@sdt5は当然wcsc27より強いわけですし,sdt5の段階でも既に8チームほどはelmo@wcsc27よりソフトウェア面で強かったと考えています。(うちは相性問題があるので除いておきます)

 

次に一次予選組です。

昨年度は一次予選組が決勝に半数残るなど,一次予選組の活躍が目立ちました。今年も同様な展開を期待したいのですが実績等が評価しづらく全く先が読めません。

しかしながら,sdt5で優勝したぽんぽこはもちろん上位陣のノウハウは多く共有されておりこれらを参考に参戦する新参チームがそれなりの準備をしていると考えるのは当然です。うちを含めてガチ系のスペックでエントリーしている新参は一次予選の動向から要注意です。

 

技術的な話ですが,ここは完全に予想・妄想になります。

1.探索部の技術は結構煮詰まって来ている。

頑張ればレートを10とか20とかの刻みで上げられますが,これは一発勝負の場合一桁%の勝率程度の話になります。中長期でみると確実に進む進歩ですがこれだけで優勝ということはありえないだろうと考えます。具体的には現行の探索アルゴリズムを一部改善する程度であろうと思われます。この辺はオープンソースになれば後検証されることになります。

2.評価関数の革新。

現行トップはぽんぽこやelmo,apery,qhapaqなどの三駒関係の評価関数です。Bonanza登場以来10年以上使われていた形ですが,これを覆す新しいものが出た場合圧倒的な勝利につながる可能性があります。たぬきさんとCrazy Shogiさんは新しいものをつかうと明言されております。また,強豪と知られる習甦も独自の評価を試みるため注目です。

3.高速化

たぬき野田さん,CGPの大熊さん,Qhapaq伊藤さん,Yorkies石田さんなどは高速化が得意です。同じハードウェアで競争して頂きたいところですが,何でもアリでやるとどういう技を使うのかも見物でしょう。AVX512とか使うんですかね。

4.クラスタ技術

クジラちゃんはもちろんですが,多くのチームがクラスタ構成で挑みます。有効利用されれば強いのでしょうが昨年のelmoのように単体でも勝つ可能性がないわけではありません。どのようになるか楽しみです。具体的には読み太の塚本さんが初クラスタ構成です。うさぴょんの池さん,Yorkies石田さんも初クラスタでしょうか。

うちは電王トーナメントの1PCのときからクラスタです。ある意味,真の姿になる感じでしょうか。

5.棋力

コンピュータが指すのに棋力が関係あるのかどうかというとアリます。動作している記録をさっと眺めただけで異常に気付いたり,微妙な良しあしの最終判断を下すときに間違いがないのは棋力の有無だと思います。電王トーナメントでも予選落ちすると裏で将棋指してるくらいの参加者なので結構強い人が多いようです。元奨励会員やアマチュア強豪の作るソフトの動向と考えてみると面白い視点になるのではないでしょうか。

6.看板

棋力の看板のひとつでしょうか。elmoは昨年チャンピオン,Aperyも元チャンピオン等のタイトルという看板があります。たぬきさんは電王ですね。柿木将棋さん,YSSさんあたりは古豪といったところです。Qhapaqさんはそろそろタイトルが欲しいですね。

他にもCrazy ShogiさんやPALの山口さんは他競技での実績があり新参では最有力と言っていいでしょう。何故参加されるのか聞いてみたいくらいです。

他にも近頃増えたのが所属大学や法人名を表に出してくる行為ですね。これもひとつの看板と考えます。企業宣伝になるのでしょうし,法人としての資金援助などがチームを支えるものと考えます。大金を投じて負けると大変ですね。

最後になりましたが,Barrel houseは岡山駅東口を出て駅前商店街を抜けたところにあるビールバーです。火曜定休です。

 

将棋とチェスの違い(Stockfishを参考に探索部を強化する際の注意点)

以前も少し書いたけど,将棋は終始40枚の駒を使うがチェスは駒が減る。

また,将棋は歩や桂馬などの自由度の低い駒が多い上,長距離移動可能な駒が少ない。チェスにおいてはルーク2枚,ビショップ2枚,クイーンと大きく動ける駒が多い。

これにより探索難易度のピークがかなり異なる。

 

例えば駒を取り合う行為は将棋では両方の駒台に駒が乗ることになるので,攻守共に自由度が増す。探索の枝が増えるということだ。チェスでは序盤クイーンなどの行先を止めているポーンなどでない限り駒が減るために自由度は下がる。選択枝が減る。

 

駒が減ったチェスは非常に単純なゲームに成り下がり多く引き分けとなるが,将棋では複数種の駒が互いの駒台に乗った状態が最も探索速度の落ちる難局面となる。あまりに多く持ち駒がある場合は長手数の即詰みがあったりして大変だ。

 

効きである。どちらも駒をひとつずつ動かすゲームであるため,多くの駒は動かない状態で活躍する。つまり効きの効果である。上記の通り将棋では自由度の低い駒が多いがチェスでは間に駒が無い限り長距離の効きがある駒が多い。この差は大きいが更に持ち駒の影響が出る。将棋では長距離の効きに対して駒を打って対応することが可能であるため長距離の効きを比較的高頻度で遮断可能となる。つまり,持ち駒が成否を決する。逆に考えると歩がない時の香車,飛車は普段にも増して恐ろしい。

 

次にPromotion(将棋では成り)である。

チェスではポーンのみが成れる。そしてほぼ最強のクイーンとなるのが通例だ。将棋では王将,金将以外の駒は全て成れる。

 

問題はそれぞれの価値である。チェスにおいてポーンが成るのは最終列においてであるが,将棋と異なり打ち駒がないため初期配置のポーンが最終列まで進む必要がある。実に大変である。そしてこの行為は一局に一度も起こらない程度の事象であり,そして中盤以降でクイーンが一枚増えるということは多く勝負を決する要因となる。チェスにおけるPromotion(成り)とはそういう稀有なものである。

比べて,将棋において成り駒が無い将棋の方が珍しいであろう。敵陣3段で成りが可能なのはもちろん,敵陣に駒を打ち込むことが可能なため高頻度で成りが行われる。そしてコンピュータ将棋で計算される駒の価値が上がる行為であることは違いないが,銀が成銀になる際などはあまり価値があがる行為ではないとされておりその行為の価値は一定ではない。

これでStockfishにおけるPromotionをそのまま将棋に取り込んでは不適当なことが理解されると思う。

 

で,その辺弄ってみた落ちを引用して雑記を終える。