こんにちは!
消費財メーカーでデジタルマーケター・データサイエンティストを経験後、現在は独立して働いているウマたん(@statistics1012)です!
最近はどっぷりディープラーニングに浸かっています。
ディープラーニングってなんだか難しいイメージがあるかもしれませんが、案外シンプルでそんなに難しくないんですよー!
この記事では、そんなディープラーニングを初心者がある程度のレベルまでマスターするまでの学習ロードマップをまとめました。
理論と実装の2つの視点から見ていきましょう!
ちなみにデータサイエンスの基本からディープラーニングまで一気通貫で学びたい方は当サイト「スタビジ」が提供する「スタアカ(スタビジアカデミー)」というサービスで体系的に学ぶことが可能ですので是非チェックしてみてください!
目次
ディープラーニングとは
さて、まずはディープラーニングとは何なのかカンタンに見ていきましょう!
得たいの知れないモノの正体をクリアにしていくことで学習へのハードルがグッと下がりますよー!
実は、ディープラーニングの原型は1940年代から存在していたと言われています。
1940年~1950年にかけて人間の神経を模した仕組み「ニューラルネットワーク」が確立されました。
人間の神経が信号を伝播させていくようにある入力を次の層へと重み付けをして伝播させていき出力を求めます。
この層を多層にしていくのがディープラーニングなのですが、当時のマシンパワーでは計算量が膨大過ぎて実現不可能でした。
計算負荷を軽減する誤差逆伝播法(バックプロパゲーション)などの計算手法の登場やマシンパワーの増強により現在に至ります。
そんな計算負荷の問題が解消され深層ニューラルネットワーク(ディープラーニング)が日の目を浴びたのは2006年。
このブレークスルーによって再びAIのブームが巻き起こり、第3次AIブームへと突入していくのです。
意外とディープラーニングの原点は古く、最新の複雑なアルゴリズムではないということを覚えておいてください!
詳しく知りたい場合,DeepLearningの論文を読むとよいでしょう!
We describe an effective way of initializing the weights that allows deep autoencoder networks to learn low-dimensional codes that work much better than principal components analysis as a tool to reduce the dimensionality of data.
引用:Google-“Reducing the Dimentionality of Data with Neural Networks”
ディープラーニングに関して詳しくは以下の記事をチェック!
ディープラーニングでできること
さて、ディープラーニングの全体像が分かったところで、どんなことが実現できるのか見ていきましょう!
画像識別
ディープラーニングと言えば、画像認識!!
Mnistという手書き文字を実際に分類してみたコードを以下に載せておきます。
Mnistは「Gradient-based learning applied to document recognition」で用いられたデータセットであり、現在でも多くの論文で用いられています。
Modified National Institute of Standards and Technologyの略であり、0~9の数字が手書き文字として格納されているデータセットです。
学習用に60000枚、検証用に10000枚のデータセットが格納されています。
詳細は省きますが、最終的にテストデータに対して96.96%の精度を算出することができました。
なかなか判別の難しい手書き文字も入っているのでなかなかの精度。
以下の記事で詳しくまとめています。
ちなみに画像タスクの応用で通常の写真にゴッホのスタイルを入れるなんてことが、ディープラーニングを使えば出来ちゃうんです!
(引用元:https://github.com/jcjohnson/neural-style)
可能性は無限大です!
文脈を読み取る
また、ディープラーニングを用いて文章を予測したり文脈を読み取ることが可能です
ここで登場するのが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つが個人的にはよかったです。
(2024/11/21 06:32:39時点 Amazon調べ-詳細)
東大の松尾教授は、日本のディープラーニング第1人者。
ぜひチェックしてみてください。
Step3:ディープラーニングの理論
概論のイメージを膨らませたら続いては本格的な理論の学習に入っていきましょう!
ディープラーニングの理論の学習には書籍がもっとも適しています。
名著「ゼロから作るディープラーニング」!
(2024/11/21 07:52:34時点 Amazon調べ-詳細)
この本に出会いディープラーニングの魅力に取りつかれました。
パーセプトロンの話からニューラルネットワークに入り、そこからCNNまで解説しています。
タイトルの通り0からアルゴリズムを組み立てていき、Pythonで0からコーディングしていきます。
とにかくめちゃくちゃ分かりやすいです。
必読の1冊。
理論はこの1冊読んでおけば基本問題ないです。
また、「ゼロから作るディープラーニング②」では、自然言語処理の領域に利用されているRNNについて詳しく解説しています。
少々レベルが上がりますが、興味のある方は読んでみるとよいでしょう!
ディープラーニングの書籍を以下の記事でまとめていますのでチェックしてみてください!
ビジネスサイドからディープラーニングの活用を学べる書籍も紹介していますよー!
Step4:ディープラーニングの実装
理論のStepでは、ディープラーニングがどんなアルゴリズムで動いているかを理解するためにゼロからPythonで実装してみましたが、実際の場面でゼロから作り上げることは多くありません。
実装するだけなら便利なライブラリが用意されていてライブラリを呼び出すだけで実装が可能なんです。
ライブラリ実装によるディープラーニングはオンラインスクールもしくはオンライン動画で学習するとよいでしょう!
オンラインスクールはいくつかありますが、Techacademy(テックアカデミー)のAIコースを受講してみてパーソナルメンターのクオリティが高かったのでおすすめです!
このコースでは、機械学習の初歩的な内容からCNN(畳み込みニューラルネットワーク)の実装まで学びます。
教材のクオリティは高くないので先ほどの書籍「ゼロから作るディープラーニング」と並行して進めるのがオススメです。
ちなみに先ほども紹介しましたが、データサイエンスの基本からディープラーニングまで一気通貫で学びたい方は当サイト「スタビジ」が提供する「スタアカ(スタビジアカデミー)」というサービスで体系的に学ぶことが可能ですので是非チェックしてみてください!
他のスクールと比較して圧倒的に格安で提供しています!
ディープラーニングの学習をしっかり集中的に行うのであればプログラミングスクールは比較的オススメです。
以下の記事でまとめているのでぜひチェックしてみてください!
ディープラーニングの学習で注意すべき点とアドバイス
ディープラーニングの学習ロードマップ、無事進められそうでしょうか?
最後に学習をしっかり完遂し初心者脱却するために注意すべき点とアドバイスをまとめておきます。
学習の一助になれば幸いです。
ディープラーニングで最終的に何がしたいかを明確に
ディープラーニングは手段でしかないので、ディープラーニングを学習した先の目的を明確にしておいた方がよいです。
目的は些細なことでも実現ハードルが高そうなことでも何でもよいと思っています。
他の機械学習手法と比較すると良い
当サイトでは、同様のMnistのデータを勾配ブースティング手法とディープラーニングで分類していますが、
ご自身で勉強する時もぜひ他の機械学習手法と比較してみてください。
精度と計算負荷を他の手法と比較することで、ディープラーニングへの理解がより深まります。
出力層の関数は要注意
ディープラーニングを組み立てていく時、出力層・中間層の関数を決めるのですが出力層の関数を適切なものに設定しないと出力値が見当はずれのものになるので注意が必要。
当たり前ですが、出力したい値が0・1の2クラスなのか、多クラスなのか、それとも量的数値なのか、明確にして設定しましょう。
ディープラーニングの学習 まとめ
本記事では、ディープラーニングの学習方法についてまとめてきました!!
学習ロードマップは以下の4STEPでしたね!
このステップが必ず正解というわけではないので、参考にしながら自分のペースで学習を進めていってください。
以下のポイントには留意しておきましょう!
・ディープラーニングで最終的に何がしたいかを明確に
・他の機械学習手法と比較すると良い
・出力層の関数は要注意
以下の記事でPythonの学習方法やデータサイエンティストへの勉強法をまとめているのあわせてチェックしてみてください!
また、ディープラーニングの資格としてG検定・E資格というものがあります。興味がある方は以下の記事をチェックしてみてください。