とある京大生の作業ログと日々の雑記

コンピュータサイエンスについて学んだことを可視化したり日々の雑記をまとめてます。

PRML読み終えたので書評を

こんばんは、コミさん(@komi_edtr_1230 )です。




タイトルの通りPRMLを読み終えましたので書評をば、という感じでブログを書いております。




さて、色々感想とか読み直すに至ったきっかけとか感想、今後の展望とかをざざっと書いていこうかと。



前に読んだとき






前回読んだのはだいたい1年くらい前なのかな?ラボにあったやつ(日本語版)を流し読みしてた。




ただまあそのときはしっかり読んでなかったのと、割と統計学線形代数の理解が曖昧だったので正直に言ってしまえば「読めたつもりになってた」というのが正確かも。




そのときは他にもやることがあったし、とにかく統計的機械学習について簡単に知っておくべきという思いからかなり焦りながら読んで、実際に表面上のことしかわかってなかったんですよね。



きっかけ






で、そんな中途半端な理解だったんだけど、年明けからシドニーに本社を置くスタートアップでデータサイエンティストとして働く(インターン)ことがつい2週間前に決定して、「これは機械学習の基礎固めておかないとやべえな、現場でやられるわ」と思い、PRMLの読み直しをその場で決意。




日本語版のを読みたい気持ちがあったものの、そういえば今スイスにいて日本語版の書籍なんか手に入るはずもなく。てか高いし。




一応原著のPDFは無料で拾えるから、英語の勉強も兼ねてこれを読んでみよう、と。




そこから結構早いペースだったけどだいたい1日10時間くらいかけながら1日で1章ずつのペースで読み進め始めました。



感想






さて、感想を。




端的に言うと




めちゃくちゃしんどかった。




いやもう何がしんどいかって、そんな簡単に行列の微分とかできないし、それでもって行列の分解とかしまくるし、「数学の基礎?そんなの知ってて当たり前じゃん」と言わんばかりの式展開のオンパレード。




情報理論とかKLダイバージェンスの知識を使っての確率分布の評価と最適化とか、いや知らんし。




こんな感じで死にかけてたのに説明は英語で、てか英語そこまで得意じゃないから理解も難解。




自主的な勉強でPRML読んでるのになぜか常に死にそうな感じだったなぁ....



章ごとの感想






とまあご覧の通り死にかけてたんですけど、ちゃんと10時間以上かけてやってたわけで、一応各章も読み込んだし部分的に演習問題もやったんで感想に行きましょう。



1章






イントロダクション。




イントロと聞けば基本的に優しいイメージを思い浮かべるだろう。ぼくも思い浮かべていた。




最初は機械学習パターン認識についての簡単な説明。過学習の例などを出しつつ確率の基礎的な話をはじめとして割と優しい。




案外すっと入ってくる。




しかしPRMLはその後から「ヒャッハー!待ってたゼェ!よく機械学習の沼に来たなァ!!」と言わんばかりに牙を向いてくる。




まるで赤ずきんちゃんでおばあさんに擬態したオオカミが最初は「おやまあ、よく来たね」と言いながらもその後に「お前を食ってやる!」となるようなものである。




実際のところ、ぼくは食われることになる。




そう、PRMLのお得意のベイズ的解釈に。




過学習などの話をベイズ的に解釈し、まだベイズ的な思考法が整っていない段階では少々厳しかった。




ちょっと慣れない思考法でくたばっていないところで最後にKLダイバージェンスを導入するための情報理論と情報エントロピーの解説が現れる。




もうだいたいこれで初学者はほぼやられるだろう。




最初は「前に読んだことあるし1日1章ペースで進めるぞ!」と思っていたのに土曜の朝から1章を始めて、それを終えた頃にはあたりは真っ暗、あまりのしんどさに精神はボロボロ。




「これで乗り切れるのか....?」と心配になったスタートダッシュであった。



2章






ここでは様々な確率分布の解説が入り、今後ずっとお世話になる最尤推定の話などが出てくる。




何が脅威かって、ベクトルや行列で微分しまくるのである。




もちろん、ここでベイズ的解釈で事前分布や事後分布などわんさか出てくる。




「キャパオーバー」このときほどこの言葉が似合うシチュエーションはないだろう。




ひたすら計算しまくった。




このとき、この計算があとになってプラスに働いてくることにぼくは気づいてなかった。



