読者です 読者をやめる 読者になる 読者になる

Obey Your MATHEMATICS.

機械学習関連の純粋数学や実験など

ただの微分幾何学徒だった僕がデータサイエンスを何故/どのように勉強したのか

こんにちは。久々の投稿です。

僕のTwitterをフォローしてくれている方はご存知かと思いますが、4月から機械学習エンジニア/データサイエンティスト(見習い)として働く事が決まりました。


良い区切りですので今回はタイトルの通り、ただの純粋数学の学生だった僕がデータサイエンスの勉強を何故/どのようにしてきたのか、についての思い出せる範囲で書こうと思います。


Disclaimer: この記事は基本的に、"What I did" に関する記事であって決して "What you should do" についての記事ではありません。そんな勉強方法おかしいとか、こうすべきだ、みたいなマサカリは一切受け付けませんのでご了承を。ただ、最後に数学科の後輩の皆様に向けてアドバイスと言うか心構えというかそんな感じの事を書いてます。そこはマサカリをTwitterでぶん投げて下さい、と言う感じです。

§1. データサイエンス・機械学習に出会ったきっかけ

ちょうど一年ほど前、とある外資系企業から内定を頂き就職活動を終えました。元々純粋数学で博士号を取るつもりで勉強・研究していたのもあって修論の内容もこの時点でほぼ固まっており、かなり時間に余裕がありました。

そんな時ふと「一度くらい応用数学を勉強してみたい。」と言う衝動に駆られ、ミーハーな僕は数理ファイナンスの勉強をはじめました。するとこれがまたおもしろい。世の中にはこんな高度な数学が応用される世界があるのか、と。当時は確率や統計も数学科の学部の講義程度の知識しかなかったので、結構苦労しました、が、ドハマリしました。

最初に読んだ本は(記憶が正しければ)

ファイナンスのための確率解析 II (連続時間モデル)

ファイナンスのための確率解析 II (連続時間モデル)

ファイナンスのための確率微分方程式―ブラック=ショールズ公式入門

ファイナンスのための確率微分方程式―ブラック=ショールズ公式入門

確率微分方程式

確率微分方程式

共立講座21世紀の数学 (27) 確率微分方程式

共立講座21世紀の数学 (27) 確率微分方程式

Python for Finance: Analyze Big Financial Data

Python for Finance: Analyze Big Financial Data

こんな感じでした。

そんなこんなで数ヶ月数理ファイナンス、特にデリバティヴの価格決定問題を勉強していくうちに一つの疑問が湧いてきました。

「原資産の確率過程のキャリブレーションや推定はどうやって行うのだろう?ここに精度がなければ価格決定の理論もクソもないのでは?」*1

ここで出会ったのが機械学習でした。

で、元々Pythonはある程度馴染みがあったこともあってどんどんハマっていき、今となっては数理ファイナンスには全く興味がないと言った感じです。笑



§2. どのように機械学習/データサイエンスを勉強していったのか

機械学習”と言うワードを知った後、一番最初に勉強したのは神嶌 敏弘先生の

1. 機械学習の Python との出会い — 機械学習の Python との出会い

でした。Pythonに馴染みがあったのでとっつきやすかったです。その後

2. Neural Networks and Deep Learning

初めて深層学習に出会い、そして初めて最適化数学(の初歩の初歩ですが純粋数学ではまず使わない内容)を知りました。*2

この頃のモチベーションはまだ数理ファイナンスであり、超絶ミーハーデータサイエンス芸人な僕は「株価のモデリングをしたい」と思っていました。そして出会ったのが

3. Deep Learning for Multivariate Financial Time Series

です。この論文(?)を読んでいく中で知ったのが(今は廃れてしまった?)制限付きボルツマンマシンによる貪欲学習で、次の2つの論文とノートを眺めながら3.をフルスクラッチで実装する事にしました*3:

4. An Introduction to Restricted Boltzmann Machines

5. LEARNING DEEP GENERATIVE MODELS


