機械学習・ディープラーニング初心者のためのおすすめ勉強順序

# この記事の対象者
## 記事を書く目的
AIやディープラーニングという言葉が世にはびこって久しいですが、本当に意味をわかって話している人は少ない印象です。
いまの日本のように「AIには何ができるのか」という議論がテキトーになされている状態は非常に危険だと私は思います。

なぜ、このようにAIについてテキトーな議論がなされているかというと、機械学習の数学的な基礎をみなさんがきちんと理解していないからだと思っています。

基礎的な理論を理解さえしていれば、AIには何ができるのか、今後どのように進歩していくのかを簡単に予想できるはずです。

## 対象者 & 機械学習を学ぶためにあったほうがいい知識など
この記事は、AIってよく聞くけどあんまりよくわからないなと思っているすべての人が対象です。

機械学習、中でも特にディープラーニングは、高校数学程度の知識があれば十分に理解可能です。
とはいえ、微分ぐらいは理解できた方がいいと思いますが。

さらに、多少のプログラミング知識もあったほうがいいと思います。
これから紹介していく本や動画教材は、基本的にはプログラミングで手を動かしてみながら機械学習を学びましょうというのが鉄板の勉強方法になります。

ですので、この記事対象知識レベルをまとめると、「数学的知識はほとんど仮定せず、プログラミングは読めたほうがいい」ということになります。

# 勉強方法
## 勉強方法の概要
機械学習の勉強方法としては、ディープラーニングから勉強することを強くオススメします。
世の中的には、ディープラーニングが機械学習のラスボスのように扱われている感がありますが、理解のしやすさという意味では、そんなことはありません。

確かに、ディープラーニングの登場によって、今のAIブームは起こりました。
ですが、数ある機械学習アルゴリズムの中でも、ディープラーニングの基礎となっているニューラルネットワークは非常に単純なものと言ってもいいと思います。

ディープラーニングが革命的なのだったは、
1. ニューラルネットワークの計算数（あえて曖昧な言い方をしてます 笑）を増やし（ディープにし）、
2. ニューラルネットワークに加えて少し「工夫」をしただけで、
爆発的な精度を出せたことです。

2の少しの「工夫」というのが、ディープラーニングでは肝になるのですが、この「工夫」の仕方が、①画像認識などの多次元データと、②自然言語処理などの時系列データでは異なります。

ここまで理解できれば、ディープラーニングの基礎は理解したと言えるでしょう。


機械学習全般の勉強は、ディープラーニングを勉強してからで十分です。
一番初めに、ラスボス感のあるディープラーニングが理解できれば、「機械学習って簡単じゃん」と思えますしね 笑
それに、その先の機械学習の勉強は、各アルゴリズムを理解して実際に使ってみようというのが主になるので、エンジニアでなければ不要かもしれませんしね。

下記は、私が勉強会などで発表しているディープラーニングのプレゼン資料です。
是非、これから紹介する本や動画と一緒に見て、理解を深めていただければと思います。

