技巧型の評価関数

github.com

 

前回,ちょっとだけ強くなったのが出来たってやつを公開しとく。

選手権本戦で使うかどうかは未定。

割とモダンな差し回しをするのが分かると思う。学習データの差かな。

 

探索部は未検証過ぎるので保留。

選手権後に考えることにする。

第28回世界コンピュータ将棋選手権の成り行き予想(4/14 ver)

前回の追記でもいいんだけど,前回も長いので新規に立ててみた

bleu48.hatenablog.com

 

各チームのアピール文書に対して運営から追記の依頼があったようだ。(うちにも)

更新情報や漏れ聞こえる噂などを加えて更に状況分析してみる。

 

  

前回,主観的に予選やばいって話がメインになってしまいました。事実,前回記事で技巧2がSDT5の予選落ちラインと書きました。今回の予選落ちラインは昨年チャンピオンelmoより上になりそうです。

というのは,ソフト面でelmo絞りのノウハウはオープンになってしまったので弱くなっても独自性を貫くというチームやスキルが無いチーム以外はelmo@wcsc27より強くなることは確実です。例えばシード枠でクラウドを使う方々8チームは皆確実にelmo@wcsc27より強いと考えるべきでしょう。

また,クラウドの性能です。昨年よりアマゾンやグーグルのクラウドのハイエンド性能はインテル社のおかげもあり,二倍以上のコア数+クロック上昇になっています。ということで昨年のelmo@wcsc27がそのまま出ても予選通過できないと思われます。

ここでwcsc27とつけているのはelmo@sdt5は当然wcsc27より強いわけですし,sdt5の段階でも既に8チームほどはelmo@wcsc27よりソフトウェア面で強かったと考えています。(うちは相性問題があるので除いておきます)

 

次に一次予選組です。

昨年度は一次予選組が決勝に半数残るなど,一次予選組の活躍が目立ちました。今年も同様な展開を期待したいのですが実績等が評価しづらく全く先が読めません。

しかしながら,sdt5で優勝したぽんぽこはもちろん上位陣のノウハウは多く共有されておりこれらを参考に参戦する新参チームがそれなりの準備をしていると考えるのは当然です。うちを含めてガチ系のスペックでエントリーしている新参は一次予選の動向から要注意です。

 

技術的な話ですが,ここは完全に予想・妄想になります。

1.探索部の技術は結構煮詰まって来ている。

頑張ればレートを10とか20とかの刻みで上げられますが,これは一発勝負の場合一桁%の勝率程度の話になります。中長期でみると確実に進む進歩ですがこれだけで優勝ということはありえないだろうと考えます。具体的には現行の探索アルゴリズムを一部改善する程度であろうと思われます。この辺はオープンソースになれば後検証されることになります。

2.評価関数の革新。

現行トップはぽんぽこやelmo,apery,qhapaqなどの三駒関係の評価関数です。Bonanza登場以来10年以上使われていた形ですが,これを覆す新しいものが出た場合圧倒的な勝利につながる可能性があります。たぬきさんとCrazy Shogiさんは新しいものをつかうと明言されております。また,強豪と知られる習甦も独自の評価を試みるため注目です。

3.高速化

たぬき野田さん,CGPの大熊さん,Qhapaq伊藤さん,Yorkies石田さんなどは高速化が得意です。同じハードウェアで競争して頂きたいところですが,何でもアリでやるとどういう技を使うのかも見物でしょう。AVX512とか使うんですかね。

4.クラスタ技術

クジラちゃんはもちろんですが,多くのチームがクラスタ構成で挑みます。有効利用されれば強いのでしょうが昨年のelmoのように単体でも勝つ可能性がないわけではありません。どのようになるか楽しみです。具体的には読み太の塚本さんが初クラスタ構成です。うさぴょんの池さん,Yorkies石田さんも初クラスタでしょうか。

うちは電王トーナメントの1PCのときからクラスタです。ある意味,真の姿になる感じでしょうか。

