競技プログラミング
今日の一問。木DPはよくわからないままになんか解けているという感じ。
将棋
王座戦がめちゃくちゃ熱かった。どっち応援するか決まらないなと思いながら観始めたんだけど、最終的にはどっちかというと王座の方に肩入れする気持ちが生まれていた気がする。負けてしまったけど観てて面白い対局だった。
コンピュータ将棋
どうもガウシアンノイズでは上手く行かないのでとりあえずディリクレノイズを実装してみた。分布同士の各要素について内分を取ったものもちゃんと分布になってるのは計算で確認したが、数学的直観が貧弱すぎてこれをパッと把握できない。各要素にガウシアンノイズを入れてまたsoftmaxをかけ直すということをやっていたんだけど、これはそんなに悪いことなんだろうか。
std::vector<double> MCTSearcher::dirichletDistribution(int32_t k, double alpha) { static std::random_device seed; static std::default_random_engine engine(seed()); std::gamma_distribution<double> gamma(alpha, 1.0); std::vector<double> dirichlet(k); double sum = 0.0; for (int32_t i = 0; i < k; i++) { sum += (dirichlet[i] = gamma(engine)); } for (int32_t i = 0; i < k; i++) { dirichlet[i] /= sum; } return dirichlet; }
とりあえずこんな感じ。基本的に山岡さんのブログをパクっただけです。
PRMLはいったん置いておいて、『ベイズ推論による機械学習入門』の方を読んでみる。ディリクレ分布自体の項目というより、一般的にパラメータに関する事前分布について書いてあるところをしっかり読んだ方が良さそう。パラメータについての分布っていうことで、多少は理解できてきたかもしれない。
さてパラメータの決定。AlphaZeroの論文には
Dirichlet noise Dir(α) was added to the prior probabilities in the root node; this was scaled in inverse proportion to the approximate number of legal moves in a typical position, to a value of α = {0.3, 0.15, 0.03} for chess, shogi and Go respectively.
とあるが、このαの値が何を示しているのかがよくわからない。将棋の平均合法手は60とか80とか言われていた気がするけど探しても上手く見つからない。0.15の逆数は6.66とかで、一桁違えば納得感もあったんだけど……。
Wikipediaを読むと
ディリクレ分布の確率密度関数は、同時に発生することのない個の事象がそれぞれ 回発生したときに、各事象の起こる確率がである確率を与える
とあり、-0.85回発生するとしたときのパラメータの分布? 何を言っているのかわからん……。
しかしノイズのかけかたとかそんな話ではなくもっと根本的なところが間違っている気がするなぁ。
あとUCBを計算するときのボーナス項の分母も+1では大きすぎなように思えて、+0.000001とかにしないの? とか思ったけど、それだと全幅探索っぽくなってしまってMCTSの良さが失われるのかなぁ。
学習が進むにつれて1回の学習における勾配が増えているのも気になる。そういうものだったかなぁ。
なにもわからないし実装も上手くいかなくててつらい思いをする時間が長い。研究ってそういうものって言われればそうなのかもしれないけど。
再現にすら成功しなくてアイデア試す段階にたどり着かないじゃーん。
1年前の日記
当たり前だけど1年前はデレステ2周年記念でいろいろやっていて寂寥感がある。
デレステ
とりあえず親愛度をMaxにして、気分としてはリザルト画面。
ダークソウル
鐘のガーゴイルと月光蝶を倒した。しかしここからいきなり難易度上がった感じがあるな。強盗団もオオカミも見張り塔地下のキャラクターも倒せる気がしない。どこからやっていくのが正解か……。
どうでもいいけどダークソウルやっているとめちゃくちゃ独り言が出てしまう。いやーなんかもう最近は歩いているときとか研究室ないでも結構出てしまうので気を付けたい。
その他
Twitter、見たいアカウントをブラウザのブックマークに突っ込んでおくという状態にまで降りてきた。しかしログインしていないとリプライを含む欄は見れないらしくてひどい。
今日は研究室に誰も来なくて、なんかめちゃくちゃ眠かったしやる気も出なくて早く帰ってゲームしたり将棋観たりプロ野球観たりしていた。そういう日もある。