PRML 読んでやってみた(下巻編)

昨日の記事を書いて、そういえば「パターン認識機械学習」(以下 PRML) 上巻については「やってみた」「試してみた」系の記事をまとめページを作っていたことを思い出した。


そして、これの下巻編を作るの忘れてたので、ここにまとめておこう。
基本的には PRML を読む中で、本当にそうなのかなというあたりを手を動かしてみて確かめてみたという内容。実装は主に R で、たまに Python + numpy を使っている。
専門でない人間がやっているわけで、いろいろ間違っているかもしれない点はあらかじめ(実際、変分ベイズのときは盛大に間違えてた)。

6章 カーネル法

5章までとはまた全く異なるガウス過程&カーネル法に苦心して、いいやとにかく実装してみよう! というもの。
記事を読めばわかるが、実装してはみたものの、あまり理解できていない(苦笑)。まあそこらへんはご愛敬。

7章 疎な解を持つカーネルマシン

珍しく何も実装していない。SVM があんまり気に入ってないので(汗
まあでも、1回くらい実装してみてもいいかも。

8章 グラフィカルモデル

この章はもともと実装できるネタが少なく、せいぜいイジングモデルによるノイズ除去(8.3.3)と max-sum (8.4.5) くらいなのだが、本文抽出で使った条件付確率場でマルコフ確率場を、隠れマルコフ(13章)の実装で Viterbi を、それぞれ実装してしまったので、おなかいっぱい。

9章 混合モデルとEM

K-means と EM アルゴリズムを実装。


そして9章の章末にほんのり登場している、オンライン EM も実装してみていたり。
収束に必要なイテレーションの回数が少なく済むこと、局所解にハマりにくそうな手応え、を感じた、気がする。

10章 近似推論法

変分ベイズによる混合ガウス分布の推論を実装してみたが、実装にしょうもない間違いがあって、「混合成分が多すぎても縮退しない」という誤った結論を出してしまって、各位に少々ご迷惑をかけてしまったり。
でもおかげで知見や知己を得られて、個人的には大変よかった。

11章 サンプリング法

取り上げられているサンプリング法を、ほぼひととおり試してみている。

サンプリング法は正直最初なんかしっくりきてなかった。いろいろ実装しているうちになんかわかってきた気がする、という雰囲気に。
しばらくしたら「あれーやっぱりなんかまだよくわからん……」とヘコむ程度の理解度なんだけどね。まあ、理解というのはそうやってちょっとずつ進んでいくもんです(うんうん)。

12章 連続潜在変数

主成分分析を、こちらも紹介されている手法をほぼ一通り。

ヒマなの? いやいや、必ずしもそういうわけじゃあ。

13章 系列データ

いやあやっぱり PRML ここまで読んだら実装してみたいよね。隠れマルコフ。
しかし、実装にはこれだけの内容をきちんと理解しなければならず、他の章の「試してみた」とはハードルの高さがだいぶ違う。

ちょうどほぼ最後の章なので、「HMM の実装」をPRML を読むときの目標にしてみるといいかも。

14章 モデルの結合

特にお試し実装はしていない。
アンサンブルとかはもう実地で試し始めていたので、わざわざ「やってみた」しなくても、という感じ。


今、社内で PRML 読書会をしている。
そこでまた実装してみたくなったら、このまとめページにも記事追加されるかも。