Qhapaqの技術文書



Similar documents
dlshogiアピール文章

しています. これには探索木のすべてのノードを探索する必要がありますが,αβカットなどの枝刈りの処理により探索にかかる計算時間を短縮しています. これに対して, 探索するノードを限定したり, 優先順位をつけて選択的に探索する 選択探索 という探索方式があります. 本チームはノードの選択方式としてノー

Microsoft PowerPoint - vc2013.s.takeuchi.pptx

用しないことを世界選手権大会で試みて参りました. 芝浦将棋 Jr. でも強化学習で評価関数 を学習するなど, 上記の開発コンセプトに沿って開発を進めていくつもりです. 3. 開発メンバー本チームの開発統括者は芝浦工業大学工学部情報工学科に所属する教員, 五十嵐治一教授です. 開発メンバーはすべて五十

Microsoft PowerPoint - mp11-06.pptx

Kumamoto University Center for Multimedia and Information Technologies Lab. 熊本大学アプリケーション実験 ~ 実環境における無線 LAN 受信電波強度を用いた位置推定手法の検討 ~ InKIAI 宮崎県美郷

レーティングと棋譜分析

2008 年度下期未踏 IT 人材発掘 育成事業採択案件評価書 1. 担当 PM 田中二郎 PM ( 筑波大学大学院システム情報工学研究科教授 ) 2. 採択者氏名チーフクリエータ : 矢口裕明 ( 東京大学大学院情報理工学系研究科創造情報学専攻博士課程三年次学生 ) コクリエータ : なし 3.

ナッシュ均衡 ( 最適反応 ) 支配戦略のみで説明できない場合 ( その) 戦略 A 戦略 B 戦略 A (,) (0,0) 戦略 B (0,0) (,) 支配戦略均衡 : 無し ナッシュ均衡 :(,) と (,) 支配戦略均衡よりも適応範囲が広い ナッシュ均衡の良い性質 各プレイヤーは戦略変更の積

将棋吊人のレーティングと棋譜分析

リソース制約下における組込みソフトウェアの性能検証および最適化方法

Microsoft PowerPoint - mp13-07.pptx


Taro-プレミアム第66号PDF.jtd

cp-7. 配列

EBNと疫学

ボルツマンマシンの高速化

NLP プログラミング勉強会 5 HMM による品詞推定 自然言語処理プログラミング勉強会 5 隠れマルコフモデルによる品詞推定 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1

統計的データ解析

PowerPoint プレゼンテーション

Microsoft PowerPoint - H17-5時限(パターン認識).ppt

論文誌用MS-Wordテンプレートファイル

             論文の内容の要旨

キャリアコンサルティング マッチングサービス 草案

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

合わせを許す フリースタイルチェス という対戦形式も考案され, 発展を遂げている. この対戦では, あまり強くない人間 + コンピュータ + 良いプロセス が グランドマスター + コンピュータ + 良くないプロセス に勝利するということが起こっている. このことは, コンピュータをどう使いこなすか

世界コンピュータ将棋選手権参加報告、及び、GPS 将棋の技術

第1回 羽曳野レイティングシステム大会

変更の影響範囲を特定するための 「標準調査プロセス」の提案 2014年ソフトウェア品質管理研究会(30SQiP-A)

情報 システム工学概論 コンピュータゲームプレイヤ 鶴岡慶雅 工学部電子情報工学科 情報理工学系研究科電子情報学専攻

NLP プログラミング勉強会 6 かな漢字変換 自然言語処理プログラミング勉強会 6 - かな漢字変換 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1

fmm151021完.pdf

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

/04/11 1. YouTube GPS B A A A 1000 DL 4/11

memo

Microsoft PowerPoint - 09.pptx

PowerPoint プレゼンテーション

2016 年度 ハーツにおけるシュート ザ ムーンの検証 坂本 将吾 研究室 グリムベルゲン

AI 三目並べ

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

