対象読者
- とりあえずスクリプト言語の経験がある
- 高校まで数学の勉強していた人
- これから機械学習、とりわけディープラーニングを学んでいこうとしている人
前置き
非理系のための勉強法は下記のブログが有名かと思います。
自分も上記ブログを参考に勉強を行ってきました。
しかしながら、改めて自分の勉強を振り返ってみるに、よりよい勉強方法を提供できると思いましたので、ここに記しておきます。
機械学習を学ぶにあたって必要な知識
機械学習を学ぶにあたっては、下記の3つの知識が必要になってきます。
- 数学
- 機械学習
- プログラミング言語
機械学習の理論を学ぶために数学の知識が不可欠であり、その理論を実装するためにプログラミング言語が必要になってきます。
数学
数学に関しては、微分、線形代数、統計の知識が必要になります。
下記を一通り学べば、最低限、必要な数学の知識はつくかと思います。
- わかりやすい経済学教室 ぴーすけ講座(サイト)
- 線形代数 行列と行列式 (大学入門ドリル) (書籍)
- 線形代数 ベクトルと固有値 (大学入門ドリル)(書籍)
- 図解・ベイズ統計「超」入門 あいまいなデータから未来を予測する技術(書籍)
-
マンガでわかる統計学 素朴な疑問からゆる~く解説
(書籍)
機械学習系
これまで様々な書籍やサイト、動画、スライドなどを見てきましたが、まずは下記の書物を学習していくと良いと思います。
- はじめての機械学習(書籍)
- ITエンジニアのための機械学習理論入門(書籍)
- 深層学習(書籍)
一応、日本で一番技術系の書物が揃っていると言われる新宿図書館の紀伊国屋書店で全て立ち読みしたりもしてきたので、書物に関しては、上記以上に分かりやすいものは現在ないのでは?と思っています。
(機械学習系の書物はどんどん出てきているので、出版情報は常にウォッチしておくことをお勧めします)
プログラミング言語
python、c++のいずれかの知識が必要になります。
機械学習系のブログはほとんどpythonで記載されていますし、ライブラリやフレームワークはpythonとC++で記載されています。
しかしながら、まずはpythonを学ぶと良いでしょう(※)。
- 普通に記述するならpython
- プログラムを高速化したいのであればC++
だからです。
pythonに関しては、python + numpy + matplotlib を学ばなくてはなりません。
numpy・・・行列演算ライブラリ
matplotlib・・・グラフ描画ライブラリ
これらはほぼほぼセットで使用されます。
(※)pythonではなくmatlab/octaveでもよいかもしれません。研究機関では必ず使われていますし、上記のpythonのライブラリはmatlabを理解していれば簡単に理解し使うことができます。
matlabに関しては「最新MATLABハンドブック」をお勧めします。
勉強の心構え
機械学習は気軽に勉強することができません。
難しい式や専門用語の連続できっと心が折れるでしょう。
そこで、心を折れなくするための心構えを紹介しておきます。
概要を捉えてから細部を理解していく
他の人が書いた大きなプログラムを理解していく時と同じで、大から小を理解していくことは効果的です。
- まずは言葉で意味を理解し、そのあとに、式を理解していく
- ところどころ式の変形の意味がわからないけど、気にしない
その時その時では大雑把な理解でも、量をこなせば理解していけます。
機械学習系の情報はたくさん揃ってきているので、とにかく量をこなせば、部分的な理解を補っていくことができるはずです。
言葉への抵抗をなくす
機械学習系の書物などを読んでいると、必ず、複雑な数式や記号、よく分からない専門用語に接することになります。そうすると、読むこと自体が辛くなってきて機械学習に拒絶反応していくことになると思います。
まずは読み方を調べて発音できるようにするところからスタートしましょう。
これで言葉への慣れが生まれ、そんなに文章を読むのが辛くなくなっていきます。
それで文章をまずは読み、全体感を把握していくことができると思います。
とりあえずソースを写経する
ソースから理解の促進が図られる時もあります。
書物を読んで意味がわからなかったら、ブログなどを参照してソースを写経してみましょう。
もちろん処理の流れを理解してから行わないと意味がありませんが、はじめは数式の意味は理解できなくても良いでしょう。
これも概念や言葉への抵抗をなくすことにつながります。
サイト紹介
最後に勉強の際に参考になるかもしれないサイトを紹介しておきます。
以上