こうやって機械学習にハマっていくうちに、段々と数学徒ならではのお気持ち:

「Deep Learningも機械学習も数学テキトウすぎ……論文読んでてイライラする……」

に支配されていきました。それが次の論文リストにつながっています:

mathetake.hatenablog.com

お陰さまで人よりちょっとは深層学習の理論に詳しくなりました。

また、深層学習だけではなく今流行の統計モデリング勢のアプローチも気になりだし、情報幾何学ベイズ統計の勉強をはじめました。その時読んだのは

ベイズ統計の理論と方法

ベイズ統計の理論と方法

Algebraic Geometry and Statistical Learning Theory (Cambridge Monographs on Applied and Computational Mathematics)

Algebraic Geometry and Statistical Learning Theory (Cambridge Monographs on Applied and Computational Mathematics)

Methods of Information Geometry (Tanslations of Mathematical Monographs)

Methods of Information Geometry (Tanslations of Mathematical Monographs)

情報幾何学の基礎 (数理情報科学シリーズ)

情報幾何学の基礎 (数理情報科学シリーズ)

こんな感じでした。




かなり短いですが、ざっとデータサイエンスや機械学習について勉強した流れはこんな感じです。

合間合間でテキトーにSVMに関する論文読んだり、漸近理論の勉強したりしていましたが、基本こんなもんです。

§3. 数学科の皆様へ

正直、真面目に純粋数学をやってきた皆さんにとって機械学習や統計モデリング使う側に*4なるのはかなり楽勝です。根気と時間さえあれば。最初は知らない用語だらけ(僕は今でも知らない単語だらけ)ですが、数学的意味や背景を汲み取るスピードには自信があると思いますのですぐに最前線まで辿り着けるかと思われます。

ただ、こっちの世界に一歩踏み出す前に、

「数学的に厳密じゃない」と言う事に固執しない

と決心してください。こっちの世界で生きていくには数学的厳密さを求めいていたら無理です。不可能。

僕はもう慣れましたが、最初はかなり苦労しました。先ほどの論文リストを作ってしまうほどに固執していました。

数学的厳密さを追い求めるばかり、誰も引用しないような定理を証明する、そんな事になっては本末転倒です。*5

データ分析・機械学習モデルの構築の目的はあくまで応用であって、数学的正しさを証明する実験ではありません。もしこれが嫌であれば一生純粋数学をやっていてください。きっとビジネスの世界では生きていけないでしょう。(と言ってもまだ僕はひよっこですが。)



ただ、数学的厳密さを求める姿勢はもたなくても、数学徒特有の、数式を見て頭の中で捏ねくり回し別のアイデアを思いつく、あの感覚は間違いなく生きます。そして、その感覚は数学科出身でない人たちに対する武器になります。

その数学的センスを武器に、目の前の人の生活や人生に影響を与えるそんな仕事が目の前に、今はそんな時代です。

是非こっちの世界で一緒に頑張りましょう。




物理出身の機械学習マンは大勢いる一方で、数学系の人は少なく、正直悔しくてこんなくだらない文章を書いてしまいましたが、少しでも何か感じ取ってくれたら幸いです。

質問等ありましたら、可能な限りで答えますので Twitter↓まで御連絡ください。

マスタケ (@MATHETAKE) | Twitter


あ、最後に一つだけ


Pythonは絶対に書けるようになってください。


まっっっっっっっったくまとまりのない文章になってしまいました。すみません。

ひよっこデータ芸人の戯言、失礼しました。

*1:この辺はちょっとマサカリ飛んできそうですが、若気の至りです。許してください。

*2:恥ずかしながら当時は勾配法すら知りませんでした。

*3:とても人様に見せられるレベルのものではなかったと思います…。

*4:研究する側になったらそれはまた別の話。測度論的確率論を数学的にきっちりやっている人はざらにいます。

*5:実際DNNのフィッシャー情報行列の特異点を一般の場合に分類しようとして一ヶ月ぐらい溶かしました。あれは時間のムダだった。