Qhapaqの定跡とtimemanを公開します

WCSC参加、ご視聴の皆様、お疲れ様でした。

Qhapaqは大会を10位で終えました。無課金でもできる学習理論の構築を目指し、色々頑張ったのですが、残念ながら負けてしまいました。応援してくださった皆様には心よりお礼申し上げます。

さて、私の大会は終わりましたが、まだやることはあります。そう、やねチルとして同じ釜の飯を食う仲間達を応援する必要があるのです。

というわけで、今からできる微調整としてQhapaqの定跡とtimemanを公開します。

# でも実際使えうるのは定跡だけだと思う

 

河童全力定跡 (Qhapaq_z.db)

timeman.cpp

 

・森久保量子ガシャを駆使した河童全力定跡

Qhapaqの定跡はメタ対象(まふ定跡、やねうら定跡、定跡off)とQhapaqを戦わせ、評価値がそれほど悪くなく、ある程度進めば評価値が高くなるもの(60手目以内に評価値がある一定値以上になるもの)を選んでいます。相手を悪い手が出やすい局面に誘導する。相手の悪い手を咎めるのが主な目的であるため、相手の持ち時間は短め(5-10秒。定跡を作ってる方は30秒-1分)としています。なお、Qhapaqが悪手を指しているが、相手も悪手を指していたため勝ってしまったという自滅を防ぐために、短い消費時間側が勝った局面はストックし、その局面から短い持ち時間で自己対局をさせて勝率を測定し、勝率が芳しくない場合は削除するという調整も行っています。

広い序盤の変化の枝をネガティブかつ効率的に探索するという意味で森久保量子ガシャと名付けました。

 

・timemanはoptimum timeが一定になるように調整すべし

理論の詳細はコンピュータ将棋流の時間攻めと電王戦の攻防 に任せますが、stockfishの時間制御はbestmoveの変化する確率の時間微分を敷居値にして行われます。

実際は局面の難しさやponderの当り具合によって持ち時間は動的に変化するため、手を読み始める前に「恐らくこのぐらいの時間を使っていい」という仮想消費時間(optimum time) を決め、

 消費時間 ☓ bestmoveの変化確率 > optimum time ☓ 定数

となった時に読みを打ち切るようにしています。やねうら王では持ち時間を80で割った値をoptimum timeに用いていますが、この実装は序盤から終盤になるにつれ、optimum timeが減るため良くありません(終盤になるほど局面の複雑さが落ちるチェスの影響だ多分)。理論的にはoptimum timeは対局開始から終局まで一定であるべきです(机上の空論ではありますが、0−30手目、30手目-60手目、60手目-90手目の持ち時間を倍にして勝率を測定すると、どれも似たようなレート上昇になるのであながち間違いではないと思います)。

Qhapapのtimemanはoptimum timeをできるだけ一定に保つように実装しています。実際、WCSCの棋譜でも、ある程度均等に時間を消費できていると思います。ついでに、浮かむ瀬がやっていた序盤の時間節約ルーチンも実装(最初20手は長くてもoptimumの2倍程度しか時間を使わないようにする)しています。

 

・timemanはハードや評価関数に依存して地味に面倒

 消費時間 ☓ bestmoveの変化確率 > optimum time ☓ 定数

という式をじっと眺めると、stockfishの実装だと、ハードが強くなればなるほど消費時間が短くなることが解ります。また評価関数の質を高めるほど、変な勘違いが減る分、消費時間が減ることが期待されます。elmoは殆どやねうら王の実装そのままだと思うのですが、Qhapaqよりも消費時間が短めでしたし......

Qhapaqのtimemanはtimemanに使うノートPC用にチューニングしたので、恐らく直接使うと時間が余り気味になると思います。

 

・定跡とtimemanのご利益

一応、定跡+timemanを搭載したやねうら王 vs まふ定跡/真やね定跡を搭載した魔女、やねうら王の対局 in WCSC型の持ち時間では、河童側が7割弱勝てているようでした(ただし、50試合ぐらいしか出来ていませんが)

 

