「じゃあ統計学と関数解析と線形代数と微分積分をとりあえず勉強すればいいの?」
って思った人がいるでしょう。はい、勉強した方がいいと思います。しかし、いざ本を買って初めてもおそらく「これを学ぶ意味があるのか?、なんなんやこれ?」
「基底?ヒルベルト空間?テイラー展開?検定?」
となる気がします。実際僕は数理科三年目ですが大学で使う教科書は「まるで辞書だな」と友人と話していました。数学が得意な人、好きな人はともかく、そうでない人にとっては苦痛でしょう。そこで僕はまず数学が得意な人、苦手な人ともに「数学は一旦置いておいて、機械学習から勉強することをお勧めします。」
これはどういうことかというと、統計学などの参考書を買って始めるのではなく、機械学習で使われるアルゴリズムから手をつけ始め、そこで度々出てくる数学に対してその都度アプローチするということです。 「PCA」を例にとりましょう。結論から言うとPCAは「固有ベクトルが張るサブスペースへの射影」です。PCAに関係する数学として「線形代数」が挙げられます。なのでまずはPCAについてpdfを探すなりして勉強し始めます。すると聞きなれない言葉(固有ベクトルとか)が出てきます。その瞬間が数学を学ぶタイミングです。 なぜこの方法がいいかと言うと例えば線形代数を一から勉強し始めても全部機械学習に密につながっているわけではありません。つまり、直接関わっていないものももちろんあります。なので数学を専門としない限りは上の方法を強くお勧めします。 ではその数学を学ぶにあたっての教材についてです。僕自身ネットでの情報を教材にしていたためお勧めの本などはありません。何度もいっていますがこの問題については「キーワード pdf」や「キーワード tutorial」や「キーワード stanford」などで検索して自分にあったもので勉強しましょう。もちろん本屋さんにある本で調べても問題ないと思います。ただ数学に関してはいろんな表現方法があるので様々な情報ソースを試し、その都度自分にあったもので学習するようにしましょう。これはとても重要なことです。 実際、本よりも海外の大学のレジュメやshareslideやブログなどがとてもいいソースになると思います。そこで機械学習についてのいくつか情報源をリストアップします。- https://stackoverflow.com
- https://stats.stackexchange.com
- https://mathematica.stackexchange.com
- http://cs229.stanford.edu/notes/
- https://www.slideshare.net
- http://www.ai.mit.edu/courses/6.867-f04/lectures.html
- https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A
- https://youtu.be/PPLop4L2eGk
「OK、んじゃどのアルゴリズムから勉強したらいいんや?」
が次の疑問になりますよね。機械学習のアルゴリズムに対する学習順序を僕なりに考えてみました。 まず言語はPYTHON3(Anaconda)を使いましょう。そして「K-Means」「PCA」「Logistic Regression」の三つがはじめの壁かと思います。これらを実装できれば後のアルゴリズムは根気だと思います。(笑)一番右の「GAN」「Krigging」については詳しくまだわかってないので僕自身の課題でもあります。(汗) こんな感じで機械学習をこれから始める人に対して僕なりのアドバイスをまとめてみました。質問とかあればぜひコメントしてください。