はじめに 前回 ハミルトニアンモンテカルロ法の実装をやった. 今回は No U-Turn Sampler (NUTS)の実装をやる. 論文を参考にした. コードはここにもある github.com NUTS ハミルトニアンモンテカルロ (HMC)はパラメータの勾配を利用して, 効率的にMCMCサンプリングを行うことができる手法だった. HMCの問題点は2つ. 更新ステップ数 を適切に指定しなければいけない. 更新の大きさ を適切に指定しなければいけない. NUTSは更新ステップ数を自動的に決定する手法である. 論文内でははdual-averaging (Nesterov 2009)を用いて決定するが,今回は決め打ちにする. 更新ステップ数L ハミルトニアンモンテカルロでは,正規分布によって発生させた運動量を与えて, ステップの間,点を動かす. 予め決められたステップの間,点を動かすので,例
![pythonでNUTSの実装 - やったことの説明](https://cdn-ak-scissors.b.st-hatena.com/image/square/d13c9b71c62e4ccaa21274744592abd97789c33b/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fksknw%2F20170806%2F20170806182057.png)