機械学習に本気で取り組むためにやった数学周り 前半戦結果
2017.1.23
自分と同じようなバックグラウンドで「機械学習周辺の数学まわりの勉強をしたい」という人の助けに少しでもなれればと思い、半年間の勉強の軌跡を公開することにした。
● 前提
・数学の勉強と言える勉強は高校数学で言う所の数II・Bまでしかやってこなかった。
・数学が超得意だったかというとそういうわけではなく、まあ普通なライン。
・大学は情報系で文理一緒だけど、正直大学数学らしい数学はあまりやってこなかった。
・社会人になって以来ずっと数学コンプレックスで「大学の時もっと理系の勉強をしておけばよかった」と後悔する日々だった。
・「とにかくツールとか沢山触りまくって慣れた方が良い」という意見も沢山頂いていたのだけど、
– やはり専門の文献を読むとブワーッと数式が出て来て「うっ」となる自分が情けなく感じる経験をした
– このまま勉強しないで年をとった後に「あの時やっておけば」という後悔はしたくなかった
– 「機械学習やってます」と言うならばせめてバックグラウンドをしっかり固めて胸を張って言いたい
等様々な思いや経験が交錯して、個人的な趣向としてどうしても先に数学周りの補強をせずにはいられなかったため 約1年がかりの個人的な大プロジェクト(2016年6月〜2017年6月)として補強計画を立てることにした。
・勉強時間の平均は1日1〜2時間程度でほぼ毎日実施。休日等時間のあるときは4〜5時間程度。
● 目標とする所
・個人的な数学コンプレックスに決着をつけたい
・機械学習・人工知能周辺で採用されている各種法がどういう理屈で動いているのか分かるようにしたい
・機械学習・人工知能周辺の最新手法とか論文の数式をストレス無く追えるようになりたい
・文系で社会人でも、後天的に機械学習周辺分野の数学的な素養・下地をつくることは可能である事を証明し、そのロールモデルになりたい(意識高め)
● 2016年6月 – 2017年1月 前半戦 結果
2016年6月前半 – 数II・B復習(主に三角関数、対数、数列)
→ 黄チャート、青チャート。
三角関数は解析学勉強する上で障害になりそうだったので一緒に潰しておいた。
数列は機械学習本でΣとかΠとかしょっちゅう出てくるので丁寧にやった。
対数も機械学習本でよく出てくるので丁寧にやった。
6月後半 – 数III・C( 主に行列、極限、微積分 周辺 )
→ あまり難問とか深入りする必要はないかなと感じたのでこちらも黄チャートと青チャートくらいに。
大学以降にまさかチャート式を手に取ることになろうとは。
7月 – 解析学
→ ラング解析入門・ラング続解析入門
解析学の本としてはそこそこカジュアルで比較的やさしめ?とにかく練習問題を解いて色々な微分積分に慣れた。三角関数、対数、自然対数の微分積分とか 置換積分とか部分積分とか マクローリン展開とかテイラー展開とか。
8月 – 線形代数
→ プログラミングのための線形代数 / キーポイント線形代数
プログラミングのための線形代数は 行列がどのようにグイーンビヨーンするのか本当に分かりやすく説明してくれてとても有難かった。一次独立とかその辺りは割としっかり理解できたけど、標準形の辺りとか若干自信無いので最適化数学の勉強に入る前にまた要復習。
9月 – 確率・統計 ( 途中で挫折 )
→ 統計学入門(東京大学出版会) / 確率・統計入門(小針 アキ宏) / プログラミングのための確率・統計 / キーポイント確率統計
兎に角最初は確率論のイメージがあまりにも掴めなさすぎて色々な参考書を横断。
頭をひねって時間を費やすも、結果的に挫折(条件付き確率とか確率分布の式とかその辺りで挫折した記憶が)
9月後半 – ベイズ統計学
→ 図解ベイズ統計「超」入門。あとはWeb上の情報を漁っていた。
主に哲学的な部分。理論的な部分はベイズ更新とかナイーブベイズとかそのあたり。
2017年1月前半 – 確率・統計 再挑戦
→ 統計学入門(東京大学出版会)
紆余曲折あって1月に再開。 統計学入門を再開して撃破。
● ここまでの結果
・累積学習時間: 大体250〜300時間くらい …後半戦ではきちんと正確に記録します )
・「数学やっておけばよかった」という数年来の後悔にひとまず終止符を打てたと思う
・Σ計算、Π計算は特にストレスなく普通に解釈できるようになった
・偏微分とか特にストレスなく普通に解釈できるようになった
・尤度とかその辺りの概念も特にストレスなく普通に解釈できるようになった
・線形性のありがたみがなんとなく分かった
・対数がどれほどありがたい存在か分かった
・「こういう事象の時はこういう確率分布が応用できそう」という引き出しが増えた
・最尤推定ならびに基本的な検定とかその周りの事は理解できた
・主要な確率分布( 超幾何分布、ベルヌーイ分布、二項分布、幾何分布、負の二項分布、ポアソン分布、一様分布、ガンマ分布、正規分布、指数分布、カイ二乗分布、t分布、F分布 )はそれぞれ確率密度関数 及びどういう特徴があってどういう時に使うものなのかしっかり理解できた
・機械学習関連分野の基本的な数式は(ものによるけど)とりあえず「うっ」とならずに追えるようになった
● 思ったこと・感じたこと
解析学について
・勾配は最適化問題や機械学習で何かと出てきそうな概念なのでしっかりやっておくと良さそう。
・マクローリン展開・テイラー展開あたりは統計の勉強する時に何かと重宝する。
線形代数について
・プログラミングのための線形代数は幾何的な理解を促進する意味合いでも早い段階で読んでおくと良さげな感じがした。
確率・統計について
・母集団分布と標本分布とで使う記号が違ったり分散やら標準化変数やらが違ったりするので しっかり区別して勉強するとよいなと思った。
・ベイジアンと頻度論の二つの立場が存在していて二つの立場で手法・観点が変わってくるのは面白かったし 理解を深めておくと良さそう。
その他全体を通して
・ある分野で詰まったら別の近しい分野の勉強して戻ってくると割とスンナリ理解できたりして良かった(お互いに少なからず関連しているため)。勾配とかモーメントとか条件付き確率とか対数尤度とか。
・直交とかそういう系の話で色々な分野で何かと内積をよく使う気がするので慣れておくと便利そう
・結構複雑な数式で面食らうけど、ちゃんと順を追ってやれば 複雑な公式が 単純な公式のモデルの延長線だったりする事に気づく。逆に基礎的な部分を何となくうやむやな理解にしてしまうと後で詰まる。
・1日1〜2時間の勉強時間をつくれることが保証されているのであれば、意外と社会人を続けながらでも少しずつだけどコツコツ前進できるなと思った。
・高校数学の美しい物語←一体何十回お世話になっただろう…神。
● 2017年1月後半 – 2017年6月後半 のタスク(予定)
・線形代数の復習 (最適化数学の学習準備) ← 次ココ
・科学と証拠 読了
・統計学を拓いた異才たち 読了
・最適化数学 (凸計画問題、ラグランジュの未定乗数法とか)
・自然言語処理のための機械学習入門(書籍)
・情報理論 (エントロピーとかその周り)
・多変量解析
・PRML(ラスボス) 〜 ここまで6月末くらい目処にできれば…という感じ。
本当はルベーグ積分とか測度論とか この他にもやりたい勉強がまだまだ沢山あるけれど、社会人として時間も限られている以上 一旦理論的な部分はPRMLで打ち止めにして それ以降は暫くアウトプット中心型に切り替えようと思う。
● 余談: 2016年10月〜12月にやっていたこと
会社の方でバンバン手を動かしながら色々経験する機会を頂いていた関係で そっち方面の勉強に力を入れていた。魅力的な機会を沢山頂きつつ、要所要所で沢山サポートして下さった上司に頭が上がらない…。
以下理解・習得した内容。
・形態素解析/係り受け解析周り (neologd神)
・n-gram
・TF-IDF法
・チャットボット / 人工無脳周辺技術
・隠れマルコフモデル
・ナイーブベイズフィルタ
(機械学習というよりどちらかというと自然言語処理周辺)
Written by Nisei Kimura ( 木村 仁星 )