5.棋力

コンピュータが指すのに棋力が関係あるのかどうかというとアリます。動作している記録をさっと眺めただけで異常に気付いたり,微妙な良しあしの最終判断を下すときに間違いがないのは棋力の有無だと思います。電王トーナメントでも予選落ちすると裏で将棋指してるくらいの参加者なので結構強い人が多いようです。元奨励会員やアマチュア強豪の作るソフトの動向と考えてみると面白い視点になるのではないでしょうか。

6.看板

棋力の看板のひとつでしょうか。elmoは昨年チャンピオン,Aperyも元チャンピオン等のタイトルという看板があります。たぬきさんは電王ですね。柿木将棋さん,YSSさんあたりは古豪といったところです。Qhapaqさんはそろそろタイトルが欲しいですね。

他にもCrazy ShogiさんやPALの山口さんは他競技での実績があり新参では最有力と言っていいでしょう。何故参加されるのか聞いてみたいくらいです。

他にも近頃増えたのが所属大学や法人名を表に出してくる行為ですね。これもひとつの看板と考えます。企業宣伝になるのでしょうし,法人としての資金援助などがチームを支えるものと考えます。大金を投じて負けると大変ですね。

最後になりましたが,Barrel houseは岡山駅東口を出て駅前商店街を抜けたところにあるビールバーです。火曜定休です。

 

将棋とチェスの違い(Stockfishを参考に探索部を強化する際の注意点)

以前も少し書いたけど,将棋は終始40枚の駒を使うがチェスは駒が減る。

また,将棋は歩や桂馬などの自由度の低い駒が多い上,長距離移動可能な駒が少ない。チェスにおいてはルーク2枚,ビショップ2枚,クイーンと大きく動ける駒が多い。

これにより探索難易度のピークがかなり異なる。

 

例えば駒を取り合う行為は将棋では両方の駒台に駒が乗ることになるので,攻守共に自由度が増す。探索の枝が増えるということだ。チェスでは序盤クイーンなどの行先を止めているポーンなどでない限り駒が減るために自由度は下がる。選択枝が減る。

 

駒が減ったチェスは非常に単純なゲームに成り下がり多く引き分けとなるが,将棋では複数種の駒が互いの駒台に乗った状態が最も探索速度の落ちる難局面となる。あまりに多く持ち駒がある場合は長手数の即詰みがあったりして大変だ。

 

効きである。どちらも駒をひとつずつ動かすゲームであるため,多くの駒は動かない状態で活躍する。つまり効きの効果である。上記の通り将棋では自由度の低い駒が多いがチェスでは間に駒が無い限り長距離の効きがある駒が多い。この差は大きいが更に持ち駒の影響が出る。将棋では長距離の効きに対して駒を打って対応することが可能であるため長距離の効きを比較的高頻度で遮断可能となる。つまり,持ち駒が成否を決する。逆に考えると歩がない時の香車,飛車は普段にも増して恐ろしい。

 

次にPromotion(将棋では成り)である。

チェスではポーンのみが成れる。そしてほぼ最強のクイーンとなるのが通例だ。将棋では王将,金将以外の駒は全て成れる。

 

問題はそれぞれの価値である。チェスにおいてポーンが成るのは最終列においてであるが,将棋と異なり打ち駒がないため初期配置のポーンが最終列まで進む必要がある。実に大変である。そしてこの行為は一局に一度も起こらない程度の事象であり,そして中盤以降でクイーンが一枚増えるということは多く勝負を決する要因となる。チェスにおけるPromotion(成り)とはそういう稀有なものである。

比べて,将棋において成り駒が無い将棋の方が珍しいであろう。敵陣3段で成りが可能なのはもちろん,敵陣に駒を打ち込むことが可能なため高頻度で成りが行われる。そしてコンピュータ将棋で計算される駒の価値が上がる行為であることは違いないが,銀が成銀になる際などはあまり価値があがる行為ではないとされておりその行為の価値は一定ではない。

