Hefeweizenの特殊性

あんまり理解されてないようなので,一番分かりやすいスライドをちょっとネットに乗せてみる。

f:id:the48:20181017121744p:plain

少々冗談のような世界が理解頂ければ幸いである。

ちなみにCSAルールでは1秒未満切り捨て,1秒以上は切り上げなので2秒の消費時間というのはどこかで1回通信遅延のようなものがあったのだろうとの認識である。

よく定跡ゲームと言われてるが定跡だけで終局まで指せるわけがない。

相手の着手までに相手の指し手を予測しそれに対する応手を決めている。

もちろん,本番では複数のAWSハイエンドインスタンスで手分けして探索を行った。

応手部分は多くの参戦者と大きな差異はないつもりだが,面白いのが相手の指し手予測である。

情報系で言うと先読みとか投機実行とかそういう表現になる。

この設定の対局はチームメイトとの約束で一次予選だけにしておいたが,コブラさんに勝ってるくらいなので,このまま決勝でもいけたんじゃないかって感じもある。

何度か行っているイベントの余興では同じくノータイム指しの設定でノートPCの1スレッド探索で遊んでもらったが,アマチュアの有段者もいらっしゃったようだが勝利を収めた人はひとりもいない。

1スレッドであっても対局者が時間を使う局面で相当深くまで事前探索できる。

昨年末にfloodgateに投入したshotgun_zeroの完成形と言えば気づく人がいるかもしれない。

 

面白いと思って頂ければ幸いである。

自己対戦とか考えたくもない。

最後の審判

最近知ったネタ。

詰将棋作品?『最後の審判』 (Koji Nuida)

 

将棋ルールの定義にまで遡る名作である。

連続王手の千日手を探索に入れた解釈に依存する詰み筋。

 

ちなみに,手元の計測では著名な詰み探索エンジンの背尾詰,なのは詰めの両方で不詰み扱いであった。

 

現行のルール整備がどうなったか明記されたものが見つからなかったので,結論は分かりませんでした。

補足的な話

先週末土曜日に広島でコンピュータ将棋の話をしてきました。

県外で依頼を受けて話したのははじめてです。

 

hiroshima.pycon.jp

  

私のリスペクトする如法さんから依頼頂いたってのが他を蹴ってたのに受けた理由のひとつです。もうひとつは酒祭かなw

まぁ,それと岡山でのリアクションと異なるものが得られるかどうかってのが興味ありました。ただ,岡山で話すのと色々と変えてあります。

 

岡山で主催している自作AIの会では自分で時間管理ができますので,初回などは3時間ほど話しました。まだ数回ですが準備した資料の分量は相当なものです。

また,他の勉強会などでも一部切り出した形+着色して話題にしております。

ai-okayama.connpass.com

 

Pycon mini 広島ではウケを狙えとの指示でしたので,予備知識が必要な技術的な話はカットしてあります。特に個人差が激しいために調整しずらいところです。

興味がある方はBonanzaの保木先生の論文およびたぬきさん,かっぱさんの同人誌が最新の技術的な文献として適当に思います。もちろん,やねうら王blogもです。

 

C91 コンピュータ将棋 2016年度課題技術総復習 | nodchip's website

技術書典5でコンピュータ将棋本を頒布します in 池袋 - コンピュータ将棋 Qhapaq

 

ソースを読む方が吸収が早いタイプの方はやねうら王や技巧のソースから入ることをお勧めします。Bonanzaや他のソフトでもいいと思います。

 

近頃あういう場では感情にうったえるのが流行りのようでしたので,体験談を話すと言う体でそっちに振ってみました。開発の動機,方向性を決めたきっかけ,偶然性の転機,未知との遭遇など時系列にかつ主観的に説明しました。

まぁ,遊びの範疇ということもあり客観的な裏付けのない部分も多く直感的な開発を続けてきましたので,情報の精度は保証しませんが私が感じたことや考えたことをお伝えできたのではないかと思っています。

別の部分に興味あって聞かれてた方がいたとすればにどの程度ウケたのかは分かりませんが,休み時間・懇親会で質問攻めにされましたので以下の基準で90点は確定しております。

私の基準では感想やコメント・質問の類は所謂「アウトプット」ですので遠慮なく頂ければ幸いです。

 

 

