unyugo諸元(1)

CGF2012参加者の皆様お疲れさまでした。(って遅いわ!)

うにゅう碁(unyugo)は初参加でまずまずの結果を残すことができました。

名前はGNU Goのパクリです。宇宙流とは関係ありません。うにゅほとも関係ありません。

ほかのソフトのコードはなるべく見ないようにしてます。

会場では何となく「作り始めて2~3年」と言ってしまいましたが、きちんと振り返ってみます。

続きを読む

一時的にVPSが2契約体制

だったりするわけですが自制しましょうね>自分。

・「相手の手の近傍という特徴の最適値」はあまり変化ないみたいでした。

・代わりに3x3が空っぽなパターンの最適値が変化するのかもしれない、それとも相手の手の近傍と相関があって同時に動かさないといけないのかも…

emacsのC-kとC-yの代わりにC-SPC、C-w、M-x yankをおぼえた。

・バージョン番号をきりのいいところまで上げてCGOSに投入。

・自己対戦での強くなりっぷりに比べるとおとなしいなーこの内弁慶め。

・試合内容を見てみると明らかに「相手のアタリ連を取ることで自分のアタリ連を救う手」(を特徴化していないのでそういうのが絡む進行が2Kpo/moveじゃほとんど読めてないんだろうなという感じ)の問題。

・パターン部分更新のsoftmax的な扱いにこだわらなくてもいいんだよなーすでに別扱いの特徴もあることだし。とりあえず枠はgreedyにするか。コードのイメージがもわもわ。

・でも取らずに逃げるのが最適な場合もある気がするの。うーむ、…色々試すしか。

・CGFオープンは10月ですかー。

悪くないよ

ツイッター始めました。ブログとの連携とかよくわからないので追々。

・コードのバグとかハマりとかはツイッターでいいかな

・playout用とUCT用のパターン分離完了。

・UCTの結果をMMしてUCT用のパターンにしたら無事ちょっと強くなりました。

・手作りパターンから写し取った特徴値と↑のUCT用パターンの特徴値を掛け算してplayout用パターンにしたらまあまあ強くなりました。(UCTの結果で常にダメなパターンはplayoutで打つ必要ないだろうからANDをとってやれという意図)

・↑のような検討は続けても早晩行き詰るだろうから学習を

・しかし時期的にいってマルチコア対応のめども立てないと

・特徴値が大きくなるとやっぱり止まるなあ…

・GW後半は旅行に行くのでSSHで計算状況を見守るだけになります。お題は「相手の手の近傍という特徴の最適値は盤面の大きさに依存するか(ほかはいじらないとして)」

WS020SHからPuTTY経由Emacsを使おうとするとC-kとかC-fとかが食われて不便なんです。代替手段…key-bindingsをなんとかすればいいんですよね

・あ、さくらVPSの新コースに移行しないと

どれだけ時間をかけてるのかと

・手作りパターンの着手の確率が特徴値の掛け算になっていないところを漸次改修中。弱くならないようにしようとしてつい時間をかけてしまいます。0.4.6から現在60点くらいアップ?

・学習対応用の3x3パターン処理の準備OK。場合分けと重ね合わせに関して手作りパターンとは一部非互換なので写し取るのに工夫が必要でした。ほぼ同じ強さで移行できそうな感じです。

・特徴値が大きくなったり小さくなったりして盤面全体の合計が32ビットに収まるのか不安になってきたので一部64ビット化。

・手作りパターンでplayoutしてUCTした初手の最善手をMMで学習した結果をplayoutに使うと超弱くなります。もう1サイクルやるとちょっと強くなりますが元の手作りパターンには全然届きません。多分バグじゃないです。もとのplayoutからインクリメンタルに学習(方策勾配法?)するしかなさそうですね。

・いよいよplayout用のパターンとUCT用のパターンを分けないと…とりあえず両方3x3でいいや

おひさCGOS

思いのたけをUMLにぶつける

実際のところは仮想関数回避してみる

なんか遅いと思ったらディレクティブをミスって先祖がえりしていた

ほぼ同等の速度が出た

スーパーコウ実装、パスによる同形反復はとりあえず例外扱い

続きを読む

コード整理

2011/11 一年ぶりに再開

playoutの機械学習はしばらくお預け

リハビリがてらコア部分の見直し、コアは10%くらい高速化

nested Monte-Carloみたいなこともできるようにコード整理

それはそれとしてplayoutのコード見直し

続きを読む