将棋プログラムの現状と未来

人工知能入門

ゲーム情報学研究の事例 将棋

機械学習 ハンズオン-チュートリアル

Microsoft PowerPoint - kyoto


データサイエンス講座第 3 回機械学習その 2 ロジスティクス回帰 カーネル法とサポートベクターマシン アンサンブル学習


/04/11 1. YouTube GPS B A A A 1000 DL 4/11

スライド 1

ビッグデータ分析を高速化する 分散処理技術を開発 日本電気株式会社

4 段階推定法とは 予測に使うモデルの紹介 4 段階推定法の課題 2

適応フィルタのSIMD最適化

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Microsoft PowerPoint - R-stat-intro_04.ppt [互換モード]

失敗がこわいから ルールに反するから 仕事をしてるから 恥ずかしいから 人脈がないから 女だから で ほんとはどうしたいの?名言集 01.indd p11 修正時間 2016 年 10 月 13 日 17:35:42 名言集 01.indd p10 修正時間 2016 年 10 月 13 日 17:

STEP1 1 案件の選び方 FB 広告であなたが扱うアフィリエイト案件を決めていきます リスティングにしても SEO にしても案件選びは重要ですが FB 広告でアフィリエイトをしていく場合には特にこの案件選びが重要になってきます 詳しくは後述しますが この案件選びを間違ってしまうと いくら広告費を

Microsoft PowerPoint - 6.PID制御.pptx

東邦大学理学部情報科学科 2014 年度 卒業研究論文 コラッツ予想の変形について 提出日 2015 年 1 月 30 日 ( 金 ) 指導教員白柳潔 提出者 山中陽子

Transcription:

Qhapaqの技術文書 猿猿真似からはじめる 素敵なコンピュータ将棋ライフ Sawada Ryoto (May, 2016) Who is Qhapaq かぱっく と読みます aperyチルドレンの一人で す Qhapaq とは 偉大なもの を指すケチュア語で 本作が多くの巨人の肩の上に立った作品であることを 示しています 大樹の枝への勝率は55 程度 WCSC 2016の順位は13位 なぜかGPSと激指に大金星をあ げました 今回はQhapaqの改造の中でも特に効果があったもの を紹介します 失敗した実験にも意味はあるのですが あまりに雑多になったので今回は断念 写真は例のあれです

前書 コンピュータ将棋の能力値解説 1 評価関数 探索 手生成 並列化 定跡 大樹の枝はこんな感じ かな 評価関数 最も大事な項目 駒の並びから局面の 有利/不利を判断します Ponanzaが 絶対王者なのは評価関数の質が極めて 高いからと言われています 長らく 玉を含む三つの駒の並び KPP が使わ れていましたが そろそろ革命の予感 探索 幾らコンピュータでも 全ての合法手を 検討していては計算資源が足りません 飛車をタダ捨てする手のような駄目な 手は早く見限る 枝刈 ように色々な 工夫がされています

前書 コンピュータ将棋の能力値解説 2 評価関数 探索 並列化 手生成 高速化全般 合法手 や効き の生成 静的評価関数の呼び出しなどが早いと NPSが高いAIが作れます 定跡 序盤の変化を予め覚えておくことで 持ち 時間を節約するとともに 相手を研究手に 誘おうとします 人間と同じですね 手生成 定跡 大樹の枝はこんな感じ かな 並列化 複数のコンピュータを使って検討を分業 することでAIを強くします 人間と同様 チームワークが悪いと強くなりません

前書 どうやって能力値を上げるか 1 評価関数 探索 手生成 並列化 定跡 大樹の枝はこんな感じ かな 評価関数 プロ棋士やコンピュータの棋譜を教師とし KPPなどを調節します 計算量がとんでも なく多いため ドケチには辛い問題です 探索 枝刈のパラメータを探索したり 新しい 枝刈のルールを考えたりします 新参者は 普通 Stockfishという聖書を読むことから 始めます やねうらお氏の記事を活用する と良いと思います http://yaneuraou.yaneu.com/stockfish%e5%ae%8c%e 5%85%A8%E8%A7%A3%E6%9E%90/

