結局、機械学習に必要な数学ってなに?

    前置き {#-}

    記事がはてぶ炎上して恥ずかしい思いをしたので、結構書き直しました。

    この記事よりも良質な記事を参考記事に列挙したので、このページをブックマーク集だとして、他のページを参照していただければと思います。

    はじめに {#-}

    機械学習を勉強するにあたって、 ベースとなる数学を勉強したいというモチベーションが高まってきた。なぜか?それは、今まで数学的な知識なしに勉強を進めていたのたけれども、論文が読めなかったり、少し数式で込み入ってくると、とたんにわけがわからなくなったからだ。

    しかし、一番のモチベーションは、やっぱり機械学習を勉強するものとしての登竜門、PRML(パターン認識と機械学習)を読みたいというものがある。

    参考記事 {#-}

    そこで、機械学習のために必要な数学を調べてみたのだが・・・どのサイトをみてもこれはというものがみつからないのだ。

    2017年現在で、有益な記事をできるかぎり集めてみた。

    なぜ、ピンとこないか?それは、分野が大きくまとまりすぎているから。

    この分野のこの知識がこの技術のここに役に立とついう、ピンポイントな記事がなかなか見つからない。

    自分の中での結論 {#-}

    結論としては、情報系の大学1,2年生で習う必修科目で十分。

    • 線形代数
    • 微分積分
    • 確率・統計

    余裕があれば、以下を選択科目として勉強するのがよい。

    • ベイズ統計
    • (凸)最適化
    • 情報理論

    勉強計画と実績 {#-}

    前提条件として、自分のバックグラウンドを書いておきます。

    一応、情報系の大学の学科を卒業した(学部卒で院には行かなかった)学生のころに得意だったのは線形代数。微積は、単位を落として2年連続でうけたので記憶に残っている項目が多い。統計は、自分はほとんどやっていない。

    大学4年の専攻は、情報理論。エントロピーとか、圧縮とか誤り訂正について学んだ。

    初級 {#-}

    まずは、大学生が大好きなマセマシリーズで、基礎固めをすることにした。

    • スバラシク実力がつくと評判の線形代数キャンパス・ゼミ
    • スバラシク実力がつくと評判の微分積分キャンパス・ゼミ
    • スバラシク実力がつくと評判の統計学キャンパス・ゼミ

    機械学習に関係のなさそうなところは流しつつ進めるという方針を立てた。

    キーワード + 機械学習で検索をかけて、検索でヒットしないところは飛ばした。具体的には、統計の検定とか、線形代数のジョルダン標準型や、重積分の体積の求め方などなど、飛ばした。

    マセマシリーズを一通りやった感想を書くと、マセマはガチ!証明をおろそかにしない。注釈が至るところに埋め込んであるので、式を追っていってわからなくなるところはない。しかし、定理、証明、定理、証明・・・という典型的なつまらない数学の本になっている印象をうけた。

    機械学習は、数学を応用するので、定理の証明はできることに越したことはないが深入りする必要はないと考えている。(このポエムに同感した)

    中級 {#-}

    • プログラミングのための線形代数

      • プログラミングのための確率統計

    プログラミングのための〜シリーズで線形代数と確率統計を学ぶ。

    このシリーズは、イメージで概念を説明する特徴がある。

    ちなみに、プログラミングの〜と書いてあるが、プログラミングはでてこない。

    さらにいうと、自分が大学一年の時に、線形代数のやつを購入して愛読していた。

    大学を卒業してから、10年近くが立ったいま、また役に立とうとは夢にも思わなかった。

    次に紹介するのは、やろうかどうか悩んでいる、オプションの本だ。

    • これなら分かる最適化数学

    すこぶる評判がよい本。機械学習の学習とは、最適化にほかならない。機械学習のキモを学べるほんだとか。

    • Pythonで体験するベイズ推論 PyMCによるMCMC入門

    PRML本は、ベイズ統計がベースとなっているときいているので、ベイズ統計をガッツリやっておきたい。

    この本は、まずコードを動かして結果を見てから理論を学習するという独特の方式をとっているらしい。

    原著は Bayesian Methods for Hackers (ハッカーのためのベイジアンメソッド)。心たぎるタイトルではないか!!

    • 情報理論の基礎―情報と学習の直観的理解のために

    一応、大学の専攻が情報理論だったので、情報理論は抑えておきたいところ。

    この本は、機械学習の観点から情報理論を扱うという独特な本。余裕があればぜひ読みたい。

    機械学習入門 {#-}

    数学の基礎が固まってきたら、そろそろ機械学習をやっていきたい。

    • Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

    この本の特徴は、なんと数式が出てこないところだ。

    数式に苦手意識があるので、まずは数式なしから、イメージとして機械学習を捉えていきたい。

    更に、この本は、scikit-learnをマスターすることができる。

    scikit-learnをマスターすれば、Kaggleに挑戦できる。よって、早いうちに読んでおきたい本として、筆頭に上げた。

    • Python機械学習プログラミング 達人データサイエンティストによる理論と実践

    中級レベル。これもコードが示されているので、理論と実装を同時に学ぶことができる。

    このあたりからKaggleをガンガンやっていきたいところだ。

    • はじめてのパターン認識

    王道。機械学習を目指すならばだれもが通る本。はじパタ本。

    機械学習の概念が数理的な側面からコンパクトにまとまっている。

    • 言語処理のための機械学習入門

    これも王道。通称、高村本。はじパタ本とならんで、機械学習入門の書として挙げられている。

    自分は、はじパタと高村本を比較した結果、高村本から入門することにした。

    なぜなら、薄いから。はじめの1/4が数学の説明で費やされているから。

    重要視されているのは、凸最適化、確率論、そして情報理論。数式の展開が丁寧。

    • データ解析のための統計モデリング入門

    これも王道。機械学習がはじパタ本ならば、統計学はみどり本。

    2つはデータサイエンティストを目指すものとしての最低ラインだとか。

    はじパタが識別モデルを扱うのに対し、緑本は生成モデルを扱う。

    ラスボス {#-}

    • パターン認識と機械学習
    • Kaggleに挑戦

    あとは、実践あるのみ。Kaggleは 早い段階から数学や機械学習の勉強と平行して、積極的に取り組んでいきたい。

    理論だけしかできない人間になりたくない。

    Coding First の精神で頑張りたい。

    めざせ、カグルマスター!!