これでStockfishにおけるPromotionをそのまま将棋に取り込んでは不適当なことが理解されると思う。

 

で,その辺弄ってみた落ちを引用して雑記を終える。  

 

技巧2調べ(ベンチマーク編)

技巧2にはベンチマークコマンドが用意されているが,公式配布バイナリは学習部と共に無効化されている。

Linux環境を構築して自前ビルドすればいいのだが,まぁそれも面倒なのでどんなベンチマークをしてるか確認して,それをコマンドラインから同じことをやってもいいのじゃないかと思ってる。

以下がcli.ccの一部。

/**
* 探索のベンチマークを行います.
*/
void BenchmarkSearch() {
// いわゆる「指し手生成祭り」局面
Position pos = Position::FromSfen(
"l6nl/5+P1gk/2np1S3/p1p4Pp/3P2Sp1/1PPb2P1P/P5GS1/R8/LN4bKL w RGgsn5p 1");
Node node(pos);

// 30秒間の探索を行う
UsiOptions usi_options;
Thinking thinking(usi_options);
UsiGoOptions go_options;
go_options.byoyomi = 30000;
thinking.Initialize();
thinking.StartNewGame();
thinking.StartThinking(node, go_options);
}

要するに指し手生成祭の局面で秒読み30秒で探索しろってことだ。

ということで以下のコマンドと同等となる。

usi

isready

usinewgame

position sfen l6nl/5+P1gk/2np1S3/p1p4Pp/3P2Sp1/1PPb2P1P/P5GS1/R8/LN4bKL w RGgsn5p 1

go btime 0 wtime 0 byoyomi 30000

まぁ,何がしたいかってことなんだがfloodgateのgikou2_1cがryzen7 1700の1スレッドだってことらしいので,上記コマンドにスレッド制限入れて計測してみました。

手元にはryzen7 1800Xしか無かったのでクロック3.6GHzで制限を入れました。

結論は700knps強ってことでした。

古いノートパソコンの2コアで丁度これくらいじゃないでしょうか。

floodgateのレートと何かを比較したいときの参考にしてみてください。

 

参考に以下のサイトではryzen7 16コア使ってこの11倍程度のnpsが出るとあります。

--benchコマンドで約7.7Mnpsでしたのでほぼ同じ比率かと思います。

www.uuunuuun.com

---

4/7 追記

i5-2410Mで840knpsを確認。

2割ノード数増加でレート20程度,探索部でレート20程度,評価関数でレート70程度の向上が見込まれる。

今流しているtest_i5-2410Mが改造した技巧なのでレートが3300の110くらい上になる予定。

最初マシン設定などで変な負け方してたのでちょっと落ち着くのに時間かかるかも。

floodgateの不具合について

floodgate

昨年から遊ばせて頂いている。

基本的に感謝しかないのでサポートできることがあればしたいのだが,そもそもどういう運営をされているのか理解していない。

 

最近酷い不具合を見つけた。

対戦相手はレートの近い人とと公式にあるが,このときに使われるレートは表になっているレートとは異なって対戦相手を決めるとき用の言わば内部のレートである。ログファイルを閲覧すれば見られる。

これがたまにとんでもなく高くなったり低くなったりしている。不自然な変動は多くあるが,1件法則性をみつけた。

きふわらべ効果と言うべきかもしれないが20手未満で勝ったときにレートが極端に下がるようである。これはさすがにバグだろうとww

 

きふわらべを短手数で詰めると,きふわらべと何戦も付き合うことになるきふわらべ地獄のようなものだ。

第28回世界コンピュータ将棋選手権の成り行き予想(4/4 ver)

タイトルまるパクリです。(オマージュとかリスペクトとかインスパイアと読み替えて頂いても結構です。)

昨年も各チーム動向を予想されていたと思うのですが、大半の分析には納得させられます。

qhapaq.hatenablog.com

 

引用して何を書こうとしたのかというと

私見を少々入れて、初参加チームとしての展望ってところでしょうか。

