電王トーナメントにおける棋譜の公開なのじぇ!
電王トーナメントの棋譜をこうっかいするのじぇ!
こんなもの公開して誰得なの??
まあ僕が頑張った思い出の記録として公開したいんだよ~~
Squirrel君得みたいね..
~~追記~~
調べてみたら電王トーナメントの公式サイトでも棋譜が公開されていたわよ。
ここでも棋譜を公開したって何の意味もないんじゃない?
そんなこともないのじぇ。
公式ではテスト対局の棋譜は公開していなかったけれどここではちゃ~んと公開しているのじぇ。
テスト対局の相手はponanzaなのじぇ。ponanzaファンは喉から手が出るほど欲しがるんじゃないかだじぇ?
それは確かにそうでしょうけれどponanzaの相手がSquirrelじゃあねぇ....
それは言っちゃ駄目なのじぇ。
電王トーナメントで得られた知見についてなのじぇ!
電王トーナメントで得られた知見についてそろそろまとめておこうじぇ!
~~事前準備日
ハクビシンさんからの情報
技巧は今回
tree strapとalpha goの技術を用いているのではないか
tree strap...深い探索を行ったすべての局面の末端ノードの値を近似する。
一日目にもう一度お話を伺ったところ、実際はtree strapは行っておらず、
alpha goの方法はポリシーネットワークを用いているらしい。
tree strapに関しては昨日のやねうらさんと技巧さんの会話の中でやねさんが難色を呈していた。
syogi serverを用いれば自己対局が上手くいくのではないか
ハクビシンさんのソフトでは評価関数をメモリから読みとるのが全体の計算時間の30%を占めているのでそこを高速化したいそう。
そこでハクビシンさんは上手く評価関数がキャッシュに乗るようにpaddingを入れている。
キャッシュはマシンごとに違うのでこの電王トーナメントのマシン用に事前準備の日にチューニングされていた。
1日目
やねうら王さん
詰みを見つけやすい評価関数であればcheckのextensionはいらない。
今後はどの特徴量を追加していくか
どの手を重点的に読むかにdeep learning?
ponanzaは持ち時間にNNを使っている?
ツツカナ
持ち駒だけで進行度を図っている。
実現確率探索はreducationだけそこで考えて、extensionは他の項目で考えている。
null moveの代わりにmulti cutを使っている。(selene も)
→その局面でテキトウな指し手を一手指してみてそれが何個beta値を超えるかどうかで枝切り。
null moveを超える指し手がこの中にあればmulti cutのほうが精度が良くなる?
カパック
教師データの精度を上げている。
反省した局面は教師データに入れていない?
ラプンツェル
Sibling conspiracy number searchを用いている。
他のゲームでは上手く行ったらしいが、
将棋では上手く行かなかったらしいので
静止探索は行ったらしい。
selene
ABC探索の考えを取り入れた枝切りを行っている。
→複雑な局面には行きたくないという考え方?
技巧とやねさん
技巧 futility marginを120+80*progressで強くなった??
razoring パラメーターがバラバラ。深いほうが大きくないとおかしい。これは本当に必要なのか?
技巧ではrazoring入れてELO+10ぐらい。
razoringは割りと安全な枝切り?(このあたり周りがうるさくてよく聞こえなかった)
外してもそんなに強さ変わらない
静止探索は軽くならないか?
飛車角成を省く?
歩のcaptureよりも価値のある成を入れる?
技巧 歩以外の成を枝切りでELO-13
終盤の歩のcaptureなんて要らない
成を探索しなければいけないような評価関数か?
大抵はfutilityによって枝をかられる。
seeは利きを持っていれば相手の効きがそこにあるかどうかで省略できる。
王手のseeはききのかずさえあれば省略できる?
王手延長
技巧 SEEが+でONE_PLY
SEEが-でHALF_PLY
王手延長は王手をかけた後の局面の指し手の少なさから考えて積極的に延長スべし
教師データ作成のときは枝切りなしのdepth3で作成したほうがいいか?
枝切りありのdepth6ぐらいが普通のdepth3ぐらい?
boot strapの論文はデータが胡散臭い
Tree strapよりもRoot strapのほうが信頼できる?
探索のパラメーター調整はsingler extensitonの関係で他のソフトとやったほうがいい。
マルチスレッドの場合はhistoryの値の入り方がぜんぜん違うのでぜんぜん違う進行になる!
激指の研究ではKPが一番進行度を表現できるらしい。
shogi686さん
PEXT bitboard 飛車の利きを一回で求められるがmargeしないといけない
rotetedはmargeしなくていいところは早いけれども、利きは一回では求められない。
shogi686さんは両方試してみてrotetedのほうが早かった模様。
PEXTテーブルが大きいのでキャッシュに載るか乗らないかでソフトによるところが大きい?
レイテンシがどうこう言われたけれどわからなかった
_blsr_u64()
一手詰め関数はtemplateを使って短くしている。
強くなるときというのは遅くなるもの。
null moveが上手く行かなかった指し手の保存
2日目飲み会
次元下げは値の波及が激しい。
教師データが変わったのがソフトの気風の変化に影響?
Alpha Goも人間の棋譜からのほうが強くなっているところもある!
→人間の棋譜とソフト起伏の違いは?
発想の漏れを見つけなければならない。
ponanzaはKPP KKPTを使っている。(KPPTではない)だからめちゃくちゃ速い。
やねさん KPPTでもいいのでは。KPPTでパラメーターチューニングしなければならず、細かい比較はできていない。
去年の電王トーナメントバージョンに9割勝つ。
直近3ヶ月でパラメーター調整のために600のブランチを作った。
Squirrelについて2!
そろそろ開発にもめどが立ってきたのじぇ。
ここらで今のSquirrelの特徴をまとめておくのじぇ。
今日は眠いので詳しくは明日なのじぇ。
Squirrel!!!!
基本となっているのはやねうら王ナノ!
探索部の基本設計はstockfish7!
独自性!
進行度を絶対PとKEの線形和で評価!
KEのEは王の周りの升に効きがある升が何マスあるかを調べる!
王の周りに壁がなかった場合→王の周り8マスの計算
王の周りに壁がありかつ王のいる場所が盤の4隅でなかった場合→盤内の5マス
王が4隅にいた場合→その周りの3マスのみの計算だけではなく、王の2マス前と王のいる位置に桂馬をおいた場合に効きが発生する場所における相手の利き
進行度の学習はfloodgateでrating 2800以上のソフトの棋譜からadadelta!!
進行度によって王手を延長して探索するか、静止探索で王手も探索するかを決めている!
また指し手のorderingについてもorderingに用いられる点数が格納された局面との進行度の差によってorderingに用いられる点数を補正している!
定跡は多腕バンディット問題のucbを用いて作成!ucbそのままでは初手の方の定跡手が少なくなってしまい、数手で定跡が外されるということがあったが、ucbに初手からの手数の逆数に比例する項を加えたことで初手の方の定跡も豊富にした!
3手詰関数、1手詰関数は積んでいない!
評価関数はそのままでいくか、学習に挑戦した結果1手目から56玉を指すような読み筋になってしまった評価関数で出場するか悩み中..
評価関数の学習方法は棋譜の局面で3手探索をした評価値と今の局面での静的評価値をすり合わせるようにパラメーターを動かす方法で実装した!しかし実装方法は滅茶苦茶で、次元下げもしていなければ(KPPのPP対称性だけは考慮した)パラメーターを動かすのは傾きが負の方向にパラメーターを0.01動かすだけ!そりゃ、弱くなりますわ...
ざっとこんなもんなのじぇ。
前までは独自性を入れる度に強くなってるか弱くなってるか図ってたけど、焼肉オフ会に行ってからは自分のソフトの独自性がなさすぎることに焦りを感じてもう強さを図らずに独自性をバンバン入れていくことにしたのじぇ
ライブラリ勢じゃない人もsquirrelくんの独自性を認めてくれると嬉しいのじぇ
コンピューター将棋開発者オフ会in梅田に行ってきたのじぇ!
今日はコンピューター将棋開発者オフ会に行ってきたのじぇ
将棋ソフト開発者オフ会 in 梅田、本日が募集締め切りです。開催は14日20:00~。参加したいという開発者の方おられましたら、ぜひともご参加のほど、よろしくお願いします! https://t.co/5ESAAmgWFt
— 香上 智@Labyrinthus+# (@kagami_tomo) 2016年9月11日
なう! pic.twitter.com/anHvOaLsMn
— 香上 智@Labyrinthus+# (@kagami_tomo) 2016年9月14日
将棋ソフト開発者オフ会おわったりっ。焼き肉おいしかったでよっ!( ^ω^)
— 香上 智@Labyrinthus+# (@kagami_tomo) 2016年9月14日
参加者はSquirrelの開発者であるまりちゃとLabyrinthus+#の開発者の香上さんとCGPの開発者のwainさんだったのじぇ
どんなひとなのかわからない人はここをみて確認すればいいのじぇ。
denou.jp
どうだったの焼き肉は?
いや~~もうお二方の賢さに圧倒されるだけの焼き肉だったのじぇ。
特にwainさんのコンピューターの根本に関わることに関する知識は半端なかったのじぇ
でも色々役に立つお話を聞くことが出来て大変良かったのじぇ!
leaと呼ばれる命令があってその命令を使えば*5,*9も普通の掛け算演算子を使うよりも早く計算できるらしいのじぇ!(11/7修正)
if()でCPUが過去の履歴から予測したのと逆の条件分岐に移るときに10clockぐらいロスになり、最近のプロセッサでは1clockで3命令ぐらい処理できるのでかなりのロスに成ってしまうらしいのじぇ!(11/7修正)
まりちゃの使っているパソコンのcpu:core2duoでの3秒探索は最新のcpuで言うところの0.5秒探索ぐらいらしいのじぇ!
そしてまりちゃのソフトがレッサー改より弱くなり、20キロnpsしか出ていないという話をするとStockFish7式の探索でcore2duoであれば250キロnpsは出るはずであるのでバグを探せと教えて頂いたのじぇ!
ゆゆっ!?すごい情報を手に入れたね!
そうなのじぇ!これからは頑張ってコードの無駄な部分を探してnpsを増やしていく改良をしていくのじぇ!
めざせ!250knps!!!
電王トーナメント出場が決まったのじぇ!!
電王トーナメント出場が決まったのじぇ!!
やったね!!
やったわね!
やったよ!!
最近なかなかモチベーションが上がらなかったけど
モチベーション回復したのじぇ!!
大会までもうひと踏ん張りなのじぇ!!
floodgateの棋譜を技巧風DBに変換するツールなのじぇ。
floodgateの棋譜を技巧風の学習用DBに変換するためのツールを作ったのじぇ。
技巧が読み込んでいる棋譜ファイルは
1行目: <棋譜番号> <対局開始日> <先手名> <後手名> <勝敗(0:引き分け,1:先手勝ち,2:後手勝ち)> <手数> <棋戦> <戦型>
2行目: <CSA形式の指し手(1手6文字)を一行に並べたもの>
という形式になっているみたいでこれは便利だと思ったのじぇ。
ちなみに2015年からFGの棋譜の中に対局者のレートが載るようになったようなので
それを利用してレート2800以下のソフトの棋譜は使わないように設定しているのじぇ。
これを用いて2015年のFGの棋譜を変換してレート2800位上のソフトの棋譜14380局が集まったのじぇ!!!
これでSquirrelお勉強計画が進むわね!!!!
えっお勉強...??
お勉強は嫌いだよ~~楽して強くなりたいよ~~!
楽して強く慣れれば苦労しないのじぇ。
これから強くなるまで一週間でも2週間でもぶっ続けでお勉強させてあげるのじぇ(暗黒微笑)
(´;ω;`)
ただこのツールは自分用にかなり適当に作ったのでバグ等や改善等あればプルリクしていただけると嬉しいのじぇ!!
このソフトは「なのは(将棋)」の作者さんの作られたfggatherを参考に作ったのじぇ。ありがとうございますなのじぇ。
でもwindows.h関連が理解できなかったからまりちゃが作ったのはwindows.hを用いなかったので、コードとしてはぜんぜん違うのじぇ。