最近は自己対局の勝率が探索部以外も持ち時間依存する説が囁かれており、私の行ったテストに意味があるかは謎ですが...

 

まあ、そのままコピーして使えるかは激しく疑問ですが、盟友たちの最後の抵抗の小さな支えになればと思います。

アピール文から読み解くWCSC27の見どころ(大合神クジラちゃん編)

久々のシリーズ物として、WCSC27に参加しているソフトのアピール文を、私、Qhapaqの開発者が読解/解説していきたいと思います。本シリーズを通じて、皆様がコンピュータ将棋を好きになってくれれば、そして、人工知能の織りなす科学を楽しんでいただければ幸いです。

 

前回記事:アピール文から読み解くWCSC27の見どころ(うさぴょん2’TURBO編) - qhapaq’s diary

 

注:以下の考察はQhapaq開発者の予想です。開発者に確認をとっているわけではありません。あくまで参考として楽しんでいただけると幸いです。

 

・オープンイノベーションの先駆者 大合神クジラちゃん

大合神クジラちゃんのアピール文:

http://www2.computer-shogi.org/wcsc27/appeal/GodWhale/appeal.pdf

aperyの公開以降のコンピュータ将棋界において、第三勢力としてのオープンイノベーション勢を無視することはできません。最新のstockfishをaperyシリーズに組み込んだsilent majorityや、既存定跡を狙撃するまふ定跡、mizar氏による定跡データベースの拡張などが一例です。

その点に於いてクジラちゃんはニコニコチャンネルを駆使したコミュニティー作りと、共同開発を続けており、オープンイノベーション勢の先駆けとも言える存在です。

以下、クジラちゃんが本大会をどう盛り上げてくれるのか予想してみたいと思います。

 

・合議制の難しさ

クジラちゃんの探索部は視聴者の数だけ火力が出るわけですが、アピール文によれば与えられた局面から1手分岐した状態で割り振る仕様だそうです。読むべき局面から1手進んだ状態を読ませ、それらを統合して指し手を決めることで、読みの深さを実質1手深くすることができます。

クジラちゃんの視聴者数的には、2手以上深く読ませることも可能だとは思いますが、手の割り振りが面倒(将棋では合法手の数は局面に応じて激変する)なのと、ユーザとの接続が切れた時、他に当該局面を読んでいるユーザがいないと読み全体が死んでしまう危険があるので、これは茨の道であると言えます。

クジラちゃん式の合議将棋には幾つかの興味深い問題があります。例えば、貧弱なPC2台と屈強なPC1台で局面を読ませた際に、貧弱PC2つの意見と屈強PCの意見が合わなかった時、何方の意見を採用するべきでしょうか。

他にも、幾らたくさんユーザがいても、皆が全く同じ局面を読んでしまえば合議制は意味をなしません。それを避けるには評価関数に乱数を加えるなど、読み筋に多様性を与える必要があります。スペック、数ともに不確定な状態でどのように手の分散具合を制御すればいいでしょうか。

 

・スペックはXeon以上、apery未満と予想

合議制の魅力を諦める(ユーザPCのスペックを測定し、最も強いPCの意見だけを採用する)なら、ユーザが使ってくるPCの中で最も強いPC達+depth1程度の読みができることになります。ユーザのPCのスペックや、クジラちゃんがどういった合議制をしてくるかは謎ですが、12スレッド級のPCを各々の手に割り振るぐらいはできると予想しています。

12スレッド+depth1なら、凡そ、大将軍やNDFのハードと同じぐらいの読みができるのではと思います。逆に巨大なハードを複数台連れてくるようなaperyのような相手には視聴者の数でNPSを稼ぐだけでは探索速度で勝つのは難しいと思います。

 

・Qhapaq的総評

クジラちゃんの立ち回りはハードを大量にこしらえたsilent majorityに近いと予想しています。クジラちゃんがどれだけ勝てるかは加速するオープンイノベーションの強さ、同時に、数の力に抗おうとする開発者個々人の強さをみる良い試金石になると思います。

 

