daruma3940の日記

理解や文章に間違い等あればどんなことでもご指摘お願いします

電王トーナメントPR文章提出したのじぇ!!

f:id:daruma3940:20160520223745p:plain


ようやく電王トーナメントのPR文書とソースコードの提出期限である8月22日を乗り越えることが出来たのじぇ!
長かったのじぇ~大変だったのじぇ~
頑張ったまりちゃを褒め称えてね!

f:id:daruma3940:20160521003616p:plain

お疲れ様ね...

f:id:daruma3940:20160709192554j:plain


お疲れだよ~

f:id:daruma3940:20160520223530p:plain


お疲れ!

 

f:id:daruma3940:20160520223745p:plain


ありがとうなのじぇ。
PR文書は提出できたけど
独自性が足らなくて大会に参加できないと言われても仕方ないプログラムなんで
PR文書は誰にも見てもらえない可能性があるのでこのブログにその内容をざっくり書いておくのじぇ。

 

f:id:daruma3940:20160520223745p:plain


まりちゃが開発したソフトの名前はSquirrelなのじぇ!!

f:id:daruma3940:20160709192554j:plain

僕のことだね!

f:id:daruma3940:20160520223745p:plain


読み方は多分スクワレールなのじぇ!昔カナダに行った時そんな発音してたのじぇ!
英語でリスという意味の単語なのじぇ!

f:id:daruma3940:20160520223530p:plain


なんでそんな名前にしようと思ったの??

f:id:daruma3940:20160520223745p:plain


なんか可愛いしいい名前かなって...

 

f:id:daruma3940:20160520223530p:plain

・・・・

 

f:id:daruma3940:20160520223745p:plain

ちなみに絵はまりちゃが昔入っていた美術部の友人に描いてもらったのじぇ!

f:id:daruma3940:20160709192554j:plain


ありがとう!

f:id:daruma3940:20160521003616p:plain


あら、まりちゃ美術部に入ってたの?
それにしては絵が下手くそだけど...

 

f:id:daruma3940:20160520223745p:plain

当時は全く絵の練習もせず部室でスマブラしてるだけだったのじぇ...

f:id:daruma3940:20160521003616p:plain


何のために美術部入ったのよ(怒)

f:id:daruma3940:20160520223745p:plain


当時岡本太郎の本を読んで感銘を受けて、何も考えず入ったのじぇ。
まあコンピューター将棋もそんな感じで作り始めたし...

まあ自分語りは程々にして解説を続けようじぇ!

f:id:daruma3940:20160520223745p:plain


今のSquirrelはやねうら王nano(commit dc30e45d6fb78b79d1598821cc426760d57aa984)(2月頃のやねうら王)に
Apery-twigとStockfish7と独自性を加えたソフトなのじぇ!

f:id:daruma3940:20160520223745p:plain


これまで作っていた
コンピューター将棋のアルゴリズムを参考に作ったSquirrel-AB(ArrayBoardの略),やねうら王nanoを参考に作っていたSquirrel-BB(BitBoardの略)とはまた別のソフトなのじぇ!

 

f:id:daruma3940:20160520223745p:plain

評価関数はKKP+KPPでWCSC2016時に公開されたやねうら王の特徴ベクトルバイナリそのままなのじぇ(今のところ)

f:id:daruma3940:20160520223745p:plain

探索部の特徴なのじぇ!

Alpha-beta
Aspiration search
反復深化
TranspositionTable
指し手遅延生成
Mate Distance
Razoring
Futility
Nullmove
LazySMP
Internal-Iteration Deeping
SingularExtension
Shallow Pruning
Prefetch TT
LMR
Null Window Search
History Move Ordering
進行度

というオーソドックスな仕様になっているのじぇ

f:id:daruma3940:20160521003616p:plain


ほぼStockfishそのままじゃない(怒)
そんなので大会に参加できれば鬼が笑うわ!

 

f:id:daruma3940:20160520223745p:plain

いやっでもちょっとずつ違うのじぇ!!!!!
じゃあ独自性について解説していくのじぇ!!!

f:id:daruma3940:20160520223745p:plain


独自性①進行度の評価なのじぇ!
現在の評価値、KPP値、KKP値、現在の手数、王の周りの利き これらの内何を見て判断するかはまだ決まっていないけれどこれらの要素を組み合わせて進行度を見ていくつもりなのじぇ!

今の実装では
KKP値と王の周りの効きを見て。進行度を決めているのじぇ!

f:id:daruma3940:20160520223745p:plain


王の周りの利きは
王の周りに壁がなかった場合→王の周り8マスの計算
王の周りに壁がありかつ王のいる場所が盤の4隅でなかった場合→盤内の5マス
王が4隅にいた場合→その周りの3マスのみの計算だけではなく、王の2マス前と王のいる位置に桂馬をおいた場合に効きが発生する場所
における相手の利きも計算しているのじぇ!
これは何故かと言うと王が4隅にいるということは陣形は穴熊の可能性が大きいので王の周り3マスの利きを計算しているだけでは足りないのではないかという考えから来ているのじぇ。

