こんにちは!
消費財メーカーでデジタルマーケ&データサイエンティスト的なお仕事をしているウマたん(@statistics1012)です。
最近はどっぷりディープラーニングに浸かっています。
ディープラーニングってなんだか難しいイメージがあるかもしれませんが、案外シンプルでそんなに難しくないんですよー!
この記事では、そんなディープラーニングを初心者がある程度のレベルまでマスターするまでの学習ロードマップをまとめました。
理論と実装の2つの視点から見ていきましょう!
目次
ディープラーニングとは

さて、まずはディープラーニングとは何なのかカンタンに見ていきましょう!
得たいの知れないモノの正体をクリアにしていくことで学習へのハードルがグッと下がりますよー!
実は、ディープラーニングの原型は1940年代から存在していたと言われています。
1940年~1950年にかけて人間の神経を模した仕組み「ニューラルネットワーク」が確立されました。
人間の神経が信号を伝播させていくようにある入力を次の層へと重み付けをして伝播させていき出力を求めます。

この層を多層にしていくのがディープラーニングなのですが、当時のマシンパワーでは計算量が膨大過ぎて実現不可能でした。
計算負荷を軽減する誤差逆伝播法(バックプロパゲーション)などの計算手法の登場やマシンパワーの増強により現在に至ります。
そんな計算負荷の問題が解消され深層ニューラルネットワーク(ディープラーニング)が日の目を浴びたのは2006年。
このブレークスルーによって再びAIのブームが巻き起こり、第3次AIブームへと突入していくのです。
意外とディープラーニングの原点は古く最新の複雑なアルゴリズムではないということを覚えておいてください!
ディープラーニングに関して詳しくは以下の記事をチェック!

ディープラーニングで出来ること

さて、ディープラーニングの全体像が分かったところで、どんなことが実現できるのか見ていきましょう!
画像識別
ディープラーニングと言えば、画像認識!!
Mnistという手書き文字を実際に分類してみたコードを以下に載せておきます。
Mnistは「Gradient-based learning applied to document recognition」で用いられたデータセットであり、現在でも多くの論文で用いられています。
Modified National Institute of Standards and Technologyの略であり、0~9の数字が手書き文字として格納されているデータセットです。
学習用に60000枚、検証用に10000枚のデータセットが格納されています。
詳細は省きますが、最終的にテストデータに対して96.96%の精度を算出することができました。
なかなか判別の難しい手書き文字も入っているのでなかなかの精度。
以下の記事で詳しくまとめています。

文脈を読み取る
また、ディープラーニングを用いて文章を予測したり文脈を読み取ることが可能です
ここで登場するのがRecurrent neural network(再帰型ニューラルネットワーク)。
RNNと略されて呼ばれます。
RNNを用いて時系列問題を解いてみましょう!
使うデータセットはKaggleのホームページが落とせる航空会社の乗客数データ!
1949年から1960年までの月別乗客数がデータとして入っています。
149行2列のシンプルなデータセット。
1変数の時系列データを基に過去のデータから未来の値を予測します。
この時、tflearnというライブラリを使ってRNN(正確にはLSTM)を実装していきます。tflearnはkerasと似たようなライブラリでディープラーニングの実装が感覚的に容易にできます。
実際にモデルを構築していきましょう!
最終的な評価はRMSE(Root Mean Square Error)で算出しています。
RMSEは0.10079201となりました。
それなりに良い予測ができてる!
RNNについては以下の記事で詳しくまとめていますのでチェックしてみてください!

ここでは一部だけ取り上げましたが、ディープラーニングで出来ることはもっともっと幅広いんです!
ディープラーニングで出来ることをもっと知りたい方は、以下の記事をチェックしてみてください!

ディープラーニングの学習ロードマップ

さて、ディープラーニングの全体像・出来ることが分かったところで本題に入りましょう!
ディープラーニングをマスターするためには、どのように学習していけばよいのか。
CNNでの画像識別が出来るところまでを目指します。
ディープラーニング学習は、以下の4ステップ!
Step1:基礎固め
Step2:ディープラーニングの概論
Step3:ディープラーニングの理論
Step4:ディープラーニングの実装
それぞれについて具体的に見ていきましょう!
Step1:基礎固め
ディープラーニングをしっかり学んでいくためには、まず
・基本的な統計学の知識
・機械学習手法の理論
・Pythonスキル
が前提として必要です。
この3つの最低限知識・スキルを固めず、ディープラーニングを学習しても効率が悪いですし頭デッカチになっちゃいます。
遠回りに思えるかもしれませんが、しっかり順を追って学ぶことが後々効いてきます。
それぞれについては以下の記事を参考にして学習を進めてください。



