prmlを実装しました


prml(Pattern Recognition and Machine Learning)をpythonで実装しました。パターン認識機械学習, 通称prmlベイズ的な機械学習の教科書として有名ですが この本に載っているアルゴリズムを実装しました。gitリポジトリにあります。まだ完璧にすべて実装したわけではないですが、とりあえず 14章まで一通り実装し終わり、区切りがいいのでブログ記事を書きます。

f:id:hedwig1001:20211003152319p:plain
rvmでの予測


なんで実装したのか

prmlを一通り読み演習問題も文中で示されているものは解いたもののやっぱり実装してほんとうにうまくいくのかとか試してみたかったからです。 prmlは有名な本なので先人たちがいろいろと実装していますがそれを見るだけでは意味がないので自分で実装しようと思いました。

よかったこと

意味がわからなかったところがわかるようになった

ハイブリッドモンテカルロのところやRVMなどの理解が深まりました。前にprmlを読んでいたときは結局ハイブリッドモンテカルロってどうやってサンプリングするんだ??となっていましたが実装するという観点で読み直すことでサンプリングの仕方や周辺の数学的なことの理解が深まりました。

またRVMは本当に予測に必要なデータ点がトレーニングデータの10%ぐらいになっていて感動します。

numpyの仕様にすこし慣れた

numpyのブロードキャストとかの仕組みをいまいち理解していなかったんですが、この実装をしていく上でブロードキャストがどういうふうに動くかがとてもわかるようになってきました。ほかにも axis とか4次元とかになると微妙に慣れづらいところも理解が進みました。

その他副次的なこと

sphinxでdocumentをつくったり, docstringの書き方やライセンスの種類などをほんのちょっとだけですが知ることができました。

f:id:hedwig1001:20211003152831p:plain
ハイブリッドモンテカルロによるサンプリング

展望

ニューラルネットワークの章はまだ十分ではないと思うのでそのあたりといろいろとうまくいっていない実装があるのでそのあたりを直したいです(EP法, ロジスティック回帰の混合モデル など)。


終わりに

ちょっと数学的に面白いと思ったところや工夫ポイントは別の記事に書こうかなと思っています。