GPW-2019

今年もゲームプログラミングワークショップに参加しました。

https://www.logos.ic.i.u-tokyo.ac.jp/~tsuruoka/sig-gi/gpw/

 

初日の最初の枠でしたので,遅刻しないように気を配ったのだが事故渋滞などで多数の遅刻者が出たため初っ端からセッション開始時刻を遅らせてのスタートとなった。

発表内容はMulti Ponderで未検証部分の確認とそれを踏まえた実践振り返りで有効性の実証について。予稿にはないが,最後にYorkieはやはり定跡や時間制御に関して何か特殊な対応をしていたんじゃないかという憶測を加えて発表を終えた。

 

他の方の発表は昨年よりやや囲碁,麻雀,カードゲームの類が増えていた感じで若者の傾向かなぁと思った。知らない用語も多いので今年も学びが多い。勉強の材料が今年もどっと増えた。

 

この集まりはアカデミックな研究発表ももちろんだが,夜の部での対戦が面白い。

昨年はコンピュータ将棋の対戦に参加し優勝したのだが,今年は開催されないとの情報を得てから囲碁の準備をした。

Go言語の囲碁実装ということでGoGoと安易な命名

さすがに3日程度の準備ではひとつも勝てない。

   

github.com

 

01から09までが参考勉強会のほぼ移植。

Go言語の文化に合わせてちょっとだけキャメルケースにした名称とかがあるくらい。

09でMCTSの基本までが完成。

09aがGTPプロトコルを吐くように突貫工事をしたもので,一応反則することなく対戦出来た。

 

 

結果は上にも書いた通り全敗である。といってもZenとAyaが相手なので相当に強化していかないと結果は同じになりそうである。一番の収穫は色々と情報を得られたこと。

過去のソフト開発の経緯や改善点,同時期のライバルなどと現状からの改善策や争点などなどである。モチベーションが上がりますなぁ。

 

 で,3人参加の全敗にも関わらず3位として表彰頂き副賞まで頂けた。次回は実のある勝負をしたいものである。

 

 ---

追記:

対戦相手ですがZenとAyaであってDeepZenでも夏風でもないのです。ノートパソコンでシングルスレッド縛りの対戦でしたので恐らく深層学習ではないモデルでしょう。

近況・雑感(日記ですし)

Kristallweizen公開後が予想以上にユーザを増やしている模様。

elmoのときと同じレベルでfloodgateには名前だけ変えたものが多数走ってる。探索深さで若干差が出る部分もあるものの基本的に同じ評価関数と推測できる。

棋士の方ではelmoの頃は一部の奨励会員などのアーリーアダプターが導入していたらしいが,現状私の耳に届く範囲ではプロ棋士を始め大半がコンピュータ将棋を研究に導入しており,その筆頭としてKristallweizenが挙げられており触っていない方が少ないくらいの感じの聞こえである。

正確な数値は恐らく内密にされている方もいるようなので調べようもない。

 

また,wcsc29に関しての問い合わせが遅れてポツポツくる感じで昨日も決勝戦でどういうことが起こっていたかの説明をしていたくらいである。

事後で気になったのは決勝戦のelmo戦で124手目の金打ちが事後の探索ではほぼ候補に上がらない手で,どうしてこれをノータイムで指したのかが検証不能となっている点である。

ちなみにHefeweizenだとこの金打ちが比較的上位に挙げられる手なので血統かなぁと言ったところ。(それでも第一候補じゃないはずなんだが・・)

そうこうして評価関数の出自を再確認してたくらい。

Kristallweizen/Kristallweizenの成り立ち.md at master · Tama4649/Kristallweizen · GitHub

思った以上によくできてるなぁと言うのとまだまだ改善の余地がありそうだってのが両方感じられる。

 

個人的にはAobaZeroを弄ってたので以上のようなチェックは後回しになっていた。

つい先ほど学習率を下げたそうである。この直後レーティングの向上が期待できる。

 

github.com

 

そろそろ面白くなってくると思っているので全力支援をしている。

丁度納入されたPCもあるので手持ちのGPUの大半を一時的に投入させている。公式サイトの数字が正しければ瞬間的な貢献率は1割を超えるはず。

支援側のバイナリは更新されていないのでまだマルチスレッドなどの高速化が施されていない。以前も書いたが軽く3~4倍程度は期待できる。

 

同時にKristallweizenがどのくらい強かったのか同マシンの空いているコアで検討してみた。

現行floodgateで流れているtest1が 定跡なしのKristallweizenである。テラショック定跡を使ったものがtest2として投入している。

test2の方が序盤で時間を使わない分,レーティングが上だと思っていたのだがどうやら違うようだ。

定跡作成に使った評価関数と対戦時の評価関数が異なるのが単純に考えられる理由だが,もしかしたらテラショック定跡に欠陥がある可能性も0ではない。(特に後手番が怪しい)

裏でGPUを回して通信しているプログラムがある分,プチフリーズなどの事故などは当然考えられる。(特に起動が遅い)

で,一応長期レートでトップクラスには居るようだ。

 