余談ですが、QhapaqはクジラちゃんにWCSC26で2回戦い2回負けています。生放送でひたすら「艦これみたいに評価値に応じてマスコットの服が脱げるほうが面白い」と言いまくった記憶がありますが、果たして実装されたでしょうか。楽しみです。

アピール文から読み解くWCSC27の見どころ(うさぴょん2’TURBO編)

久々のシリーズ物として、WCSC27に参加しているソフトのアピール文を、私、Qhapaqの開発者が読解/解説していきたいと思います。本シリーズを通じて、皆様がコンピュータ将棋を好きになってくれれば、そして、人工知能の織りなす科学を楽しんでいただければ幸いです。

 

前回記事:アピール文から読み解くWCSC27の見どころ(読み太編) - qhapaq’s diary

 

注:以下の考察はQhapaq開発者の予想です。開発者に確認をとっているわけではありません。あくまで参考として楽しんでいただけると幸いです。

 

・伝統と独自性を両立するソフト うさぴょん

うさぴょんのアピール文:

http://www2.computer-shogi.org/wcsc27/appeal/Usapyon2'TURBO/wcsc27-usapyon.txt

うさぴょんシリーズはコンピュータ将棋ソフトの中でも古い歴史を持つソフトです。開発者の池さんはSNS書籍などでコンピュータ将棋に関する解説を行っており、開発者の多くは池さんのお世話になったことがあると言えます(かくいう私も、WCSC初参加の時は池さん(となのはさん)には大変お世話になりました)。

WCSC26では決勝リーグ進出、sdt4では決勝トーナメント進出と強力なソフトの一つでありますが、毎回挑戦的な試みをしてくれるソフトでもあります。今回は巷で話題になったryzenを使って来るそうです。

以下、うさぴょんが今季ピョンピョンできるのか、検証してみたいと思います。

 

Ryzenって結局強いの?

RyzenとはAMDから販売されたCPUの名称であり(Ryzen - Wikipedia)、早い安いを強く押し出した作品となっています。早くて安いCPUであれば低予算で強い将棋ソフトが作れると言いたくなりますが、現実はそう甘くはありません。

Ryzenベンチマークについてはいろいろな記事がありますが、個人的には(RyzenとCore i7 7700Kのベンチマーク比較 ゲーム用ならRyzen、作業用なら7700K | ITハンドブック)がよくまとまっていると思います。ざっくりいうと、動画処理などの解りやすい並列化以外の並列化の挙動が怪しい(効率的に並列化できてない)可能性が指摘されています。

LazySMPにおいて、Ryzenの並列化周りの弱さが響くかは定かではありませんが、開発者達による解析によると、いくつかの命令に地雷が含まれている気がしてなりません。池さんにはぜひ、うさぴょんのNPSがRyzen vs corei7でどうなったか教えてもらいたいところです。

 

・まさかの振り飛車

うさぴょんのアピールで目を引くのが振り飛車を指せる定跡を作るという点です。振り飛車藤井システムが綺麗にハマれば居飛車に対抗できることは示唆されてはいますが、コンピュータに特定の戦型を振り飛車で狙わせることは容易ではなく、また、少しでも定跡からずれると弱く(振り飛車の対居飛車勝率は4割程度)なるのでいろいろ地雷が多いと思います。

 

・Qhapaq的総評

ボナメソ+rootstrapで評価関数をゼロから作りなおそうとするなど、長年挑戦的な試みを続けているうさぴょんは私が最も尊敬しているソフトの一つです。sdt4ではうさぴょんの振り飛車居飛車穴熊でQhapaqが負けるという悲劇を味わったので、今度こそ居飛車の強さを魅せつけてやりたいところです。

アピール文から読み解くWCSC27の見どころ(読み太編)