前書 どうやって能力値を上げるか 2 評価関数 探索 並列化 手生成 詳細はやねうらお氏のブログ参照 二度目 NPSの上昇は確実な強化に繋がりますが 高い技術レベルがないと改良は難しいです 定跡 自己対戦の棋譜などから良さそうな変化を ピックします WCSC2016では読み太が 定跡を上手く活用していた印象です 手生成 定跡 大樹の枝はこんな感じ かな 並列化 チェスから輸入することが多いようです lazy SMPは実装できればレートが100前後 上がるようで報われやすい分野ですが 十分な並列数が必要なのでドケチには辛い

Qhapaqの挑戦1 探索パラメータの調整 評価関数 局面の検討を打ち切る理由は沢山あります 今の最適手より悪い変化は読まない αβ枝刈 パスより悪い手は読まない Nullmove pruning 飛車をタダで渡すようでは駄目だろう 深く読むほど悪くなる局面は駄目そうだ 浅く読んで駄目そうな局面は駄目そうだ 今回は 数あるパラメータの中でも勝率に響きやすいと 噂のFutility marginを調整 ある局面から数手先の局面の評価値の予測値が既に 見つけている変化より悪い場合 探索を打ち切る 探索 手生成 並列化 定跡

如何にして枝刈を最適化するか Blunderの方法 http://www.computer-shogi.org/wcsc21/appeal/blunder/blunder.pdf 幾つかの局面に対して 枝刈できたのにしなかった数 と 枝刈できないのにした数 を 測定し 両者を減らすように調整していきます 長所 過学習 特定の相手に特化した結果総合的に弱くなる が起こりにくい 短所 実装が辛い 計算時間がかかる 多分 Qhapaqの方法 改造前 大樹の枝 との勝率を比べ 一番勝率が高いのが一番いいパラメータと考えます 長所 実装が楽 計算時間も減らせる 短所 ノイズが出る 改造前の相手に特化した過学習パラメータを生み出しかねない

早速 勝率の最適化を試みるが 想定される対局回数がとんでもないことに Futility marginのデフォルトの値 傾きと高さを指定するとしたら二つの パラメータの最適化 各パラメータ10通り 試すとしても100通りの組み合わせが必要 各組合せ1000試合やるとして100000試合 必要 とてもつらい http://d.hatena.ne.jp/sakurapyon/20121214

もう少し楽をしたい 探索パラメータに対して勝率は緩やかに変わると仮定 パラメータ2 探索パラメータに対する 勝率の等高線グラフ 予想図 最適解に近づくほど 緩やかに勝率は上昇していく はず 55% 50% 45% 勝率が低かった点の近くは 探さなくていいのでは なかろうか パラメータ1

進化戦略による最適化 口コミで美味しいお店を探すのと大体同じ パラメータ2 パラメータ2 パラメータ1 ① 適当に観測者(20-30個)をばらまく ガウス分布 少ない対局数(10-20局)で勝率を測定 パラメータ1 ② 勝率の高い観測者を残し他を消す

進化戦略による最適化 口コミで美味しいお店を探すのと大体同じ パラメータ2 パラメータ2 パラメータ1 パラメータ1 ③ 生き残った点の近くに次の観測者を置く 平均 分散を取り再びガウス分布 ④ 最終的に最適解近辺に観測者が集まる

カーネルを用いた関数補完 食 ログの星の平均値でランキングするのと大体同じ パラメータ2 W K ( x, y ) f ( x, y ), K ( x, y ) i i i i i K i ( x, y ) exp( ( x xi ) 2 ( y yi ) 2 ) パラメータ1 進化戦略を何度も行い データ数を増やす f(x,y) : 勝率 i : 各観測者 Ki カーネル関数 Wi 各観測者の勝率 f(x,y)の最大値近辺に最適値があるはず 二次元程度なら 大体一日弱で最適値のあたりがつく

