選手権のルールに関して(ポエム)

bleu48.hatenablog.com

 

運営側がルール関してアンケートや個別意見の吸い上げを行った後に個々に不平を言うのは迷惑でしかないので自粛してる。以下は個人の感想である。

まぁ,一般的な意見だが見慣れないやつが優勝したらルール改正が行われる。

モータースポーツでもスキー競技でも自転車競技でも道具を使う競技ではよくあることだ。

私も意見を求められたが,決まったルールには従うが半端な変更はあまり意味がないと思うと回答している。過去経緯を知らない者がルール変更を提案するのは愚策と心得ている。

 

初参加の昨年はルール違反で失格にならないように運営側に色々とケース分けした具体例を示しながら質問を沢山やった。これはお互いにストレスの溜まることだと思う。簡素に済めば互いに楽だが,大会の運営経緯もあって現状の妥協点として成立している。今年のルールについては概ね手数と時間の変更と聞いているし,補足資料で出ているのは私や他の多くの方から質問があったであろうケースの具体的な説明で昨年のルールから変更があったわけではない。もしルール変更があったと感じたなら今まで読み間違えていたということになる。

 

今年運営側が恐れていることはスポンサーが賞金を出すことにより,賞金目当てで意図的に反則をするものが出てくるのではないかということだが,恐らく杞憂である。感覚的なものでしかないのだが参加費とクラウド費を考えると期待値が低い。ましてや顔と名前を晒しての公式競技でそれを行う者が出るとはとても思えない。その点は伝えてあるが,安全側に振りたいのが人情だろう。Qhapaqチームがorqhaを使えるようにならないかとの打診はしたが断られたのでそういうことだ。

 

で,想定されている反則に「蒸留」というのがあるらしい。評価関数部分の特徴を濃縮するようなイメージであるが,規定外の情報を強化学習での教師データとして使うことを禁じている。しかしながら,対戦相手として使うことは可能なので昨年うちのチームが行ったように多くの他のソフトと対戦させて苦手局面を回避することや相性問題を事前に確認するようなことは可能である。途中評価値は使えないが対戦勝率は問題ないとのことなのでこのような運用を行った。(詳細はGPW等で発表済み)

また,「蒸留」の有効性ついては私は怪しいと思っている。というか蒸留で蒸留前より強い評価関数を作ることが出来る人であれば,反則することなく強い評価関数を作るノウハウはあるってことで,あとは時間の問題かと考えている。もちろん計算機リソースはそれなりに必要であるがリスクを負って反則をする必要が無い。

 

ちなみに私も参加した第5回電王トーナメントにおいては実は上記の「蒸留」は容認されていた。これも運営サイドに幾度も質問状を送ることで確認している。私も意外だったが,野良関数を初期値や教師データに強化することは構わないルールであった。当時やねうら王に搭載されたキメラ機能等は複数のチームで利用されたことと思う。うちは類似機能+αでGA的な強化をするプログラムを自作している。実際はマシンパワー不足で本格運用に至っていないが(笑)そういえば定跡ルールにおいても相当奇妙な根回しがあったようだが結局詳細は分からないままだ。他,ライブラリへのpython-shogiの追加は私が申請した。選手権と違ってユーザによる申請で構わないとのことであった。

もしかしたら,電王トーナメントと選手権とでのルールの差異に戸惑っている人がいるのかもしれないが,確かに微妙に違っていて面倒であった。

 

シード権のルールについても現状では運営が決定するとある。過去にあったシード辞退は出来ないとのことであった。しかしながら,本大会過去の上位者として名を連ねた面々が新人枠で参加されている。これは運営が容認されているらしい。うちもメンバーを一部入れ替えているがシード一位で新人賞の対象外であることを既に伝えられている。シード権を放棄して新人賞の対象に入れて頂くことは出来ないらしい。

実はそれ以前に私個人が「自分の考えたアルゴリズムを試したい」と言うのが一義で参加しているためチーム代表であることは寧ろ負担と思っている。他チームへの身売りを考えたのだが,上記シードルールのために依頼した全てのチームに断られた。つまり,私を一員に加えるとシード一位として私がチームの看板になるのが不満と言うことだろう。

ということなので選手権参加自体が若干負担過剰とは思っている。

 

序でにコメントするとCSAの例会にネットワーク越しのリモート参加も認められなかった。これは非常に残念だった。往復4万円+7時間強で趣味の集まりに参加するのはちょっとしんどい。一度も出たことが無いので具体的に何が行われているのか全く分からない。運営に若手が入って来ない理由のひとつじゃないだろうか。まずこの辺から改革を進めて頂きたいと思う。

 

おっさんの戯言なので,御意見あれば何なりと頂きたい。

 

温故知新(3)

 また,古い書籍の整理を再開する。

 

将棋とコンピュータ (情報フロンテイアシリーズ)

将棋とコンピュータ (情報フロンテイアシリーズ)

 

  

p.51

ここぞという局面ではじっくり深く読まなくてはならないが,いつが「ここぞ」かをコンピュータに判断させるのはたいへん。時間配分で決定的なアイディアはえられていない。

相手番の考慮時間を利用した初めてのソフトは「永世名人

 

p.81

depth9の全探索には1万6000年以上かかる見込みとのこと。時代だねぇ。

 

p.87

1992年の選手権で「森田将棋」「永世名人」「柿木将棋」に加え「極」「YSS」が参加し五強の争いに。

 

初期の選手権では主力がNECのPC9800シリーズであったとこのこと。私は高校生くらいかな。

