このブログで既に何度か言及しているが、今The nature of computationという計算理論の本をやっている。

で、現在12章のマルコフ連鎖をやっている。

マルコフ連鎖、およびMCMCは、経済学で勉強しようとして挫折したり、機械学習の仕事やるようになったあとには見ハミルトニアンモンテカルロの本を読みつつPythonで実装してみて一応使える程度の理解には到達したり、 そのあとCourseraのPGMのコースでやったり、PRMLの勉強会でそれなりに真面目にやり、さらにこの前情報理論の勉強のCover and Thomasでも結構真面目にやった。 という事で勉強するのは6回目?結構何度もやった話題で、ちょっと見飽きたくらいにはやっている。

一方でマルコフ連鎖って大学の頃、自分は一切やらなかった。生協の購買部にあったのを見た記憶はうっすらとあるので、当時から学ぼうと思えば学ぶ事は出来たと思うのだが、 あんまり必要になる事は無かったし何に使うのかも全く分かってなかった。

だが、今やってる本のマルコフ連鎖のmixing周辺のSpectral gapやconductanceなどは相当奥が深く、 ちょっと必要になったから何か一冊本を読もう、くらいでは全然太刀打ち出来る気もしない。 学問の一分野としてそれなりに豊富な物を持っている気がする。 だから大学とかでちゃんとやっておけたなら、たぶんそっちの方が望ましかったんだろうなぁ、と思う。

こういう、自分が学部の頃は別段やらなかったが最近は意外と必要となる、大学で学んでも良さそうな物って結構ある気がしてこのエントリを書き始めた。他にどんなのがあるだろう?

確率論

まず確率論。自分は大学で確率論をやらなかった。物理学実験で簡単な検定はやった記憶もあるが、その程度。 確率論の周辺の数学も全然やってなかった。 だが現在ではこれは相当いろんな所で使っているし、かなりのレベルを要求される。 一番難しい和書の教科書では不足しているレベルで難しい物を要求されることもしばしば。 確率論の重要度がここ10年くらいで変わった一番大きな要因と思う。

なんか昔はこの辺って数理統計とかで検定とかがメインな感じで、 確率論の期待値とかをじっくりやる機会があまり無かった気がする。 だが最近プログラマに要求されるのはまさにこの期待値計算周辺で、これはどこかでちゃんと勉強してないといつまで経っても分からない所に思う。 それを大学でやってないというのも困ったもんだ。

convexとかの話

convexとかの話もあまり見てなかった。convex polyhedronとか。一応幾何学という事になるのか? これは自分が新人の頃からその辺にあった話なので最近必要になった、という訳では無いが、 自分は大学でやらなかったが必要な物ではある。

convex性は関数的なより一般化した物でも結構出てくるが、自分はいまいちちゃんと分かってない気がする。 どこかでちゃんと勉強した方がいいんだろうなぁ。ただ何をやるのがいいのかね?解析?

グラフ理論と確率場

グラフ理論の回りも大学でやらなかったが結構使う。 ただグラフ理論って単体では大した事無くて良く意味が分からんのだよな。

良く使うのはやはり確率場とのつながり。 マルコフ確率場は、大学でやっておくべきだったのだが自分はやらなかった。 確率場はやっていたはずなのだが自分がやっている事を今思えば何も理解してなかった。 マルコフ確率場はそんなに難しい話では無いのだが、一度どこかでちゃんと勉強しないと良く分からないよな。 これはPGM全般に言える事だが。

グラフ理論は計算理論だと普通に三色問題とかmin cutやmax flowなど、幾つかの問題が純粋にグラフ理論なのでより直接的に出てくる。 そしてこれらの事をやっている時に、しばしば基礎的なグラフの性質を使うのだが、これはどこかでちゃんとグラフ理論勉強してないと良く分からない。

自分は会社辞めたあとにグラフ理論とかやってた時期があるはずだが、それでももう忘れてるので良く分からない。 何にせよ重要度の割にはしっかりと学ぶ機会は無かった気がする。

変分法

変分法はめっちゃ大学でも使っていたはずだが、自分は今思えば何をやっているのかを理解していなかった。 そしてここ5年くらいでめっちゃプログラマにも要求されるようになった。

変分法は本質的には関数解析的な世界観を理解している必要があるので、 ハウスルドルフ性とかの細かい事は置いといて関数空間を理解する、というのも本当は大学のどこかでやっておく必要があった気がする。

大学のころの変分法はだいたい使われ方にパターンがあって、計算は複雑だがだいたい同じやり方で計算出来るので、それさえ出来てしまえばあまり理解してなくても問題無い、 というより自分が理解しているかいないかを判定するのがなかなか難しいという状態だったと思う。 これは大学かどうかというよりは物理という専攻の特性かもしれないが。 もちろん最終的にはちゃんと理解しないと話にならないが、学部の頃に自分が理解してない、という事を理解するのは結構難しいし、自分は修士でも理解していなかった。 ただドクター持ってる人たちに聞くとみなちゃんと理解しているので、ドクター行く人はちゃんとやっている程度には身近らしい。

ただ、プログラマに要求される変分法はもっと根本的というか、使われ方は多様ででも計算は簡単、 という感じなので、計算方法を覚えていてもあまり意味が無くて、それよりも基礎的な理解だけしていれば十分、という事が多い。 こういう用途の変分法の教科書は和書ではあまり見かけないので、たぶん普通に大学でやってもダメだったとは思う。

時代の変化、分野の違い

以上には時代の流れから昔よりも重要度が増したとかそういう時代の変化的な側面と、 自分が元理論物理でそこからプログラマになったという分野が変わった結果的な物もある気はする。

ただ上記の計算理論の本とかCover and Thomasみたいな奴とか、 かなり総合的な物を要求される機会はそこそこあって、 そういうのって分からない所が出てきてちょっと調べる、くらいでは太刀打ち出来ないよなぁ、とか思う。 社会人になったあとも大学でやってないのにそういうの結構やらなきゃいけないハメになるって、学生の頃はあんまり知らなかった気はする。

関連エントリ: 要らない事をやる、必要な事だけをやる