またなぜKPPにしたかというと
KKPは自玉と相手玉とその他の1駒の位置関係であり、部分的な優位性はこの中には含まれていないだろうから進行度を図るには最適だと考えたのじぇ!
今はこの要素でうまくいくように値を調整中なのじぇ!

f:id:daruma3940:20160520223745p:plain


この進行度の変化に合わせて
探索に使われるmarginを変更させたり
指し手のOrderingに使われるHistoryの値はそのHistoryに値が格納された局面では良い指し手でもそれとは全く違う局面ではその指し手が良い指し手であるとは限らないので進行度の差を利用して補正をかけたり
また相手を詰ませるための指し手というのは普通の状況であれば探索を打ち切られてしまうような悪い指し手である場合が多いと思うので、終盤であれば一見すると悪い指し手でも探索をさせるために、進行度を用いてLMRを抑えたり王手をかける指し手は延長したり
詰め将棋のデータベースを参照するかしないかを決めたりするつもりなのじぇ!

f:id:daruma3940:20160520223745p:plain


独自性②Syogyzy Endgame Databaseなのじぇ!
チェスにはSyzygyと呼ばれるエンドゲームデータベースがあるのじぇ!
以前にこのブログでも話をしたのじぇ

daruma3940.hatenablog.com


それの将棋版であるSyogyzyエンドゲームデータベースを作りたいのじぇ!!!
ただ今のところ糞雑魚仕様で局面が全く同一にならないとそのデータベースを利用できない仕様(ただの終盤定跡)になってるのでこれでは役に立ちそうにないのじぇ。
詰みに関連する幾つかの駒だけを抽出してそれが一致してたらそのデータベースを利用できるようにしたいのじぇ!!

f:id:daruma3940:20160520223745p:plain


独自性③ProbCutについてなのじぇ!
ProbCutとは以前説明した通り名なのじぇ

daruma3940.hatenablog.com


Stockfishなどではこれとは全く違う仕様になっているらしいので

chessprogramming - ProbCut

これを元の仕様に戻してみよう!と思うのじぇ!

f:id:daruma3940:20160520223745p:plain

独自性④LVAについてなのじぇ!
Aperyでは、と金と成銀、成桂、成香、金の価値が同じであったので、これは良くないのではないかと思い変更しているのじぇ!
つまり、と金は相手に取られてしまっても歩に戻るため動かしやすい駒であると考えられるため点数を低くつけ、取られてしまっても金のままである金には点数が高くなるように点数をつけたということなのじぇ!

f:id:daruma3940:20160709192554j:plain

地味な変更だね~

f:id:daruma3940:20160520223745p:plain

(汗)(汗)

f:id:daruma3940:20160520223745p:plain


独自性⑤Aspiration Searchについてなのじぇ!!

Aspiration Searchは探索を始める際にalpha値beta値を前回の探索の結果の値を元に、制限して探索しようという探索方法なのじぇ。
この方法は探索の結果である評価値が安定してくるからという理由で5回目の探索以降で行うのが普通で(もしかしたらこの理由は間違っているかもしれないのじぇ)、制限の幅を広げることで3回目~5回目の探索でも行っているのじぇ。
また前回の探索におけるfail-high,fail-lowの回数が多かった場合は、その局面は評価値が不安定な局面であると言えるのでaspiration幅を初めから少し大きめにとって探索をしてみてるのじぇ。

f:id:daruma3940:20160520223745p:plain


まあここで紹介した独自性以外にも気になった所があればどんどん変更していってるのじぇ。

f:id:daruma3940:20160521003616p:plain


で、どうなの?強くなってるの?

f:id:daruma3940:20160520223745p:plain


正直言って独自性では強くなっていないのじぇ。
Aspiration Searchの件では改良前と改良後の勝率はほぼ5分だったし、
historyの値補正もわざわざこんなことしなくても、
Historyの値はいい値が入っていたとしてもその指し手がbeta-cutを引き起こさない指し手になればどんどん引き算されていくので局面の変化は元から値のなかに組み込まれていると思われるので
進行度の差補正はかなり微力なもので、計算コストがかかっているだけのように考えられるのじぇ。

 

f:id:daruma3940:20160521003616p:plain

意味ないじゃない(怒)

 

f:id:daruma3940:20160520223745p:plain

まああくまでも独自性なのじぇ(笑)
まりちゃにはSquirrelを強くできるほどの改良は出来ないのじぇ...

f:id:daruma3940:20160520223745p:plain


でもまあお気楽にやっていくのじぇ
大会に参加できなくても飲み会のネタぐらいにはなるのじぇ!
それにtwitterで友達も沢山出来たのじぇ!

f:id:daruma3940:20160520223745p:plain


大会目指して頑張っていくのじぇ~