レーティングに関して参考サイトは以下のアレです。

www.uuunuuun.com

 

このサイトを見るだけで、昨年選手権(以下wcsc27)3位の技巧が第5回電王トーナメント(以下sdt5)予選落ちラインであることが確認できます。半年でレーティングが200ほど上がるってのはそういうレベルです。

ちなみにこのレーティングってのは結構相性が強くでることがあるので注意が必要です。自己対戦とかでの勝率UPは比較的ちょっとしたことで可能ですが、これが過大評価されがちです。逆に類似性の低い(強みを持っている部分が異なる)対戦相手だとレーティング差が計測はし易いのですが、一回キリの勝負では判定不能と言っていいでしょう。shotgun@sdt5は技巧2に90%上の勝率を誇りますが、elmo@wcsc27には有意に負け越します。そして、一戦見ただけでは(棋力もあるんでしょうが)どっちが強いとかコメントしづらい感じです。

 

こういったことを踏まえて、一参加メンバーとしてチーム内で簡単な雑談をしていたのですが、今回wcsc28では一次予選がやばい感じです。一次予選参加チーム数で既にsdt5参加数を超えており、ましてや二次予選へ進めるチーム数は8チームと聞きます。

スイス式トーナメントですが、今年は試合数が増えるそうで運の要素も減る感じでしょうか。

個人的にはうっかり大会最終日までホテルを取ってしまっております。

 

第28回世界コンピュータ将棋選手権

また、選手権では使用マシンが青天井になっており、昨年もAWSクラウド勢が猛威を奮いました。今年はクラウドを使うチーム数が倍増しており、クラウドを使うか同等のマシンを現場に持ち込むチームでないと予選すら通過できないのではないかと予想しております。つまり、i9や多ソケットのXeonですね。AWSでも昨年比で最上位のマシンが相当増強されておりますのでどうなることやら。

個人的には一次予選落ちした時用に何かネタを持っていくべきかなぁと思ってます。

 

また、ソフトウェアのアルゴリズムにおいても恐らく大きなことが起こります。sdt5ではwcsc27の影響でelmoを参考にしたチームが上位陣に多かったと思いますが、wcsc28では昨年末界隈を騒がせたAlphaZeroの影響が強くディープラーニングモンテカルロ木探索に本腰を入れたチームアピール文が多く見られます。アピールだけなら簡単にできるのですが、ハイスペックのハードウェアとセットとなるとこれは結果が楽しみです。もちろん、アルゴリズムレベルでの革新があれば多少のマシンパワーの差はなんでもないことはBonanzaの例でも明らかです。

今年はwcsc16のBonanza登場以来の衝撃があるのでしょうか。

 

そして、何かの予感を感じさせるのか出場キャンセル者が出ていないってのが結構すごいです。sdt5の目的であった多くの人と面白い話が出来るんじゃないかと楽しみにしております。

 

sdt5で立ち話した方の中で分析能力・対応策の準備が的確と思えた方が何人かおられるのですが、そのうち今回明確に新ネタを仕込んでいる方が今までより弱いとは思えないので・・・(内緒であまりネタを明かさない人を批判しているわけではありません)

計測値の雑記

昨日は休日でしたので空いてるマシンで色々計測してました。

 

なんとかチャンネルで話題の最新読み太(今年更新のkppt_file版)

【エンジン】読み太、やねうら王4.80(どちらもaperypaq評価関数)
【勝敗】27-11-117 (200戦予定を途中ストップ)
【持ち時間】10分切れ負け
【CPU】Xeon 12コア (HT ON)
【OS】Windows10 64bit
【メモリー】16GB
【思考条件】Threads=24、USI_Ponder=OFF、引き分けスコア=-2、定跡オフ、ディレイ関係0、HASH=4096
【特記事項】bash -c './Yomita-by-clang' で読み太だけWSL利用(clang++-5.0)

 

