アピール文から読み解く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パーク(*)を出て暫く立ちますが、パークの危機にはチルドレンの一人として私も馳せ参ずる所存です。余裕があったらディープ平岡さんも連れてきます...
シャロー平岡です(´・_・`)
— 平岡 拓也(´・_・`) (@HiraokaTakuya) 2016年10月13日
(*) 狸、兎、鯨、コブラ、蛸あたりが居ると言われていますが、コブラと蛸はソフト名を動物から取ってるわけではないとのことです...