久々のシリーズ物として、WCSC27に参加しているソフトのアピール文を、私、Qhapaqの開発者が読解/解説していきたいと思います。本シリーズを通じて、皆様がコンピュータ将棋を好きになってくれれば、そして、人工知能の織りなす科学を楽しんでいただければ幸いです。

 

前回記事:

アピール文から読み解くWCSC27の見どころ(NineDayFever編) - qhapaq’s diary

 

 注:以下の考察はQhapaq開発者の予想です。開発者に確認をとっているわけではありません。あくまで参考として楽しんでいただけると幸いです。

 

・気前の良いオールラウンダー 読み太

読み太のアピール文:

http://www2.computer-shogi.org/wcsc27/appeal/Yomita/appeal.txt

読み太はWCSC26組(sdt4の決勝トーナメント生存チームでいえば、読み太、たこっと、Qhapaq、たぬきのもり)の中でも頭ひとつ強いソフトであり、所謂チルドレン世代の代表格とも言えるソフトです。読み太の強さの秘訣は諸説ありますが、私自身は、実装能力、機械学習などの数理に対する知識、人間的な将棋への理解のバランスの良さにあると思っています。

また、読み太はWCSC26の上位8チームの中では最も気前よくアピール文で技術を紹介してくれている(当社比)チームでもあります。

以下、雪辱を果たすべく読み太がどんな準備をしてきているか予想してみましょう。

 

・評価関数は安定路線?

読み太は雑巾の作り方として初手暫くをランダムで指させ、それ以降はdepth7で戦わせたものを使っているとしています。ランダムで指させる手数や雑巾生成時のdepthは地味な調整が延々と続く苦行であり、この手間を如何に減らす(数理的な予想を駆使して候補を削る、自動化して手間を減らすetc)かが勝負と言っても過言ではないのですが、読み太は割と気前よく教えてくれています。

# Qhapaqのバイナリで試した時は強くならなかったですが。既に最適化しすぎてたのかも解らぬ

また、雑巾生成時にはあまり枝を落とし過ぎないことがコツなのではないかという示唆を与えてくれています。たぬきチームなども似たような知見を得ているようです(参考)。

 

・進行度をベースとした探索部

進行度によって枝の落とし方を変えることに成功しているようです(R20程度向上)。終盤になるほど手を広く読まなければならない(詰みとかが絡んでくるので)という発想は実はQhapaqも過去に導入を検討したことがあります。Qhapaqの研究では進行度を予想することを諦め、手数や評価値で枝を切り分けた結果、あまり強くならなかったのですが、読み太は駒の並びに対して進行度の点数を割り振るなどをすることでより高精度化させたのだろうと予想しています。

 

・読み太沼は健在か?

読み太は開発者が独自に手動で入れた定跡が含まれており、横歩や角換わり系の将棋だとスゴク長い定跡に捕まる可能性があります。QhapaqはWCSC26でこれをモロに喰らってしまい(30手目ぐらいまで延々と定跡で1秒指しされた)、ほぼ互角で終盤を迎えたものの最後は持ち時間の差で押し切られてしまいました。

sdt4を経て真やねうら王型の定跡(初手38銀などの力戦型の定跡)が登場したため、読み太のような狭くて深い手動定跡がうまく機能する機会は減りましたが、真やね型の定跡外しは定跡off指しに弱く、定跡off指しは手動定跡に引っかかりやすいという三すくみの関係は健在であるため、対策を怠ってひどい目に合わされるソフトがひとつは出てくるだろうと思っています。

 

・Qhapaq的総評

WCSC26の雪辱を果たしたいところです。あと、読み太の中の人は対局中に手の意味を開設してくれたりするので戦っていて楽しいですので、WCSC27でも当たりたいところです。

アピール文から読み解くWCSC27の見どころ(NineDayFever編)

久々のシリーズ物として、WCSC27に参加しているソフトのアピール文を、私、Qhapaqの開発者が読解/解説していきたいと思います。本シリーズを通じて、皆様がコンピュータ将棋を好きになってくれれば、そして、人工知能の織りなす科学を楽しんでいただければ幸いです。

 

