WCSC29の決勝の感想戦

名人コブラ

f:id:the48:20190524153818p:plain

Qhapaq di molto

f:id:the48:20190524153825p:plain

狸王

f:id:the48:20190524153840p:plain

水匠

f:id:the48:20190524153851p:plain

elmo

f:id:the48:20190524153904p:plain

PAL

f:id:the48:20190524153917p:plain

やねうら王

f:id:the48:20190524153929p:plain

  

朝一のコブラ戦は熱かったですね。二次予選でも捩じり合いました。双方Multi Ponder実装の当て合いです。ジョーvsウルフ金串と言った感じでしょうか。(古い)

また,elmo戦は二次予選同様白熱しました。やはり相性があるんでしょうか。嬉しい好敵手ですね。あのガッツポーズは忘れません。

二次予選でPAL相手の敗戦も角換わりだったので何か弱点があるのかもしれません。

最後のやねうら王戦は言うまでもないですが,千日手を後手番で避けるというシチュエーションを全く準備していなかったのが原因です。

クラスタ構成でなければ設定は簡単なのですが・・・

 

WCSC29二次予選の感想戦

朝一でdlshogiとの一戦

f:id:the48:20190524152244p:plain

elmo

f:id:the48:20190524152325p:plain

狸王

f:id:the48:20190524152336p:plain

W@ndre

f:id:the48:20190524152346p:plain

やねうら王

f:id:the48:20190524152357p:plain

PAL

f:id:the48:20190524152415p:plain

名人コブラ

f:id:the48:20190524152425p:plain

NineDayFever

f:id:the48:20190524152436p:plain

Qhapaq di molto

f:id:the48:20190524152500p:plain

 

結果が出てから貼るとこんなもんかって感じすが,朝一のdlshogi戦がシードされた今年の初戦です。すごくドキドキしました。(小並感)

二戦目のelmoに勝ってやっとまともなプログラムを持ち込めた感があって安心したのを覚えております。

ざっと全部の評価値グラフを見て頂くと分かるのですが,この初戦しか逆転がありません。

特にPALとの負け試合でもワンサイドでじりじり負けてます。これが今風のコンピュータ将棋なのでしょう。

真面目に分析しようとは思ったのですがこのレベルの分析をどうやっていいか分からないままなので公表が遅れたという感じです。

プロ棋士界の序列について

将棋のプロ棋士界では序列という考え方がある。

簡単にWebサイトの棋士一覧の順と考えていい。

1.タイトル保持者(その内タイトルにも順がある)

2.永世称号保持者

3.段位者(同段位では昇段が早いものが上位)

 

で,これが主に何に影響するのかというとイベント招致のギャラなどもあるが,対戦時の上座下座問題にもなる。

但し,プロ棋士界は柔軟なので若手のタイトルホルダーがベテラン棋士に上座を譲るような配慮は日常である。

振り駒では上位者側の歩を5枚使い,歩が多い場合に上位者が先手になる。(上座を譲った場合でも記録係は上位者を振り歩先とするのが原則のようだ)

 

例外は順位戦である。

順位戦では同級のものがリーグ戦を戦うが,この際の上座は順位上位者と決まっている。降格した名人はA級1位となるため常に上座である。

これをうっかり間違えた羽生先生(当時三冠か四冠)がベテラン棋士に陰口を叩かれた事件は結構有名になっている。年間の対局の大半がタイトル防衛戦で下座へ座る感覚がなかったのだろう。

 

ちょっとよく分からないのが前竜王という呼称があったとき,これはどういう扱いだったのだろうか。

それとは別に棋士番号というのがあり,これはプロ棋士になった順に数字が振られており引退したからと言って詰められるものではない。

こういうのも気にしてる人とそうでない人がいて温度感も様々なのであろう。

 

実は昨日羽生九段と谷川九段という永世称号保持者同士の対局があった。この両者が無冠で当たるのも実に珍しいことである。

上記2.の中でどう順位をつけるかってことだが,永世称号に関わらず取得日順だそうな。

ということで無事羽生九段が上座につくことになったそうである。

先に到着していた谷川九段が下座に座っていたってのが気配りなのだろうし,実に谷川九段っぽい気がする。

 

ややこしくて分からないなぁって人は棋士一覧の順位を見ると良い。

