昨日の記事を書いて、そういえば「パターン認識と機械学習」(以下 PRML) 上巻については「やってみた」「試してみた」系の記事をまとめページを作っていたことを思い出した。
- PRML 読んでやってみた(上巻編)
そして、これの下巻編を作るの忘れてたので、ここにまとめておこう。
基本的には PRML を読む中で、本当にそうなのかなというあたりを手を動かしてみて確かめてみたという内容。実装は主に R で、たまに Python + numpy を使っている。
専門でない人間がやっているわけで、いろいろ間違っているかもしれない点はあらかじめ(実際、変分ベイズのときは盛大に間違えてた)。
6章 カーネル法
5章までとはまた全く異なるガウス過程&カーネル法に苦心して、いいやとにかく実装してみよう! というもの。
記事を読めばわかるが、実装してはみたものの、あまり理解できていない(苦笑)。まあそこらへんはご愛敬。
8章 グラフィカルモデル
この章はもともと実装できるネタが少なく、せいぜいイジングモデルによるノイズ除去(8.3.3)と max-sum (8.4.5) くらいなのだが、本文抽出で使った条件付確率場でマルコフ確率場を、隠れマルコフ(13章)の実装で Viterbi を、それぞれ実装してしまったので、おなかいっぱい。
9章 混合モデルとEM
K-means と EM アルゴリズムを実装。
そして9章の章末にほんのり登場している、オンライン EM も実装してみていたり。
収束に必要なイテレーションの回数が少なく済むこと、局所解にハマりにくそうな手応え、を感じた、気がする。
- 多次元混合ガウス分布での incremental EM 更新式
10章 近似推論法
変分ベイズによる混合ガウス分布の推論を実装してみたが、実装にしょうもない間違いがあって、「混合成分が多すぎても縮退しない」という誤った結論を出してしまって、各位に少々ご迷惑をかけてしまったり。
でもおかげで知見や知己を得られて、個人的には大変よかった。
11章 サンプリング法
取り上げられているサンプリング法を、ほぼひととおり試してみている。
- PRML 11章の重点サンプリングと SIR を試す
- 多変量正規分布をギブスサンプリングで
- スライスサンプリングで単語ごとの出題率に沿って抽出
- ハイブリッドモンテカルロ試してみた。
- ハイブリッドモンテカルロをもっと試してみた
サンプリング法は正直最初なんかしっくりきてなかった。いろいろ実装しているうちになんかわかってきた気がする、という雰囲気に。
しばらくしたら「あれーやっぱりなんかまだよくわからん……」とヘコむ程度の理解度なんだけどね。まあ、理解というのはそうやってちょっとずつ進んでいくもんです(うんうん)。
12章 連続潜在変数
主成分分析を、こちらも紹介されている手法をほぼ一通り。
- PRML 12章 主成分分析を試す(棒読み
- PRML 12章 確率的主成分分析を試す
ヒマなの? いやいや、必ずしもそういうわけじゃあ。
13章 系列データ
- 隠れマルコフ実装してみた。
いやあやっぱり PRML ここまで読んだら実装してみたいよね。隠れマルコフ。
しかし、実装にはこれだけの内容をきちんと理解しなければならず、他の章の「試してみた」とはハードルの高さがだいぶ違う。
- 最尤推定(EM アルゴリズム) (13.2.1)
- Baum-Welch(フォワード・バックワード)アルゴリズム (13.2.2)
- スケーリング係数(13.2.4)
- Viterbi アルゴリズム(13.2.5)
- 複数系列を用いた学習 (演習 13.12)
- HMMからサンプリング(生成モデル) (13.2)
- left-to-right HMM (13.2)
ちょうどほぼ最後の章なので、「HMM の実装」をPRML を読むときの目標にしてみるといいかも。