前回記事:アピール文から読み解くWCSC27の見どころ(Apery編、書きかけ) - qhapaq’s diary

 

 注:以下の考察はQhapaq開発者の予想です。開発者に確認をとっているわけではありません。あくまで参考として楽しんでいただけると幸いです。

 

・極北から来た侵略者:NineDayFever

NineDayFeverのアピール文:

http://www2.computer-shogi.org/wcsc27/appeal/NineDayFever/NDF-2017.txt

評価関数、KPPTの進化を語る上でNineDayFeverを抜きにすることはできません。

深い読みの評価値を浅い読みに近づけるようにする学習指針や、KPPに手番の概念を入れるといった技術発展の切欠を作ったソフトであり、NDFの解説は、WCSCのアピール文史上、最も引用されたものの一つです。

以下、NineDayFeverが今回齎すであろう"侵略"を読み解いていきたいと思います。

 

・古参らしさと新しさの共存

他ソフトと比べて特徴的と言えるのが「三駒関係の各変数を分解して共通する要素を抽出」していること「勝率をベースに定跡を選択していること」でしょう。

三駒の変数の分解は、恐らくは、駒の平行移動の考慮(角の頭に歩を打たれるような局面は玉の位置や角の位置によらず辛かろうetc)であると思われます。これは大樹の枝時代のaperyには実装されていましたが、sdt4以降の雑巾絞り時代には使われる機会が減った技術です。

というのも、ボナメソのように棋譜が少ない場合は、こうした工夫で教師データを増やすことが有意義である一方、雑巾絞りのように大量に教師を作れる学習法では、こうした水増しは必須ではないからです。むしろ、不必要な平行移動を加えることで学習の精度が落ちる危険すらあります。

NDFがこうした技術を使うのであれば、新しい工夫をしている可能性が高いです。私個人は教師データの読みの深さを高めている(高精度な少数データで学習をさせている)か、平行移動以外の抽出方法を開発しているのではないかと考えています。

定跡に勝率を用いるのは、拙作の量子ガシャでも用いられているメソッドです。自己対戦の勝率を基準に定跡を作ると、実は変な変化に引っかかってしまうのですが、NDFはそれを回避できているでしょうか...(それを検証出来るだけ数戦えないのですが orz)

 

・Qhapaq的総評

NDFはこれまでも様々な技術を生み出してきた先駆者であるため、いきなりレートが急上昇したとしても驚きではありません。アピール文にはsdt4前後で認知された技術を導入する以外のことはあまり書いていませんので、目新しい変化がなければsdt4勢が有利な気もしますが...

WCSC26では当たることができず、開発者ともほとんど面識がないので、本大会でいろいろ教えてもらいたいところです。

アピール文から読み解くWCSC27の見どころ(Apery編、書きかけ)

久々のシリーズ物として、WCSC27に参加しているソフトのアピール文を、私、Qhapaqの開発者が読解/解説していきたいと思います。本シリーズを通じて、皆様がコンピュータ将棋を好きになってくれれば、そして、人工知能の織りなす科学を楽しんでいただければ幸いです。

前回記事:アピール文から読み解くWCSC27の見どころ(大将軍編) - qhapaq’s diary

 

 注:以下の考察はQhapaq開発者の予想です。開発者に確認をとっているわけではありません。あくまで参考として楽しんでいただけると幸いです。

 

・コンピュータ将棋界の正統派ヒーロー Apery

Aperyのアピール文:http://www2.computer-shogi.org/wcsc27/appeal/Apery/appeal_wcsc27.html

電王トーナメントシーズンがもし少年漫画だったら、間違いなくaperyが主人公でしょう。WCSCでの優勝、bonanza以来の強豪ソフトのオープンソース化、チャリティーオークションによる命名権販売、ボランティアを募っての教師データ生成と、多くの歴史を作ってきたソフトでもあります。

