EM法に思う機械学習の勉強の話
サイコロ本を読んでいたら、ここからはEM法で求めます、と言って最終的に必要な式だけが書いてあった。 意味がわからんなぁ、と思って少し自分で考えても良く分からない。
そこでPRMLを読み直すと、ちゃんと必要な所から、特に大きなジャンプ無く一通りの説明が書いてある。 それを読んで、どういう同時確率を出してどうマージナライズするか、というのを確認してサイコロ本に戻ると、一通り理解出来る。 結局ベイズルールまで立ち戻って何を求めているかを理解出来た。
EM法ってこういう扱いされている事多いよなぁ。 例えばこの前帰りの飛行機で読んだセンテンスピースの話も、EM法で出す、と書いてあるだけであまり細かい説明はしてくれない。 EM法に慣れている人なら分かる程度の説明というか必要な式は書いてくれるのだが。
EM法ってあんまり機械学習の入門書とかでは見ないよね。結構難しいし。 でも割と出てくる気もする。みんなどうしているのだろう?PRML読んでるの?
などという事についてのどうでもいい雑談。
PRMLという本の話
PRMLはちゃんと最初から説明していくので説明は長いし、数式は多い。 そしてその間の数式の変形もいつも簡単という訳では無い。 そういう意味で、紙面の多くの範囲が比較的難しい。
PRMLのEM法のあたりが難しいのは、EM法というものが本質的には難しいからと言える。 手続きがまぁまぁ複雑で、なおかつ適用範囲が広いので記述が抽象的。 だからいまいち公式化してキレイに切り出し辛い。
一方で、サイコロ本ではEM法に当てはめるのに必要な式だけが書かれていて、その意味する事が何なのかは良く分からない。 ただ、EM法に関する記述は、各アルゴリズムの所ではほとんど無いので、解説の中のうち難しい部分は少ない。(なお終盤にEM法の解説とその適用についての文章があるが、適用側はさらっと書かれているのでやはり記述は少ない)
解説の中で難しい比率が少ないから、これは簡単な本なのだろうか? 理解しようとするなら難しい部分の解説が短いというのはより難度が高いと思うが、「なんか最適化出来るんだな、理屈はわからんが」と切り捨てられるなら、PRMLより簡単な本、と思えるかもしれない。
PRMLは結構ちゃんと途中式が載っているので、こういう分からない事があった時に、あとで見直すのに良い。 ただ一度ちゃんとやった事が無いと見ても意味不明なので、結構な時間を掛けてこの本をやるご利益の一つと言える。 ちゃんとやらずに該当箇所だけ読んで理解出来ないのがこの本の辛い所だな。
ただちゃんと同時確率から導出をやってくれるので、全ての分からない所を調べる事が出来る。 そして結局はこれが一番近道なんじゃないかな、という気がする。
EM法と機械学習の勉強についての話
EM法はまぁまぁ難しい。 最終的にはPRMLの9.4にあるような、汎関数の変分問題的な理解をする必要がある。 良く理解してしまえばそれほど複雑でも無いが、良く理解する為に必要な変分法自体が普通のプログラマには結構きつい。
機械学習の勉強、という時に、このEM法とかをどうするか、というのは一つのスタンスを明らかにするリトマス試験紙みたいな所がある気がする。
EM法はやらん、と割り切ってしまうのは一つ姿勢としてあると思う。 だがそうすると、例えば今読んでいるサイコロ本などで、長々といろいろな話をしてきていながら最終的にそれらを使って何をするか、の所が良く分からない。 それが分からないといまいち文を読むのが難しいと思うのだよな。 普通ストーリーがあって、それに沿って話というのは進む。 だが最終的にEM法で何を必要とするかが分からないと、各話題の必要性が分からないので、個々の話題を自分の中で整理して理解出来ない。 これでは個々の話題がそれなりに複雑になってくると辛い。
サイコロ本でも辛い所を切り捨てる、というスタイルは有りうると思う。 例えば今読んでいるのは文脈自由な確率的な文法で一番当てはまりの良い文法木をどう探すか、という話題をやっている。 そんな事は理解せずに、バサッと捨てる、という生き方はあるかもしれない。 必要になった時に動いているコードなどを参考になんとか動かせる程度の理解でお茶を濁す。 実際最近は文法とか流行らない。だから最後まで必要にならない事も多いだろう。
センテンスピースの話などでも「EM法で最適化する」と言う所はなんか良く分からない部分、と割り切って無視して、そこを良く分からない所ともやもやさせておいても分かる範囲での理解で生きていく。 出来ない事も無いと思うし、結構そういう機械学習屋も多いんじゃないか。
ただこの分からない部分を残して本とか論文読んでいくって結構大変なんだよな。 そっちの方が初心者向きか?と言われると微妙な気がする。 少なくとも自分はそういうの苦手で、遠回りなようでもちゃんとやっていく方が自分には楽だ。
一方でEM法とかちゃんと理解する必要がある、と考える人も居ると思う。 ちゃんと理解しておけば、どういう場合に使える手法なのかが分かる。 そうすれば、とつぜん天から降ってくるのでは無く、やりたい問題を理解していく過程で、「それならこの辺の事が分かればEM法でなんとかなりそうだな」と自分で考えられるようになる。 そう理解して本なり論文なりを読む方がずっと読むのは楽だし理解も深い。
EM法は機械学習を実際にやる時にどのくらい使われるのか?という言い方なら、 混合ガウス文法も最近は出番が減ったしそんなには出てこない、みたいな話になる。 だがサイコロ本とか何かを自分でやろう、とした時にこれらの手法が出てくる事は結構多い。 EM法知らない人向けに必要な事だけまとめてくれていれば要らないのだけれど、そんな事は誰もやってくれない。 だから自分で学んでいける機械学習屋になるには必要、という事になる。
さらにもうちょっと進んだ話を理解していくなら、変分ベイズとかその他のブースティングとかの汎関数の変分問題に帰着出来る話を統一的に理解したい、みたいな事になって、そうなると変分とか関数解析周りの修行が必要になってくる。
表層だけなぞってXXは機械学習に必要か?という話題で盛り上がるのは、あんま中身無いよな。 それよりはそこを捨てると失われるものとそれを学ぶのに必要な労力とかそういう話を聞きたい気がする。サイコロ本で結構使ってるよ、とかさ。
EM法の勉強方法とか
今改めて読むと、やはりPRMLは良く書けていると思う。 さらっと読んでも理解は出来ないけれど、ちゃんと追っていくなら結局この本をやる、というのが良いんじゃないか。 EM法自体は
一方でやっぱりqの関数を最適化していく、という部分は、通常のプログラマの前提知識を超えている気がする。 この辺、自分もまぁまぁ苦労してて、毎回わからなくなる所でもある。
変分法周辺の勉強方法っていまいち良く分からない。 自分はDOVER BOOKSのCALCULUS OF VARIATIONSの導入の部分で勉強してて、これは結構わかりやすい。 だがこの本のうち読むのが最初の1割くらいなので、その為に本を買うのもなぁ、という気にはなる。自分は買ったけど。
全体的に変分法って、なんかこう、機械学習に必要無い具体的な話題が長いのだよな。 だから本を買って最初からちゃんと勉強していこう、という気にはいまいちならない。 でもPRMLの付録の所だけとか読んでもいまいちちゃんとわかった感じもしない。
機械学習で使う最低限の事だけまとめたものがあれば良いのにね。