まぁ,本命は以上の負荷をかけたまま冷却系(空冷CPUファンとケースファンの心配)のテストであったのだが,無事クリアのようである。ということで近いうちにfloodgateから引き上げることになるだろう。

 

で,今後のネタなんだが前回のゲーム情報学研究会と今月のゲームプログラミングワークショップにてPonder絡みの発表を行う。今年のGPWでは将棋の対戦はないらしいので残念。

 ---

この後アクシデントでブレーカーが落ちたためにfloodgateもAobaZero応援も止まってしまってたという落ち。

 

賞金の行方

以前,電王トーナメントで賞金を頂いたときには全く想定外の出来事でとりあえず受け取っておくか程度の考えでした。予選後の飲み会で納税の話を聞いてたのが完全にフラグでしたね。

結局その後概ね開発費にあてた感じです。

 

WCSC29では準優勝で賞金を頂くことになりましたが,今年は計画的に恩返しをしようと思って関係各所に寄付することにしました。もちろんその前にチームで割ってます。

棋士会のチャリティイベントや叡王戦見届け人の件もそのひとつです。

 

  

まぁ,そのひとつがこれですわ。

私が振り込まれた直後にカンパしたのですが「Amazonギフトでカンパいただきました。ありがとうございます。」の一行がなかなか増えないので確認のメールをしただけです。公表してくれともしないでくれとも言ってませんが同様の扱いを受けると思っておりました(笑)

金額だけならプロ棋士などから寄付されていると思うのですが・・・

 

ふと,涼しくなってくるとRyzen9 3950XやらIce LakeやらCascade Lakeやらの話題で資金を気にする始末。

ちょっと運用を間違えたかな(笑)

 

AobaZeroで遊ぼう7(続・8四歩編)

bleu48.hatenablog.com

 

前々回の続編になります。

AobaZero同士の対局において,先手勝率が53%だとか54%だとかってことになってます。

これに二手目を強制的に8四歩としたところ後手勝率が7割程度となったのが上記のリンクの回です。

大雑把に言うと初手から2六歩,3四歩のときは先手が53%勝って,2六歩,8四歩のときは後手が7割勝つってことです。

これが相当異常な感じですね。

 

そして,この後学習が進んでもこの8四歩はなかなか指されない相当気持ち悪い状況です。(乱数が入って数回に一回くらい出てもいいくらいに思うのですが)

 

それで次に以下の実験をしてみました。

ちょっと改造してプレイアウト数100万まで可能なように少し弄りました。800で数秒かかりますからどのくらい大変か御想像の通りです。

初手2六歩の局面で探索開始したところ100万プレイアウトでも3四歩でした。

評価値も+100前後,つまり先手勝率やや高い状態です。

w687,w737,20190722_193305log_win500k_lr00001_wd00002_m64_iter_856000の三種の評価関数を用いましたが全て同様の結果でした。

つまり,100万プレイアウトしても8四歩にはならないようです。

 

それでは次です。

26歩,84歩の局面を100万プレイアウトしてみます。

通常対戦で後手勝率7割と出た局面です。

 

評価関数20190722_193305log_win500k_lr00001_wd00002_m64_iter_856000の場合

指し手76歩,評価値101で終了。

途中25歩,76歩,25歩,76歩と触れるが評価値は110前後

  

評価関数w737の場合

指し手25歩,評価値59で終了

途中プレイアウト4万から7万くらいで76歩が現れるがその他は25歩

  

評価関数w687の場合

指し手76歩,評価値86で終了

プレイアウト数6千台に25歩が少しあったのみ,残り76歩。

 

つまり,普通にプレイアウトする分には先手の方がよい。

通常対戦で7割が出る方がおかしい感じです。

 

前回書いたモンテカルロ法の精度の話に類するのかもしれませんが,ちょっとMCTS疑った方がいいかもしれません。

モンテカルロ法の精度の話 - 48's diary

 

ちょっとよく分からなくなってきました。

 ---

11月3日追記

その後学習率を落としたAobaZeroのw777にてp20kだと二手目84歩になることを確認した。

floodgateにも流してあるので確認して頂ければ幸いである。

魔物がこんにちは

www.eiou.jp

 

叡王戦には魔物が棲んでいる。そう云われだしたのはいつ頃でしょうか。

前記事に少し理由らしきものを書いてみましたがそれだけでもなさそうです。

そのうち河童さんが終盤の評価値ボラティリティのグラフ描くんじゃないでしょうか。

 

叡王戦予選の見届け人をやってきました。 - 48's diary

 

で,今朝の五段予選(竹内雄悟五段 vs. 都成竜馬五段)でも「こんにちは」してたようです。

 

f:id:the48:20190930134527p:plain

 

相当難しい局面ですが,悲鳴が上がった45銀に対し83手目を73銀,同金とさせてから62角と打てば先手に勝ち目があったとの計算結果です。

また,84手目56銀に対して73銀と王手しましたが,これは入れる入れないに関わらず56飛と銀を取ればまだまだ難しい局面だとのことでした。窪田先生も同飛の一手と解説されてましたね。ちなみに79玉でコンピュータ将棋的にはmate23です。