最後ですが,準備頂いた運営者に感謝いたします。

懇親会の餃子,西条の地酒たいへんおいしゅうございました。

 

Macで将棋所を動かす話

  

なんか妙に早起きしたのでちょっとやってみた。

Core2Duoの古いMacなので現行のHigh Sierraで打ち止めの予定のやつ。

Monoは以下から落とす。

Download - Stable | Mono

 

左がハイライトされてたので,5.10.1ってやつを入れた。

将棋所は最新の4.2.0でしょう。

で,将棋所を展開したところにいって

mono Shogidokoro.exeってやると色々怒られる。

Windows.Formのエミュレートが完全でないので云々とか

エラーメッセージをググってみると,よくあるエラーらしい。

ってことで

「mono --arch=32 Shogidokoro.exe」で起動します。

フォントの関係なのかエミュレート環境の問題か英語なんです。

へぼいマシンだと起動も結構時間かかるし実用的じゃないね。描画もエミュレートのようで非常に重いのでアニメーションは速攻切った方がいい。

で,対戦エンジンはMac上でビルドしたやねうら王が動くので,平岡さんの希望は通るのかな。

 

まぁ,MS社は.NET Core 3でWindows.Form対応するらしいので,これが出たらオープンソース界隈でクロスプラットフォームのバイナリが一気に寄る可能性もあるね。

要するにこんな話がいらなくなるだろうってこと。来年らしいよ。

 

floodgateにもつながるみたい。(対戦はまだ始まってない)

---

お昼に追記。

floodgateは切れ負けしてた。GUIが重いみたい。

monoの起動は上記コマンド以外に直接32bitのmonoを立ち上げてもいいらしいので

「mono32 Shogidokoro.exe」でも同じように動く。(手で打つのなら短い方がいいね)

それと,AperyもMacでビルドしたのが問題なく動いた。うちはsse41でしたけど

棋譜解析の話

コンピュータ将棋の役に立ってるところのひとつだと思う棋譜解析についてちょっとメモっておく。

棋譜解析ってのはその棋譜が誰によって作られたものであれ,それをコンピュータ将棋の手法で解析していくものである。コンピュータの棋譜であれば当然ミスが少ないようにでるが,人間の棋譜では多くミスが発生しているように見える。

 

しかも,昨今コンピュータの方が強いという風潮のため解析結果がコンピュータの方が正しいとみられがちである。概ね正しそうな意見であるが,これがいつのまにか100%に近いものであると妄信しておられる方が出ているように思う。特に自身の棋力がないために局面の複雑さや争点をずらすような駆け引きを理解していない人がそうありがちであるように思う。

 

参考値程度に見ておくのがいいんじゃないかと思ってる。それともう少し分析的な評価をする方法がないかと現在考案中である。まぁ,ひとつはshotgunの内部を可視化するような試みなんだけど,上手な可視化方法が見つかっていない。PVを複数並べるだけでは高段者以外は捉えにくいように思う。玉の堅さや遠さと言ったパラメータの数値化も過去に様々行われているがこれも今一つ人間が見て有用なものに思えない。他にも局面の複雑度や難易度と言った漠然としたパラメータが浮かぶが定量化可能かどうかすら未知である。

 

また,解析における適正パラメータについても色々言われている。もちろん使用PCのスペックに依存するので一概に最適値などは言えるものでもない。比較的低スペックなものであれば時間をかけて解析すればそれなりの解が得られると思われる。

個人的にちょっとオススメのオプションはShogiGUIの「終局面から解析(逆順)」である。解析時に手を進めて局面評価を行うが順方向に解析するのに比べて,逆方向から解析していくと進んだ局面のデータ(置換表とか言う)が既に存在するので比較的早く深い探索が行われる。欠点は棋譜の手順だけ優先的に深く考慮されてしまうため,他の手順が本筋より浅い探索になってしまう傾向があるというところ。少し気を付けた方がいいかもしれない。試される方は興味ある棋譜を順方向と逆方向の二通りの解析順で確かめて頂きたい。

 

順方向で緩手と思われた手が逆順解析で妙手と評価されることが稀にあることが分かると思う。いや,ほんと難しいです。

 

将棋電王トーナメント終了だそうな

将棋電王トーナメント終了だそうです。