WCSCにおけるaperyの現状は「半年前の成果はライブラリとして公開しているので、今の所アドバンテージがゼロですので、今から何かしら改良して勝とうと思います。(既に3月31日)」(原文ママ)。ライブラリの提供元だからこそ言える(ライブラリ勢がこれ言ったらリジェクトされそう)ことですね。

以下、電王トーナメントでaperyがどういう進化を遂げたのか、復習を兼ねて見ていくことにしましょう。

折角有名なソフトの解説をするというのに、やたらとマニアックな記事になっています。まあ、このブログ自体が極めてマニアックなので今更ですか。

 

ソースコードから見るaperyの雑巾絞り

 sdt4でのapery(浮かむ瀬)は雑巾絞り勢(除 ponanza)の中で最もうまく雑巾を絞ることが出来たソフトと言えます。ソースコード(https://github.com/HiraokaTakuya/apery/blob/master/src/usi.cpp )を見る限り、apery式の雑巾絞りは以下の手順に要約できそうです(間違ってたらご指摘いただけると幸いです)。

 

---雑巾生成部---

1.自己対戦(?)などの棋譜で初期状態を指定

2.初期状態からランダム(単純なランダムムーブに加え、玉を周囲25マスに動かす措置あり。また、ランダムで手を選ぶ確率は1手ごとに下げる)で手を動かし雑巾局面を作る(この実装はやねうら王と大きく異なる)

3.depth6で手を読む(6手先まで通常探索させる)

4.depth6で読んだ評価値とbestmoveを保持する

---雑巾学習部---

1.雑巾局面でqsearch

2.qsearchと教師(depth6で読んだ値)の差を縮めるようにKPPTを発展させる

3.このとき、教師データの次元下げを行う

4.100ステップごとぐらいに、過去100ステップの結果を重みつけ平均させたものに評価関数をすげ替える

 

やねうら王の学習部とは雑巾の作り方、学ばせ方で幾つかの違いがあります。やねうら王と特に違うのは既存の棋譜をスタートに教師を作っていることと次元下げの有無でしょう。気になるところは幾つかありますが、この辺のチューニングは開発チームによって十分されているだろうことを考えると、レートを上げる際には「これは既に十分検討された」程度の理解でもいいかも知れません...

 

・雑巾絞りの性質とソフトの棋風の関連性

雑巾絞りによってコンピュータ将棋が攻めの棋風になるか否かで嘗て平岡さんとディスカッション(on twitter)したのですが、あまりに書くことがない折角なので、もう少し細かく踏み込んでみたいと思います。

 

1.ランダムムーブが含まれる将棋では攻め将棋が勝ちやすい

xxする一手という展開が受け側に多いから。統計的なソースはありませんが、これについては正しいと仮定しておきます。

2.KPPT評価関数は駒の並びの線形和なので、ある形の静的評価値(evaluateの値)が大きくなれば、似たような形の評価値も高くなる

3.本来無理攻めな局面が受側の悪手で攻めが通ってしまうと、無理攻めの局面の評価値も上がってしまう。結果、攻めを優先して読むソフトになるのではないか(私の仮説)

4.雑巾絞りは浅く読んだ値(≒evaluate)と深く読んだ値の差を使って評価値を変えるのだから、無理攻めが通る棋譜が多くても、evaluateの値が攻めに偏った上昇を起こすことはないのでは(平岡さんのご指摘を私が意訳したもの)

 

結論から言うと平岡さんのご指摘は正しいと思います。故に、3の理論を成り立たせるには、2に加え「2+.攻めが通るような局面では深く読むほど評価値が良くなる確率が高い」という仮説が成り立つ必要があります。

ただ、2+の仮説もあながち間違ってはおらず、やはり雑巾絞りをやると棋風が攻めになるのではないかと私は思っています。

さらに言えば、特定の戦型(例えば後手番四間飛車)で相手の悪手の確率がより高くなるように雑巾を作れば、特定の戦型に特化した評価関数も作れるのではと期待しています。

 

・魔女との比較で見るaperyの探索(執筆中)

 # done is better than nothingの精神だ...

 

・Qhapaq的総評

aperyが3月時点のままであれば、sdt4からライブラリを強化したであろう多くのソフトがaperyを上回ることができるはずです。しかし、これまで多くの手法を開発してきたaperyチームを以てすれば、ライブラリ勢全てを上回るような成果を1ヶ月で出せてもおかしくはありません。

半年間全力で開発すれば、大会の上位争いにも参加できるようにしたい、というのがapery公開思想だった気がする(twitterでそんな意図のことを仰ってた気がしますが、元ツイを見つけられなかったので勘違いかも知れません)ので、本大会ではキッチリ巨人の肩の上から巨人を倒したいところです。

 

以下余談:

WCSCでponanza_chainerが引くほど強かった場合、外チームの開発者は一致団結してDNN将棋を開発するぐらいの覚悟を決めないと、そろそろponanzaの勝ち過ぎがコンピュータ将棋界の危機(興行的な面での)につながりかねません。ジャパリaperyパーク(*)を出て暫く立ちますが、パークの危機にはチルドレンの一人として私も馳せ参ずる所存です。余裕があったらディープ平岡さんも連れてきます...

(*) 狸、兎、鯨、コブラ、蛸あたりが居ると言われていますが、コブラと蛸はソフト名を動物から取ってるわけではないとのことです...

アピール文から読み解くWCSC27の見どころ(大将軍編)

久々のシリーズ物として、WCSC27に参加しているソフトのアピール文を、私、Qhapaqの開発者が読解/解説していきたいと思います。本シリーズを通じて、皆様がコンピュータ将棋を好きになってくれれば、そして、人工知能の織りなす科学を楽しんでいただければ幸いです。

 

前回記事:アピール文から読み解くWCSC27の見どころ(技巧編) - qhapaq’s diary

 

注:以下の考察はQhapaq開発者の予想です。開発者に確認をとっているわけではありません。あくまで参考として楽しんでいただけると幸いです。

 

機械学習の一流トラブルシューター 大将軍

 大将軍(たいしょうぐん)のアピール文:

http://www2.computer-shogi.org/wcsc27/appeal/taishogun/appeal.txt

sdt4のアピール文:

http://denou.jp/tournament2016/img/PR/Daishogun.pdf

# 運営さーん、DaishogunじゃなくてTaishogunですよー

 

大将軍はWCSC26では3位、sdt4では5位と非常に強いソフトの一つですが、そこに至るまでには多くの苦杯をなめたソフトでもあります。四駒を用いた盤面評価など、独自性豊かな挑戦にも取り組んできたソフトであり、大将軍が結果を残し優れたソフトとして評価されることは大変喜ばしいことであります。

 

http://denou.jp/tournament2016/img/img_result_02_after.png

こうして見直すと、大将軍 vs Qhapaq(たいしょうぐん ばーさす かぱっく)なんて、初見じゃ誰も正しく読めないんじゃないか...

 

以下、私怨をできるだけ抑えながら、将軍の名を冠するほどに挑戦的な大将軍の今回の試みを読み解いていきたいと思います。

 

・kkpt を用いた評価関数

注:幸運なことにもQhapaqの敗戦後、和服を畳んでいたら遅めの休憩を取りに来た大将軍チームと一緒になりました。折角だからと開発の手法などについてディスカッションさせていただきました。以下の考察には横内さんから教えていただいた情報も含まれていますが、あくまで私の記憶が元であることをご承知おきください。

今回の大将軍の最大の試みはなんと言ってもkpptからkkptに評価関数を切り替えたことでしょう。玉以外の2駒の並びを使わずに盤面を評価するのは流石に厳しい(駒の取れる取られるの関係を直接扱えなくなる)ので、3駒についてはkkpt + kppで盤面を評価するという意味なのではないかと予想しています。

aperyややねうら王が用いている、NineDayFever式のkpptでは、kppの素の値に手番ボーナスを加えることでkpptを計算していきます。Qhapaqの手元の実験ではkppの手番ボーナスには全部で(1局面で出てくるkpptのボーナスの総和で)100-200点程度の値が付いており、これを0にしてしまうことで盤面評価の質が落ちる危険性は十分にあります。高速化の割に合うかは謎です。

また、大将軍のsdt4のアピール文には少し詳しく書かれていますが、大将軍は3駒に加え「利きをまとめて学習」、「駒の位置関係の相対位置による評価」(原文ママ)がなされているようです。盤面評価に効きを使っているのか、学習時に効きを加味した計算を行っているのかは定かではないですが、効きの計算はコストが高いこと(参考:魔女をめぐる冒険 | やねうら王 公式サイト)、sdt4で大将軍のNPSがQhapaqより高かったこと、そして、sdt4のアピール文のviewer(pp-5)を見る感じでは、sdt4までは純粋なkpptを評価に用いており、効きは学習用のパラメタとしてのみ用いているのだと予想しています。

大将軍の評価関数においてもうひとつ特徴的なのが、今なおプロの棋譜から学習をさせていることでしょう。3駒のような広大なパラメタを最適化するにはプロの棋譜は圧倒的に数が少ないのですが、駒の相対位置などを駆使して少ないデータから情報を抽出する、評価関数を可視化することで過学習を避けるなどをしているのだと思います(あと、やねうら王ライブラリの雑巾絞りは使ってるとのこと)。

# 昨年のWCSCではponanzaの棋譜から学ばせたら強くなるんじゃないか仮説を立てて、Qhapaqも色々試してみたのですが、駒の相対位置の学習の実装は想像以上にしんどく、また、ノートPCでは相対位置の計算に死ぬほど時間がかかることが発覚したので諦めました

 

・大将軍の弱点?

大将軍は非常に強いソフトですが、序盤運用には若干の難があると思います。sdt4の棋譜だけではサンプル不足は否めませんが、定跡が終わった時点で、消費時間、評価値において大将軍が有利をとっているケースは少ないです。また、大将軍は角道を塞ぐことが多いようですが、これはプロ棋士棋譜はコンピュータに比べて矢倉率が高い(*,**)のが影響しているかも知れません。または、定跡はプロ棋士棋譜を評価し、評価値が悪くないものを用いているかだと思います。

やねうら王ライブラリを用いているなら、やねうら王定跡にシフトすることは可能ですが、公開されている定跡は狙撃されるリスクが高く、序盤の安定化は課題が多いです。

 

(*) 最近は矢倉率は減ってきていると言います。NHKで勝又先生が非常に解りやすい解説をしてくれたのですが、残念ながら手元に資料は残っていません。

(**) 最近の棋譜を集中的に使えば矢倉率は減りますが、そうなると今度は棋譜の数が足りなくなると思います。

 

・Qhapaq的総評

評価関数の可視化や、kkptへの移行による評価関数の作り直し(やねうら王を改造するのも面倒だし、それ以上に学習をちゃんと回すのが大変)など、大将軍は挑戦的な試みを続けているソフトであり、その開発技術はもっと評価されるべきだと思います。

Qhapaq的には死ぬまでに一度は倒さねばならないソフトです。大将軍側は評価関数の作りなおしにリソースを割いている以上、特に序盤には付け入る隙があると思っているのですが、有志による定跡開発も進んでますし、最終的には評価関数の質勝負になるでしょう。河童絞りがうまく行くよう、今からお祈りしておかねば。

 

将棋電王トーナメントPonanzaが連覇。コンピューター将棋界の進化が止まらない - Engadget 日本版 より。5位決定トーナメントの貴重な資料......?

http://o.aolcdn.com/hss/storage/midas/ee2484231c177f463a5f3197a0241bd/204437913/IMG_0972.jpg

余談ですが、大将軍はaperyの1期後輩でNDFと同期(旧名はN4) だそうです。