[『寝ながら学べるDeep Learning』](https://speakerdeck.com/ueniki/qin-nagaraxue-berudeep-learning)
[![DeepLearning_Ueno.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115709/04921d16-0aff-c36e-d68b-9b86607bd343.jpeg)](https://speakerdeck.com/ueniki/qin-nagaraxue-berudeep-learning)

それではいきましょう！

## 本 & 動画の勉強順
### エンジニアでない人にもして欲しい勉強
まず最初に読むべきは、

- [ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873117585/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3KK1Y2AGRRRY3&keywords=deep+learning&qid=1575984944&sprefix=deep+lea%2Caps%2C393&sr=8-1)
です。

これは、ディープラーニングのことを少しでも理解したいと思う人であれば必読書だと思います。
評価もめちゃくちゃ高い。
Pythonのコードを書きながら勉強していきましょうというスタンスですが、意味さえ理解できれば十分だと思います。
こちらは、画像認識のディープラーニングについて非常にわかりやすく書かれています。

ディープラーニングの基礎にある、ニューラルネットワークの概要と、画像認識のための工夫である「畳み込み」という技術を理解することが出来ます。


AIの基礎をざっくりかつきちんと理解したいというだけの目的の人は、ここでこの記事を読み終えていただいても十分だと思います 笑
それくらい一冊でディープラーニングの基礎はマスターできます。



この本を読んでからか、もしくは同時に、Udemyの

- [Pythonで機械学習：scikit-learnで学ぶ識別入門](https://www.udemy.com/course/python-scikit-learn/)

を**半分**程度（笑）流し見してください。

実際に講師の方が、プログラミングを動かしながら解説してくれるので、本格的にエンジニアリングが分かる人でなくても概要は理解できると思います。

この動画は、「機械学習とは」というところをきちんと説明してくれているので、上の本を読みつつ、こちらの動画を見てみると機械学習の概要を掴むことができると思います。

そして、この動画が、上記の本の補助教材的にいいと思うポイントは、「パーセプトロン」と呼ばれる「ディープラーニングの基礎のニューラルネットワークの基礎」技術をきちんと解説してくれている点です。
同時に出てくる「損失関数」という基礎概念の説明も秀逸です。

この辺をきちんと理解していれば、ディープラーニングもほぼ完璧に理解できたも同然です。


次にオススメなのは、上記の本と同じ著者で、同じシリーズの

- [ゼロから作るDeep Learning ❷ ―自然言語処理編](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E7%B7%A8-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873118360/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3KK1Y2AGRRRY3&keywords=deep+learning&qid=1575984944&sprefix=deep+lea%2Caps%2C393&sr=8-2)

です。
我々人間の言葉（難しく言うと自然言語）をAIが学習するための技術について書かれています。
Google翻訳やアレクサがどうやって賢くなってるのか気になる人は、ざっくり読んでみるといいでしょう。

上記の画像認識編と自然言語処理編の2つ本の内容を理解すれば、世の中のAI議論のほとんどは理解できると言っても過言ではありません。
Twitterやnewsで誰がテキトーなことをドヤ顔で言っているのかも分かります 笑




### エンジニアとして基礎的な技術を理解したい人向け

ここから先はエンジニア向けです。
少し手を動かして、機械学習の各アルゴリズムの概要を掴んでいきましょう。

- [Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎](https://www.amazon.co.jp/Python%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92-%E2%80%95scikit-learn%E3%81%A7%E5%AD%A6%E3%81%B6%E7%89%B9%E5%BE%B4%E9%87%8F%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%A8%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%81%AE%E5%9F%BA%E7%A4%8E-Andreas-C-Muller/dp/4873117984/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92&qid=1575988094&sr=8-1)


さきほどの動画[「Pythonで機械学習：scikit-learnで学ぶ識別入門」](https://www.udemy.com/course/python-scikit-learn/)と内容が被る部分はあります。
逆にいうと、この本と上記の動画を見ると、機械学習の全容が理解できると思います。



さらに下記の教材で、TensorFlowというGoogle製の機械学習ライブラリも使い始めれば、機械学習エンジニアとしての基礎はざっくりおさえたことになると思います。
上が画像認識で、下が時系列データ処理です。

- [4日で体験！】 TensorFlow, Keras, Python 3 で学ぶディープラーニング体験講座](https://www.udemy.com/course/tensorflow/)
- [【TensorFlow・Kerasで学ぶ】時系列データ処理入門（RNN/LSTM, Word2Vec)](https://www.udemy.com/course/tensorflow_rnn/)



その後は、個人の趣味に合わせて、例えば、
- [アプリケーション開発者のための機械学習実践講座](https://www.udemy.com/course/ml_for_app_developers/)
- [自然言語処理とチャットボット: AIによる文章生成と会話エンジン開発](https://www.udemy.com/course/ai-nlp-bot/)

のような少し実践的な内容の学習へと進んでいけばいいでしょう。


# まとめ

以上が、個人的なオススメ勉強順序です。
私のスタンスは、「数学的基礎もまったく理解したくないし、プログラミングも全く理解したくない」では、永遠にAIはわからないということです。
ですが、数学もプログラミングも少しは分かって、きちんと理解しようとする気合があれば、全く難しくないというのが伝えたかったことになります。

この記事が、これからAIやディープラーニングのことを理解しようと努力する人の助けとなってくれれば嬉しいです。