近頃は若いタイトル保持者も出るが失冠もするので序列の入れ替わりが激しい。

自動更新されているのかと思うが実に対応が早い。

 

www.shogi.or.jp

モバイルノートに1TBを

前回の続きです。

 

bleu48.hatenablog.com

 

65000円くらいのノートに2万円ほどでメモリ32GB搭載しました。

ところが,メモリが多くなればSSDにもディープスリープ用のエリアが確保され元々256GBしかないSSDの容量が激減です。

Type2242じゃ大容量は期待できないなぁと考えていたところ,以下の過激なBlogを発見しました。なんとType2280をネジ止めなしで換装だそうです。

 

blog.kaias1jp.com

 

実に過激ですねぇ。

ネジはないけど適当なテープで固定してみます。

f:id:the48:20190523181254p:plain

1TBのSSD

 

結果的に6万半ばのノートに1万円のメモリ2枚刺して13000円の1TBのSSDを刺したってわけです。

10万円未満で4コア8スレッド,メモリ32GB,SSD1TB(NVMe)ってどうでしょう。

 

Crucial SSD M.2 1000GB P1シリーズ Type2280 PCIe3.0x4 NVMe 5年保証 CT1000P1SSD8JP

Crucial SSD M.2 1000GB P1シリーズ Type2280 PCIe3.0x4 NVMe 5年保証 CT1000P1SSD8JP

 

 

WCSCの順位の決定について(ソルコフとか)

え~っと,同星で準優勝の件で特にどうこう言うわけじゃないですが,全然想定してなかったので感想戦です。

まだ,参加2回目なので予選で立ち話中に出てくるキーワードが全くよく分かってなかったんですね。そんなこと気にするより他に準備することがあるって感じでした。

 

コンピュータ将棋選手権ルール第22条

順位は、引き分けを 0.5 勝 0.5 敗と換算した上で、次の各号に掲げる順に適用して決定する。

  1. 勝数の多い者を上位とする。
  2. ソルコフ(すべての対戦相手の勝星の合計)の多い者を上位とする。
  3. SB(負かした相手の勝星の合計)の多い者を上位とする。
  4. ミディアム(負かした相手の勝星が最高と最低の2人を除いた相手の勝星の合計)の多いものを上位とする。
  5. 第一号から第四号までで同順位の者の間で行われた対戦について、DB(勝ち数-負け数)の多い者を上位とする。
  6. 2次予選については、2次予選シードを1次予選通過者より上位とする。
  7. 決勝については2次予選通過順位が上位の者を、2次予選については1次予選通過順位が上位の者を上位とする。
  8. シード順が上位の者を上位とする。

 

1,勝ち星はいいですね。

2,ソルコフってのは対戦相手の勝ち星の総和です。結果の勝ち負けは関係ないのでスイス式トーナメントでは下位の方が上位と当たるため優位な気がします。それ故,引き分けすると猛烈にポイントが溜まるってのが二次予選のQhapaqです。決勝では総当たりなので全員同点で無関係になります。

3,SBってのが負かした相手の勝ち星合計です。今回のような決勝では同星であるため負けた相手が下位の方が上に来ます。あまり理由が分からなかったのですが,ジャイアントキリングを評価するものだそうです。つまり,下位者が上位者を破った際に高評価するための指数です。今回のような上位者の差異を決める総当たりの決勝に向いているかどうかはよく分かりません。

4,ミディアムですがここまでくるとなんだかよく分かりません。最高と最低を除くのはラッキーパンチを外す的な意味でしょうか?

5,同星で勝ち数ー負け数を評価するということは引き分けの多い方が落ちるわけですね。普通ここまでに差がついているような気がするのですが・・・(これ,直接対決のポイントのみですね。)

6,シード者優先です。まぁ,対戦前順位という意味でしょう。

7,予選通過順位ですが綺麗な三つ巴でもない限りここまで来ることはないでしょう。

8,予選通過順位が同順はありえないのでこれは無効では?(コメント頂きました,一次予選では発生するそうです。例が昨年のCGPとひまわり)

 

まぁ,過去に何かしらあって定められたルールですね。

初戦に負けたり引き分けたりすると意外に楽に予選通過出来るとか話には聞いてましたがそういうケースもあるのかもしれません。