この時に注意して欲しいのが、「統計学・機械学習の知識」と「Pythonスキル」は切り分けて勉強するのではなく並行して学習を進めていってください。
そうすることで理解が深まり効率が高まります。
知識だけ入れてから・・・と進めると挫折します。
Step2:ディープラーニングの概論
さてさて、基礎固めが出来たらディープラーニングの理論と概論に移りましょう!
まずディープラーニングの将来性や現状・そしてどのようにビジネスに活用されているかについて学びましょう。
ディープラーニングはあくまで手段です。
ディープラーニングを使って何がしたいかを明確にしておかないと学習効率は上がりません。
ふわっとしていても良いので、Step3に進む前にディープラーニングを学習した先に目指すものをつくりましょう!
たくさん書籍が出ていますが、以下の2つが個人的にはよかったです。
(2021/03/03 02:58:07時点 Amazon調べ-詳細)
東大の松尾教授は、日本のディープラーニング第1人者。
ぜひチェックしてみてください。
Step3:ディープラーニングの理論
概論のイメージを膨らませたら続いては本格的な理論の学習に入っていきましょう!
ディープラーニングの理論の学習には書籍がもっとも適しています。
名著「ゼロから作るディープラーニング」!
(2021/03/02 16:00:43時点 Amazon調べ-詳細)
この本に出会いディープラーニングの魅力に取りつかれました。
パーセプトロンの話からニューラルネットワークに入り、そこからCNNまで解説しています。
タイトルの通り0からアルゴリズムを組み立てていき、Pythonで0からコーディングしていきます。
とにかくめちゃくちゃ分かりやすいです。
必読の1冊。
理論はこの1冊読んでおけば基本問題ないです。
また、「ゼロから作るディープラーニング②」では、自然言語処理の領域に利用されているRNNについて詳しく解説しています。
少々レベルが上がりますが、興味のある方は読んでみるとよいでしょう!
ディープラーニングの書籍を以下の記事でまとめていますのでチェックしてみてください!

ビジネスサイドからディープラーニングの活用を学べる書籍も紹介していますよー!
Step4:ディープラーニングの実装

理論のStepでは、ディープラーニングがどんなアルゴリズムで動いているかを理解するためにゼロからPythonで実装してみましたが、実際の場面でゼロから作り上げることは多くありません。
実装するだけなら便利なライブラリが用意されていてライブラリを呼び出すだけで実装が可能なんです。
ライブラリ実装によるディープラーニングはオンラインスクールもしくはオンライン動画で学習するとよいでしょう!
オンラインスクールはいくつかありますが、Techacademy(テックアカデミー)のAIコースを受講してみてパーソナルメンターのクオリティが高かったのでおすすめです!
このコースでは、機械学習の初歩的な内容からCNN(畳み込みニューラルネットワーク)の実装まで学びます。

教材のクオリティは高くないので先ほどの書籍「ゼロから作るディープラーニング」と並行して進めるのがオススメです。
また、オンライン学習サービスのUdemyに多くのディープラーニングコースがいくつかあるのでぜひチェックしてみてください。

例えば、以下のコースなんかはGAN手法を使って、存在しない画像を新たに生成していきます。

ゴッホのスタイル変換を実際にGANのモデルを組んで実装していきます。
通常の写真にゴッホのスタイルを入れるなんてことが、ディープラーニングを使えば出来ちゃうんです!

(引用元:https://github.com/jcjohnson/neural-style)
CNNについて学んだあと、さらにディープラーニングを深く知りたい場合こちらのコースを受講してみると良いでしょう。
また、ディープラーニングを使ったWebアプリケーションを作成していくカリキュラムもあります。

当サイトでもFlaskでWebアプリケーションを作り込む記事を公開していますが、Flaskは非常に簡易的にWebアプリケーションを作れるPythonのフレームワーク!

そんなFlaskを使って画像分類のWebアプリケーションを作っていきます。
さらに最終的にはXcodeでiOS化も行っていくという盛りだくさんのコース。
ディープラーニングとFlaskでの開発を同時に学べるお得な内容になっていますよー!
FlaskはDjangoよりも簡単に実装できるWebアプリケーションフレームワーク。
以下の記事で2つのフレームワークを比較していますので目を通してみてください!

ディープラーニングの学習をしっかり集中的に行うのであればプログラミングスクールもオススメです。
以下の記事でまとめているのでぜひチェックしてみてください!

ディープラーニングの学習で注意すべき点とアドバイス

ディープラーニングの学習ロードマップ、無事進められそうでしょうか?
最後に学習をしっかり完遂し初心者脱却するために注意すべき点とアドバイスをまとめておきます。
学習の一助になれば幸いです。
ディープラーニングで最終的に何がしたいかを明確に
ディープラーニングは手段でしかないので、ディープラーニングを学習した先の目的を明確にしておいた方がよいです。
目的はささいなことでも実現難しそうなことでも何でもよいと思っています。
他の機械学習手法と比較すると良い
当サイトでは、同様のMnistのデータを勾配ブースティング手法とディープラーニングで分類していますが、


ご自身で勉強する時もぜひ他の機械学習手法と比較してみてください。
精度と計算負荷を他の手法と比較することで、ディープラーニングへの理解がより深まります。
出力層の関数は要注意
ディープラーニングを組み立てていく時、出力層・中間層の関数を決めるのですが出力層の関数を適切なものに設定しないと出力値が見当はずれのものになるので注意が必要。
当たり前ですが、出力したい値が0・1の2クラスなのか、多クラスなのか、それとも量的数値なのか、明確にして設定しましょう。
ディープラーニングの学習 まとめ
ディープラーニングの学習方法についてまとめてきました!!
学習ロードマップは以下の4STEPでしたね!
このステップが必ず正解というわけではないので、参考にしながら自分のペースで学習を進めていってください。
以下のポイントには留意しておきましょう!
・ディープラーニングで最終的に何がしたいかを明確に
・他の機械学習手法と比較すると良い
・出力層の関数は要注意