Qhapaqの挑戦1 終盤の枝刈調整 勝てそうなとき 負けそうなときFutility marginを どう変調すれば逆転を防げる/狙えるか if (abs(score) < ScoreMateInMaxPly){ int ts=score * 100 / PawnScore; int tempdf1; if(abs(ts)>1000){return;} //1000以上のscore差についてはfutを変えない if(ts<0){ tempdf1=ts*futd1m; }else{ tempdf1=ts*futd1p; } for (int d = 1; d < 16; ++d) { for (int mc = 0; mc < 64; ++mc){ FutilityMargins[d][mc] = static_cast<score>((futc+tempdf1) * static_cast<int>(log(static_cast<double>(d*d)/2) / log(2.0) + 1.001) - 6* mc + 45); } } } 評価値に応じたmarginの変化 自分が有利な場合も不利な場合も 枝刈を減らした方が強くなるようです 将棋指しの皆さま的にはどうです 3次元系で最適化したところ 1000試合で53%程度勝ち越すように なりました

Qhapaqの挑戦2 評価関数の変調 評価関数 コンピュータに受けの棋風 攻めの棋風を 加えられないか 零から作るのは無理でも 評価関数の中で受け 攻めに深く関係する値を 書き換えることで 棋風を変調できないだろうか 探索 手生成 並列化 定跡

進化戦略を用いた最適化2 評価関数 同じ特徴を持つ評価関数を抽出 纏めて変調することで ウン万次元の最適化を数次元にまで落とし込む 今回纏めて調整したパラメータ KPPのうち PPが自分の駒のもの 玉の安全さに相当 KPPのうち PPが相手の駒のもの 玉の危険さに相当 玉の安全さの価値をx倍 危険さ の価値をy倍と一括で変換+最適化 勝率が約55% 1300試合

まとめ ゲームノートPCによる低予算な開発を目指しました Aperyとの主な違い 局面に応じた枝刈パラメータの調整 特徴量を抽出することによる超低次元な評価関数の調整 使った手法 自己対戦による勝率の最適化 進化戦略による高速な最適化 Qhapaqの戦績 大樹の枝に55 ぐらいの確率で勝てる 0.1秒将棋で1300試合 一次予選突破 5位 たこっとさんに256手目に詰められました 二次予選敗退 13位 激指さんとGPSさんに勝つという謎の大金星

たぬきのもりと比較しないって約束したじゃないですか たぬきのもりの最適化手法との違いは 発想は同じ たぬきのもりの手法がQhapaqの上位互換ですorz パラメータ2 https://drive.google.com/file/d/0btvvyu4woofdg1qtffxdwtdmg8/view?pref=2&pli=1 一番の違いは点の生成アルゴリズムです ガウス分布だと左図のように複数峰がある関数の最適化 が難しいですが Tree-structured Parzen Estimatorは こういった形に強いようです 詳細は勉強中 パラメータ1 敗戦の弁 単峰の低次元系なら違いはないだろうし 三次元系以上を計算しきるリソースはそもそもなかったので 一度は自分でコードを作ってみるという勉学的な効用を優先したのです きっと

Qhapaqの今後 Hyperopt + 抽出した評価関数の最適化 上手く行けば貧乏開発者が評価関数を弄れる時代到来か dynamicなfutility marginの導入 各種ツールの展開 自己対戦ツールの公開 時間があったら 進化戦略 自己対戦勝率最適化ツールの公開 根性が足りたら 各種お勉強 apery やねうら王 技巧 本当に出るん をメタった定跡作成 手法を探してみたり やねうら王のコード読んだり Qhapaqちゃんのデザイナーを探したり 電王トーナメント出るの 出られたらぜひ

主に開発者向けの余談 評価関数でも枝刈でも強くなったのに なんで勝率55%なの 評価関数と枝刈パラメータは相関がある様子 Dynamic marginは枝刈を最適化 しているとは限りませんが まずまずの品質で枝を刈ってくれるようなので 今後はdynamic marginを使った方が良いと思います 進化戦略でばら撒いた観測者の数と対戦数ってどうやって決めたの 1ステップが2時間以内に終わるように決めました 夜 朝で数世代進むように 収束に近づくほど点や試合の数を増やした方がよさそうですが どれぐらいがベスト かは謎です 今後はhyperoptに寝返るつもりなので確かめる予定もないです 自己対戦の持ち時間は 1手0.1秒でやっています 1秒や1分も試したかったのですが十分なサンプル 勝率55%程度なら1000試合はやるべきです が集まらないと思ったのでやめました apery相手に過学習してる可能性は 十二分にあります aperyチルドレンが大会に沢山出るだろうから aperyローカル な対策でいいと考えてましたが 次はどうしましょう

旧アピール文書 Qhapaqのアピール文 1. Qhapaqの概要 "Qhapaq"は 偉大な を意味するケチュア語です 本プロジェクトが偉大な知の巨人の肩に立っていることに由来しています Qhapaqは所謂aperyファミリーのひとつです 2016年1月から開発をはじめ 3月末時点でのapery github上の最新版 に対する勝率は55%ぐらいです 開発者が ドケチであるため 今回のプロジェクトの目的はゲームノートPC一つでできる軽量 低予算な機械学習の実現となっています 現在 探索パラメタの高速な最 適化手法 既存の評価関数を再利用したオンライン学習手法を新規開発中です 2. Qhapaqの手法 進化戦略による探索パラメータの高速最適化 stockfishベースの探索には枝刈の閾値を初めとした多くのパラメータが存在します 探索パラメータの最適化と は 勝率を最大化するパラメータの組み合わせを探すことを意味しており これはノイズ付き多次元関数の最適化問題に帰着します 本研究では進化戦略を用 いることで従来手法に比べ数倍程度に高速な最適化を実現しました 探索パラメータを最適化することで 一晩程度の探索でレートを35程度上昇させることに 成功しました 既存の評価関数を再利用したオンライン学習 aperyの評価関数では70000局程度の棋譜を学習しています しかし ゲームノートPCで70000局の棋譜を対象に bonanzaメソッドを用いようとすると 棋譜の読み込みに30時間強掛かります 開発者のPCで800局の読み込みに20分程度掛かっていることから予想 そこで 評価関数を零から作ることを諦め 強豪ソフト/プレイヤーの棋譜を既存の評価関数に追加で学習させるオンライン学習法を開発しています 既存の評価関数 を初期値に 少数の棋譜でbonanzaメソッドを用いると過学習によりレートが著しく落ちるので 評価関数の各パラメータが元の値から離れた場合 その距離に 応じて復元力を働かせるようにしています 結果 指し手に有意な差 教師データに対する一致率で5%程度 実際の指し手はさらに異なると思われる を出し ながら 過学習をによるレート低下を起こさない 元のaperyに対して勝率51% ことに成功しました 3. Qhapaqの今後 オンライン学習で勝率が殆ど上昇していない原因としては 復元力が強すぎるor弱すぎる 教師データにした棋譜 ponanza 技巧の2015年の棋譜 約800局 との相性が悪い そもそも教師データ数が足りていない が考えられます パラメータの調整で強くなるなら良いですが 棋譜が沢山必要になるようだと 本プロジェクトの目的から外れたものになってしまうのでは ないかと考えています 強いAIを作るのも魅力的ですが 振り飛車に特化したAIなど AIに棋風の概念を持たせるような研究も興味深いと考えています 最新情報についてはtwitter https://twitter.com/qhapaq_49 にてご報告いたします 開発者のPC = Intel Corei7-4710MQ CPU @ 2.50 Ghz メモリ16GB