時間配分が難しいと記載されている書籍は他になかった気がする。一手何秒という自己対局が流行り出したからなのだろうか。

pytorch入門

まぁ,ツールの開発者じゃないので使いやすいツールを見つけては使い倒す方です。

触ったことがなかったので今年のコンピュータ将棋の学習部はpytorchで作ってみようかと思います。(今からで間に合うのかどうか分かりませんが仕事じゃないので気楽なもんです)

 

まずは,インストール。

公式サイトでどれを入れるかって選んだらインストール手順がでます。Windows環境だとpipのスクリプトが表示されたのでその通りに入れるんですが,これが大きい。

600MBくらいのダウンロードを覚悟してください。

後で気づいたんですがJITエンジンを内包しているみたいです。ほとんど別の言語処理系ですね。

 

公式のチュートリアルを流し読みして,概ね他のやつと似たようなもんだなぁと勝手に解釈。適当なコードから入りますか。

github.com

 

みんな大好きMNISTの公式例題。

DELL G3(i7-8750H, GTX 1050Ti)程度の6コアCPU・中の下GPUでもcudaの方がずっと早い。

PS D:\work\torch\test> Measure-Command {py .\main.py}
TotalSeconds : 94.8616324
 

PS D:\work\torch\test> Measure-Command {py .\main.py --no-cuda}
TotalSeconds : 591.9085792

 

6倍ちょっと。これでもGPUのLoadは半分程度だったのでGPU使わない手はない感じですね。

 

考えてみると他のライブラリでもっと差が出るのだが,それってCPUのとき遅いんですね。CPUでもそこそこ検討するのはpytorchならではってことかな。 

---

2019-03-05追記

上記600MBってのはCUDA環境で。CPUのみだと100MBくらい。

負数の剰余

shunirr.hatenablog.jp

 

随分久しぶりに地雷を踏んだ。

CおよびC++では

-5 % 3 = -2

 5 % -3 = 2

RubyおよびPythonでは

-5 % 3 = 1

 5 % -3 = -1

 

そもそも商が違うのだ。

CおよびC++では

-5 / 3 = -1

 5 / -3 = -1

Pythonでは

-5 // 3 = -2

 5 // -3 = -2

つまり,商を0側に丸めるかマイナス側に丸めるかの違い。

  

複数言語またいでテストコード書くと色々分かる。

 

温故知新(2)

学生さんの卒論もあった色々と過去の調べ物をしている。

手に入る情報だけで追っかけて調査しているので,当時詳しい方には是非間違っている点があったら是非指摘していただきたい。

 

floodgateの長手数の将棋に関して

2011年,2012年辺りは稲庭将棋による長手数将棋が多数。

2016年には前年比で256手引き分け局が激増しているが,これは600-10Fというフィッシャークロックルールへの変更が原因と思われる。

同年末には300-10Fへと変更したため翌年以降は引き分け局はやや減少。

他に可能性としては技巧の公開など。

 

floodgateの入玉宣言勝ちに関して

2013年は前後年に比べて相当に入玉宣言局が多い。これらの大半はBlunderによる。

恐らく下山さんが時代を先どって相当対策を施したと思われる。

2017年より劇的に入玉宣言局が増えている。これはelmoの公開およびelmo絞りの公開による類似評価関数の作成によるものと思われる。

但し,対局数の0.4%に満たない程度。

 

稲庭将棋について

公開されているソースをベースに探索深さ制限などを相当緩和してリビルドしてみた。

ソースはれっさ改に追加で千行程度。上記私の自作ソフトよりやや多いw

定跡・定型駒組などのパターンマッチングのデータではなく,条件分岐コードで実装されている。

対局はオリジナルより終盤しつこくなる。

現行の強豪ソフトは敵陣突破の前にmate17や19を出して楽勝。シングルスレッドでも問題ない。

手持ちの自作ソフトはやや勝ち越すくらい。(ただしHefeweizen評価関数)

評価関数が駒得のみであるやねうら王マテリアルでは大半引き分けるが,偶然敵陣を突破可能な布陣が形成されると圧勝。

駒得だけで稲庭に勝つのは相当高難易度のようだ。

逆に飛角銀桂を適当に配置できれば突破前にmateを入れることができることが分かった。

温故知新

 ふと,一昨年はじめたコンピュータ将棋にどっぷりです。

まぁ,学生の卒論ネタもあって関連書籍を可能な限り集めてみたついでに,私も歴史を学んでみることにしました。

比較的古いのから紹介します。

 

コンピュータ将棋―あなたも挑戦してみませんか (Information & Computing)

コンピュータ将棋―あなたも挑戦してみませんか (Information & Computing)

 

  

33ページには枝狩りなしでは深さ4が限界,82ページには簡単な攻めを読むにも深さ5程度は必要だが膨大な数で全幅探索はできないとあります。PC9801のMS-DOS環境です。

 

書籍の発行年次が1990年ですが,2019年のPCでは私が戯れに作った探索部で100knpsでるので枝狩り無くても秒のオーダーで探索可能となります。恐ろしいですね。

ちなみにこれくらいの探索部にSEE(静的駒交換評価)を加えると,あの稲庭将棋を葬れます。(稲庭将棋の悪夢については最近知りました。)

 

www.vector.co.jp

 

さらに,この書籍124ページには将棋とニューラルネットは相性が良いはずだとか,プロ級の強さになるには20年とかそういった結構勘のいいコメントも記されております。

当時からアイデアマンが揃ったジャンルだったのですね。