elmo@wcsc27 アピール文書r2 20170502 -- 20170502 update ・評価関数 浮かむ瀬の評価関数を更新しています。元の評価関数より強いようです。 > 評価値が自己対局の勝率に近づくように更新しています。 勝率が二項分布に従う場合、評価値はロジスティック分布に従う(※1)だろう、 ということでロジスティック回帰を適用しています(※2)。 単純に最尤推定のロジスティック回帰を適用するのではではなく、 正則化項として深い探索結果を浅い探索結果にフィードバックする手法(※3)を採用しています。 後者の手法を単体で利用する思考エンジンが多いですが、正則化項としても適しており、 手元の実験結果では下記何れよりも強い評価関数を作成可能でした。  ・正則化項無のロジスティック回帰のみ  ・正則化項(深い探索結果を浅い探索結果にフィードバックする手法)のみ 正則化項には、第4回電王戦トーナメントの†白美神†さんが利用していた同様交差エントロピー(※4)を利用しています。 これは単にロジスティック回帰の損失項が交差エントロピーを使うのが普通なので 両項のオーダーを合わせる意味で利用しています。計算簡単で直感的に値が分かりやすい点も良いです。 教師生成は基本的に浮かむ瀬と同様ですが、以下の点が異なります。 ・勝敗を出力する ・ランダムムーブは最初の局面生成時にだけ実行(勝率にノイズが載るため) 探索深さ6、50億局面弱で1回だけ最適化しています。 (※1) GPS将棋: https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=9786&item_no=1&page_id=13&block_id=8    下記エンジンでも同様の性質を仮定して利用しています。    ponanza: https://twitter.com/issei_y/status/589644174275674112    技巧 : https://github.com/gikou-official/Gikou/blob/master/src/learning.cc    ただ、Apery(浮かむ瀬)の評価関数はこの点を直接評価していないためか    適切に設定されていないと想定されます(以下参照)。    https://twitter.com/Qhapaq_49/status/795257976185442304    elmoの手法はこれをうまく補正していると捉えて良いかもしれません。 (※2) WCSC26の激指の手法を参考にしています。    また、ponanzaもロジスティック回帰を採用していると記載があります(もう使ってないかも)。    激指: http://www.computer-shogi.org/wcsc26/appeal/Gekisashi/appeal.txt    ponanza: https://cakes.mu/posts/15686 (※3) Apery(浮かむ瀬)、やねうら王など、多くで採用。    NDFの手法を簡略化し、今の形になったのはponanzaからと認識しています。 (※4) http://denou.jp/tournament2016/img/PR/Hakubishin.pdf    浮かむ瀬の二乗誤差と較べると緩やかに勾配が小さくなるようです。    その辺でも良い印象を持っています。     ・棋譜 floodgateではmonkeymagicとして参戦していました。 14コアのマシンで動かしており、2月版と4月版の違いは定跡だけです。 定跡は再度作り直しているので、大会ではまた違った定跡を搭載しています。 # 将棋所をサポート外のLinux(mono)で動かしていた為、何度か対局中に落ちてしまいました。 # 対局されていた方申し訳ございません。本番ではWindowsの将棋所を利用予定です。 floodgateの棋譜は以下から確認可能です。 http://wdoor.c.u-tokyo.ac.jp/shogi/view/show-player.cgi?event=LATEST&filter=floodgate&show_self_play=1&user=monkeymagic&range=365 # 5/11以降は見れないかもしれません。その場合は以下から棋譜ファイルを取得可能です。 # 7z形式なのでLhaforgeや7-Zipなど7z形式に対応した解凍ソフトをお使いください。 floodgate日次アーカイブ http://wdoor.c.u-tokyo.ac.jp/shogi/x/kifuarchive-daily/wdoor20170428.7z http://wdoor.c.u-tokyo.ac.jp/shogi/x/kifuarchive-daily/wdoor20170429.7z ・評価関数バイナリについて 大会後、公開予定です。 商用利用に関しては何らか制限をお願いするかもしれません。 CSAライブラリとしても登録予定です。 ご活用頂けると大変嬉しいです。 ・使用ライブラリについて 学習にはAperyを利用しています。 対局でも利用予定でしたが、対局テストでやねうら王が強そうだったので 本番ではやねうら王を利用することになりそうです。 # 何れも素晴らしいライブラリだと思います。大変感謝しています。 ★ 雑記 elmoの評価関数は1月3日以降全く強くなってないです。 (ある程度手応えがあったのでxeon4つ買ってみたのですが、結果に結びつかず) 使わないのも勿体無いので無駄な試みを続けてます。 3月にアピール文書を書く段階で評価関数に行き詰っていたこと&記述内容が薄いことに気付き、 定跡生成(1手ずつ定跡を伸ばす形で都度100万局程度対局)してみました。 これは一見正常に動作しているようでしたが、不適切な定跡を大量生成していました。 (設計の問題ですが、すぐ対処出来そうになかったので放置) 一方、浮かむ瀬評価関数に対する定跡面の対処は入れたかったので、 Aperyと対局し、勝った棋譜を定跡として登録しています。 思ったよりまともに機能しているので採用予定です。 -- 1.評価関数 昨年挫折した強化学習に手を加えて大規模化しています。 以前の手法では、対局毎にベータ分布に従う乱数を生成して評価関数に適用する必要があり、 計算量が大きいため教師データを大量に生成するのが困難でした。 今回は(浮かむ瀬等と同様に)初期局面を分散させることで(強化学習で言うところの)探索の考慮を省略し、 評価値が自己対局の勝率に近づくように更新しています。 2.定跡生成 評価関数が挫折気味なので、定跡生成に手を出しています。 「単純にひたすら対局して勝率の高い手を定跡に採用すれば良いじゃん」 という安易な発想の元に勝率ベースで定跡生成します。 最尤推定だと初期の勝率が不安定となるので、事前確率を適当に捏造して 事後確率最大化する枠組みにしようとしています。 (この辺も去年評価関数で考えていたのと同じ要領です)