月一でやってるPRMLの勉強会に出ていて、来週末は10章の変分ベイズ、という事で予習している。

そこで結構数学的にいろいろ詳しくなったなぁ、と思ったという話。

変分ベイズは結構いろんな要素が出て来る。 まずEM法のLが出て来る。 EM法自体がカルバックライブラーのダイバージェンスがバンバン出てくるし、変分ベイズ自体は名前のとおり変分が出てくる。

変分は使うだけならそんな難しい事は要らないはずだが、どこかである程度関数空間を操作する練習の経験が要ると思う。

ちゃんとやろうとするなら、やはり関数解析を触ってる方が良い。

自分はこの前頑張って以下のyoutubeを全部見たりしてようやく関数空間を扱う経験を多少は積めた。

Functional Analysis

変分ベイズはfactorizeの近似を入れるのが一般的と思うが、この時には独立な潜在変数での期待値の計算が入る。

期待値の計算も、基本的には簡単な積分計算のはずだが、やはり式を自由に扱ったり、その意味を解釈する時には、ベイズの計算を真面目にやった経験が要る。

自分は三年くらい前に機械翻訳とか勉強した時と、二年くらい前にMCMCの勉強した時と、去年くらいにPGMを勉強した時に大分この辺の経験は積んだ。

その前には三年前くらいにやってた測度論やエクセンダールなどの確率微分方程式の下積みなどが必要だった。

変分ベイズは比較対象としても、解釈としても、当然ガウス分布の最尤法あたりは良く理解している必要がある。 ガンマ分布とか幾つかの主要な分布は一通り触ってる事を前提とされている。

その辺の統計や多変量解析の基本的な話は、学生の頃ある程度はやった事あるはずだけど、やっぱり長くプログラマやってたら割と忘れていて、使い物になる感じでは無い。

その辺は会社辞めた後の5〜6年前ころにやった。

そしてここ一年くらいPRMLの勉強会でひたすらベイズの計算やらをやったのもやはり訓練にはなっている。

ここに並べた物たちは、会社員を辞めてフラフラするようになってから学んだり訓練した事だ。

自分は会社員を辞めた7年前の時点でも、プログラマにしては、そんなに数学が苦手な方では無いつもりだ。 だが、PRMLの10章を読んでいると、当時の自分では全く歯が立たないよなぁ、と思う。

でも今だと、かなりの部分を相当しっかり理解出来る。 幾つかの部分は本で述べられているよりも相当深く広く理解しているおかげで、変分ベイズの周辺の知識や経験から、この分野の理解のヒントとなる補助的な情報をかなり引き出せる為、記述の裏にある事まで割とちゃんと伝わってくる。

自分で言うのもなんだが、読んでいて、良くこんなのちゃんと理解出来るようになったなぁ、と、ここ5年くらいにやった事を振り返って、感慨にふけってしまう。

この歳になると5年とかって体感的にはすぐ経ってしまいがちだが、積み重ねた分はちゃんと5年分の重みを持っているのだなぁ。

以前は5年かかるような事なんて、実質出来ないのに等しく感じたが、今なら5年くらいなら現実的な期間に思えてしまい、逆に出来る事は増えたというポジティブな面がある気もする。

5年とかなんて、ぼけーっと働いているだけでも過ぎてしまう期間だからね。 なんか明らかに体感として大きく違うと感じられるのは、ちょっと良い5年を過ごせたという事なのかもしれないな。