3章






線形回帰の章。




しんどいと思われたのも束の間、案外スルスル読み進められる。




そりゃ線形回帰だし。




しかしそれ以上に1章と2章でボロボロに傷つけられたメンタルは超回復しており、同時にベイズ的な解釈が身についていたため、かなりスッキリ読める。




ちょっとここからPRMLが楽しくなってくる。



4章






ロジスティックなど。




3章の内容に基づいて拡張しまくる。




ロジスティックは機械学習をやるのであればお世話になる手法であるので、3章と4章は特に読み込むことをオススメしたい。



5, 6, 7章






ニューラルネットとかカーネル法について。




正直、ここの章についてはあまり説明が好きではなかった。




というのも、ニューラルネットについてはベイズ的な解釈に偏りすぎていて、前までニューラルネットを振り回しまくっていた身としては古典的すぎるような気がするし、あとCNNとかの説明が弱い気がした。




カーネル法についても、SVMとかRVMについて語るのであればもう少し説明があった方が良かったように思う。




他の書籍を参照できるのであればこの章は飛ばしてもいいのかなぁ....?



8章






PRMLはなんの本か」と聞かれれば、「機械学習の本」という説明よりも「機械学習に重きを置いた統計学の本」という説明がベストな気がする。




というのもベイズベイズしまくっているためである。




しかしこのベイズも悪いことではなくて、相応に学びもある。




8章のグラフィカルモデルはそれを象徴する章であろう。




いろんな人も言っていたことで「グラフィカルモデルにこそPRMLを読む価値があるらしい」が、実際にそれは間違っていないように思う。




今までずっとベイズベイズしていたものがグラフ理論と重ね合わさってものすごく有用なものになる。




そんな気がしたPRMLの折り返し。



9章






K-meansに始まって、EMアルゴリズムの話がメイン。




この章も読むべきだと思った。




PRMLは主にベイズ最尤推定をメインに話を展開していく傾向があるので、期待値最大化についてのゴリゴリ解説したこの章はPRML的にかなり意味合いが大きいと思う。




一読あれ。




あとK-meansの解説の図がすごいわかりやすい。



10章






いやー計算しんどかった。




線形回帰などにガウシアンを仮定して、掛け合わせては微分、期待値をとって細かく計算するなどハードなお仕事の連発。




この章の計算ができれば機械学習に関して自信持っていいんじゃないかな、マジで。



11章






サンプリング法の話。




まあなるほどなぁって感じ。



12章






ひたすらPCA(主成分分析)をやってく。




まあ行列の固有値がわかれば大丈夫だよ、多分ね。



13章






今までは静的なデータ解析だったけど、時系列データ解析へと拡張する。




そのために隠れマルコフ過程とかめっちゃやるし、天気予報とかでよく使われるカルマンフィルタの解説もする。




この章は時系列データ解析とかに興味ある人(自然言語処理とか)は読むべきかなぁ。




あと解説にグラフィカルデータの話がよく出てくるのでこの章に入る前に8章をもう一度さらっておくべきかも。



14章






なんか他の章に比べて異常なくらいあっさりしてる。




ロス関数の話とかブーストの話が登場する。




ただ、なんかあっさりしてるから他の本で勉強した方がいいかも。



まとめ






計算がえげつなかった。




ただまぁ事前分布とか事後分布の考え方はこれでもかってくらいに身につくから、PRMLはインチキ機械学習erを抜け出すには最高のツールだと思う。




あと数式の計算能力も底上げされると思う。




最初は心が折れかけたけど、やってものすごい達成感があるなぁ....




もう二度とやりたくないけど。



今後について






一応PRMLを読み終わって多少は自信がついたかも。




ただ、カーネル法とかニューラルネットについての解説が浅かったイメージがあるので、そこらへんについてはカステラ本とかで勉強し直そうかなぁって感じ。




来年からシドニーで本格的に勤務だからもう少し機械学習や実装能力について基礎を底上げしておきたい....




とりあえず、約700ページもの鈍器を原著で挫折せず読み上げたのはかなりの自信になってるので、今後も他の本に挑んでいくつもり。




あと英語力もかなりついた!



余談






この前なんとなくScalaを触ってみたらちょっと良さげだったので、Scalaの勉強を始めてみようかと思ってる。




せっかくScalaの生誕の地であるEPFLに留学をしているわけだし....




今後もがんばります!