二次予選は下位(但し奇数位)で抜けた方が美味しいとか懇親会でそういう話もありました。

よく分からないところを教えてくれる方がいらっしゃれば是非お願いします。参考資料の提示で十分です。

 

関係ないですが,クジラちゃんとは午前中に当たる方がよいってのは事実ですね。

---

参考ページ

リーグ戦 - Wikipedia

スイス式トーナメント - Wikipedia

---

追記

以下のところで,スイス式トーナメントで2位を決めることが危険である議論が述べられていました。

決勝が総当たりなのはきっとそういった配慮なのでしょう。しらんけど。

スイス式トーナメント方式 - 1447141480 - したらば掲示板

---

追記2

320手延長より他にすることがあるだろうと私がかねてより提案していたのは持将棋引き分けより千日手引き分けの方がずっと多いはずだって点がひとつ。その際に指し直しが適切ではないかという提案がふたつ目。(理由はもちろん先手後手が公平でないと考えるため)

対戦数を先後2倍にすることや指し直しは時間の都合で出来ないとの回答でした。 

---

追記3

かずさんのコメントから参考リンクを足しておきます

直前企画: 世界コンピュータ将棋選手権の順位決定方式 | コンピュータ将棋協会blog

---

追記4

先日の祝勝会で何人かのコメントです。ソルコフやSBはスイス式トーナメントを前提にあるので総当たりで使うのは例がないのではとのこと。私も今のところ他でみたことがありません。サッカーでいう得失点のようなものがあればいいのですが・・・

chainer 6.0.0のテスト

chainer 6.0.0が正式にリリースされた

chainer.org

 

ChainerXがβ版じゃなく使えることになる。

早速入れてみようと

pip install chainer

してみたのだが反応がないので

chainer install chainer==6.0.0

 で入ったみたい。こういうの若干遅延でもあるのかしら。

 

chainerは入って普通に使えるけど,目玉機能のchainerxは使えないらしい。

β版のドキュメントには自前ビルドしないといけない風なことが書かれているが正式リリースされても同じなんだろうか。

というか,そもそもLinux環境しか動作保証されてないってこともドキュメントに見つけて,現在あああって感じです。でも,きっとそのうち動くと思う。 

将棋局面評価における「蒸留」の有用性について

以前,ポエムとして「蒸留」というのがよくわからないと書いた。

 

bleu48.hatenablog.com

  

実はこの実験をやってた。

題材は既にfloodgateで対戦中のgo_test02やgo_test03である。

前回の記事では色々改良したけど,そもそも探索が遅いので強くなってない。7手詰めの詰めろが読めずに頓死とかそういう話を書いてあった。

逆に考えてみよう。7手も読めてないのにそれより深く探索できている相手に勝ったりしている理由はなんだろう。

 

評価関数しかない。これが今回の蒸留の成果だ。

 

評価関数とは特定の局面での評価を決める関数である。入力は局面情報なのでどの升にどの駒があるとかそういった情報である。

蒸留とはその特定条件の組み合わせをピックアップして,近似関数を作る作業と言っていいだろう。多項式近似関数をイメージすれば概ね間違いないが実はちょっと大変。

駒の数は40だが,組み合わせを考えると相当数になる。手番,成,升と掛け合わせた場合の数は千を超える。三駒関係と言って多く利用されたモデルは三駒の組み合わせを入力ににした関数であり,入力パラメータは1000万近くになる。

同形の数式であればすべてのパラメータを同じにすればいいのであるが,これはコピーである。異形の数式で多くの入力パラメータに対して近似解を得られるようにするのが蒸留と言っていいだろう。機械学習における任意の教師データを作り出せる状態にあるということだ。(そもそも私はこれが理由で機械学習の習作としてコンピュータ将棋を始めたのだが・・・)

 

完成すると事実同じような性能が得られる。ただし,計算時間が同じようなものであればだ。

逆に多少荒い近似でも計算時間が速いものであれば結果強くなる可能性もある。この辺が非常に難しいところで今のコンピュータ将棋の争点でもある。

 

ってここまで書いて評価関数の数式に新しいアイデアが浮かんだので下書き保存しておく。

----

と,選手権よりずっと前に書いてたものがあったのでこの辺で晒しておく。 

結果的に選手権ではNNUE型が多かったのだが,実のところ相当数の試行の結果である。