私は昨年の第5回に参加させて頂きました。まぁ,幸運にも準優勝しました。

dwango.co.jp

 

去年の今頃はせっかくshotgun作ったので隅っこで参加させてもらおうかと秋のスケジュールを確認してたくらいですかね。

丁度出張予定と合うので,ダブルのスーツで旅行鞄とポスターケースを持って参加させて頂いたのでした。ほんと場違いでしたね(笑)ニコ生にはあまり出たくなかったのでカメラアングルを避けて避けて,事前PVもお断りしてたんですよ。

まぁ,ほんとに決勝行くと思ってなかったので

 

今となっては,いいおっさんが新しいお友達をいっぱい作れる証明になったかなぁと思ってます。(人脈?そういう言葉もあるな)

ほんと久しぶりにコンペの類に参加させて頂きました。楽しかった。

 

この準優勝がなければ今年の選手権にも出てなかったでしょう。人造棋士18号の松下さんと知り合ったのもこの大会ですし,やねうら王の磯崎さん,たぬきの野田さんにサイン頂いたのも,個別に挙げればキリがありませんがその他大勢の開発者の皆様とお会いできたのもこの大会でした。

また,賞金を頂いていなければ開発機を追加していなかったでしょうし,多くの戦友からの貴重な情報がなければ今年の選手権に勝てたとはとても思えません。

 

一回しか参加できなかったのが残念ですが,ドワンゴの運営はじめ関係者の皆様どうもありがとうございました。

 

 

で,参加して色々なことを学びました。運営の苦労も見えましたし,選手権と電王トーナメントの微妙なバランスとネット上のレーティング談義,業界の金の話とか非常に色々なものを考える機会になりました。

特に統一ハードで行う大会の意義ってのは選手権およびゲーム情報学研究会後に強く感じました。所謂勝因とか争点とか言うところに資金力がモロに出るようでは面白くないんですよね。実際機械学習においてマシンパワーは正義と言われるくらいに優位になりますので事前学習においてPonanzaより学習コストをかけたチームは他になかったわけです。対戦時は尚更です。排気量の違うマシンのレースになりかねません。

選手権決勝の大半はAWSのハイエンドインスタンスを使うというある意味統一ハードの戦いになっていましたが,マシンパワーさえあればと考えた方も居たようです。

何かしらの形で統一ハードの大会が運営されるといいなぁと思ってます。お手伝いできるなら手伝いますよ。(選手権側にも言うてますがw)

 

もちろん,無制限の最強を決めるってのも楽しいですよ。(私が勝ったから言うんでなく)

---

8月28日追記

以下の予測で6コアマシン用意してたんだが無駄になったね。残念。

名前に拘りなかったので命名権売って水害地域に寄付しようとかちょっと考えてた。

bleu48.hatenablog.com

不用意にchainer5.0.0b3を入れたメモ

環境構築の覚書

今回はchainerの対応

まず,pythonを入れる。

Windows10の64ビット対応で普通に入れたら十分だが,今回は3.7.0か3.6.6かで迷う。

保守的に3.6.6としておく。

 

VS2017これは最新を入れてみる。

今はこれでいいらしい。必須事項はC++の開発環境。

vs_community__1199910325.1533881368.exe

 

で,CUDA toolkitのバージョンは最新の9.2を入れてみる。

cuda_9.2.148_win10.exe

 

環境変数 

PATH:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin\Hostx64\x64

C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64

INCLUDE:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\ucrt

 

ここで,「pip install cupy-cuda92」

これでcudnnも入ってくるそうな。

それから,「pip install chainer」ってやったら,バージョン古いって叱られる。

cupy-cuda92がそもそもchainer5.0.0用だったらしいので,これを入れることにする。

githubから5.0.0b3を落としてきて,「setup.py install」

無事入ったらしい。

 

>>python -c 'import chainer; chainer.print_runtime_info()'
Chainer: 5.0.0b3
NumPy: 1.15.0
CuPy:
CuPy Version : 5.0.0b3
CUDA Root : C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2
CUDA Build Version : 9020
CUDA Driver Version : 9020
CUDA Runtime Version : 9020
cuDNN Build Version : 7104
cuDNN Version : 7104
NCCL Build Version : None

 

再インストールが面倒なので不具合なければこれで遊ぶとする。

普通の人はcuda9.1を使おう。