上記グラフは並のPCでざっと計算させたときのものですので,深く探索させると結構変動することを確認しています。

私の棋力では全く解説についていけないくらい難しいですね。

 

棋士の心理ゲージみたいなものも見えると面白いのですが・・・

---

補足:

やねうら王とKristallweizenで評価値が割れたとの話になってるのですが,恐らく82手目でKrisallweizenがプラス評価(先手優勢)としたものとその前後でやねうら王がマイナス評価(後手優勢)としたもので割れたとコメントが出ているようです。運営さんもスイッチングが大変ですね。

AIの定義の話

先日池袋でコンピュータ将棋関係者と飯を食う時間があった。

ちょっと出た話としてAIの定義である。

 

bleu48.hatenablog.com

 

「あれって単なるTASですよね」

「未知の局面に対応できないとAIとは言えないのでは」

 

blog読者はリアルに会うと辛いですね。blogにコメントはくれないし

 

「じゃ,84歩問題はどう?」(以下のネタである)

 

bleu48.hatenablog.com

 

二手目に84歩と指されることがないAobaZeroがその局面に対する学習が甘いので劇的に勝率を悪くする話です。

AlphaZero方式だとこういうことが発生するのは多くの人が薄々感じてたはずなので,こういう簡単な実験でその一端が確認されたのは意味があったと思います。ただ,これで次にどうするかってのが重要でね。

少なくとも未知の局面の評価には怖くて使えないってのはわかると思います。

学習局面生成だけ自己対戦でなく多くのケースを用意するとかそういう方向かなぁ。

 

まぁ,完全情報ゲームでは初手からのTASでいいんじゃないですかね?

プロ棋士もそれを序盤研究と呼んで熱心に取り組んでます。

未知の局面への対応度?それこそベテランの出番じゃないですか。将棋の一番面白いところですよ。

---

追記

TASは一般的な用語じゃなかった

ツールアシステッドスピードラン - Wikipedia

劣等感との付き合い方

twitterにもちょっと書いてたけど,時々酷いものを見るのでおっさんの余計な話。

心理学で重要な課題とされる案件なので少しかじった程度でも結構効果があると思ってる。

 

ja.wikipedia.org

 

劣等感そのものは絶対悪ではない。

そしてネット社会と言われる情報共有が進んだ状況では所謂ローカルヒーローが駆逐されつつあるため,どうしても能天気なアホでいられる時間が短い。

特に昨今のSNSではFacebookの設立動機にもあるセレブのマウンティング動作が滑稽なレベルで進んでおり,これを上手に捌くのは訓練された大人でも結構大変である。

 

Wikipediaレベルでも典型的対応策は書かれているが,理想的な対応が上手にできている人なんてのは実に稀である。それくらいに心理学は理解と実践の間に結構なギャップがある。(ここで理屈を書いても無駄ってこと)

 

多様的価値観を持った大人になれれば一番いいのですが,世の中順番をつけるのが大好きな人が多いので面倒なときは逃げましょう。

私の逃避基準だけ挙げておくので参考にしてください。

 

1.嫉みの感情を自覚したとき

SNSなど同類の情報源から遠ざかりましょう。

うらやましいと公言するのはもちろん,対象に対して攻撃的になるのは更に自分の心を傷つけるケースが多いみたい。勇気を持って見栄はやめましょう。

 

2.余計な考えが頭から離れない

体を動かしましょう。運動でも料理や掃除でもいいです。止まらないことが重要です。

若者に流行ってる音ゲーなんてのもこの類かなぁと思ってますが,淡々と30分くらい続く方がいいように思うので疲れないようなことを勧めます。

 

3.コンプレックスビジネス,逃避ビジネスが気になる

あなたは大変視野が狭くなっています。そして外から見るといいカモです。

視野を広げましょう。

金のない人は金が色々な問題解決に万能に思いますが劣等感の解決には無力です。

 

4.逃げずに勝ちたい

あなたは劣等感の塊です。冷静に自分の記録をつけてみてください。可能なら身近な観測者を用意しましょう。あなたの劣等感がプラスに働いていることが分れば問題ありませんが,よくない作用をしているようなら逃げた方がマシです。これ心理学的にも意外なことなんですが,いつのまにか勝てるようになったりします。

 

5.専門医以外で相談相手が欲しい

あー,意外と多いんですよ。劣等感と長年付き合って上手に捌けるようになった人って。

幼少期から大病を患っている方とかそういう環境でず~っと生活していますからね。

 

で,一番危ないタイプって劣等感と付き合いが少ない方です。

資産家の御子息御令嬢,若くして成功したスポーツマン・芸人・学者,絵に描いたような履歴書の大学生などですかね。

特に自力で登っていないのに高い崖っぷちに立たされた方は相当ヤバいです。受け身の経験もなければ即死がありますね。天才型ほど最初の壁で自死するそうです。まぁ,他人の助言とか聞くタイプじゃないです。

 

まぁ,敗北を受け入れたままモチベーションを維持できれば別世界ですね。