読み太が進行度評価してるらしいってのは知ってます。あっちに貼ろうとしたけど,誰が計測したか分かった方がいいだろうってことで。

 

以降,オマケ。まぐれ度の検証の続き(i9計測)

sdt5で数名が託されたという話の「まふ定跡」

本番で使ったのは読み太さんとタヌキさんだけらしいので。

  

対よみた(まふ)

対局数100 先手勝ち54(55%) 後手勝ち43(44%) 引き分け3
shot_gun 0.81
勝ち64(65%) 先手勝ち35(71%) 後手勝ち29(60%)
Yomita_kppt4.61
勝ち33(34%) 先手勝ち19(39%) 後手勝ち14(28%)

 
対たぬき(まふ)

対局数99 先手勝ち47(49%) 後手勝ち48(50%) 引き分け4
shot_gun 0.81
勝ち27(28%) 先手勝ち13(27%) 後手勝ち14(29%)
tanuki.sdt5
勝ち68(71%) 先手勝ち34(70%) 後手勝ち34(72%)

 

よみたさんは10%ほど勝率上げてますね。

比べてたぬきさんは若干下げてます。

と言うか定跡が双方長いと50%に寄ってくるんじゃないかって感じですかね。

 

さらに以下,相手だけ定跡抜き対局です。

酷いハンデ戦に思うかもしれません。

 

はにわ(定跡なし)

対局数100 先手勝ち61(64%) 後手勝ち33(35%) 引き分け6
shot_gun 0.81
勝ち49(52%) 先手勝ち32(66%) 後手勝ち17(36%)
honeywaffle.sdt5
勝ち45(47%) 先手勝ち29(63%) 後手勝ち16(33%)

 

かっぱ(定跡なし)

対局数100 先手勝ち56(58%) 後手勝ち39(41%) 引き分け5
shot_gun 0.81
勝ち31(32%) 先手勝ち20(41%) 後手勝ち11(23%)
qhapaq.sdt5
勝ち64(67%) 先手勝ち36(76%) 後手勝ち28(58%)

 
たぬき(定跡なし)

対局数100 先手勝ち63(67%) 後手勝ち31(32%) 引き分け6
shot_gun 0.81
勝ち28(29%) 先手勝ち22(46%) 後手勝ち6(12%)
tanuki.sdt5
勝ち66(70%) 先手勝ち41(87%) 後手勝ち25(53%)

 
えるも(定跡なし)

対局数100 先手勝ち67(69%) 後手勝ち30(30%) 引き分け3
shot_gun 0.81
勝ち31(31%) 先手勝ち25(51%) 後手勝ち6(12%)
elmo.sdt5
勝ち66(68%) 先手勝ち42(87%) 後手勝ち24(48%)

 
よみた(定跡なし)

対局数100 先手勝ち50(55%) 後手勝ち40(44%) 引き分け10
shot_gun 0.81
勝ち52(57%) 先手勝ち29(63%) 後手勝ち23(52%)
Yomita_kppt4.61
勝ち38(42%) 先手勝ち21(47%) 後手勝ち17(36%)

 

これ,意外に思うかもしれません。

かっぱさん,たぬきさんは定跡使った方が勝率が高いようです。評価関数自体が非常に素晴らしいのですが,序盤定跡も相当すばらしい出来だったのでしょう。

えるもさんは定跡が無いとうちの先手定跡だけが刺さってる感じです。それ以外はかなり強いです。えるもの評価関数の弱点を序盤定跡で上手に補っているイメージです。そういう作り方をされているのでしょう。

はにわさんとよみたさんは定跡抜きの方が勝率を上げてます。極端な相性があるのかもしれませんが,塚本さんがうちとの対戦直前で定跡を抜いた選択は正解だった感じがします。

 

う~む,作文をしなくてはならないのに逃避してる感がありますなぁ。

真面目に分析すればするほどラッキーパンチ感が出てしまうのがツラい。

自分に都合のいいデータだけ公開して,俺つえぇってやってもいいのですが

(笑)