【初心者向け】ディープラーニングの勉強ロードマップまとめ!

目次
ウマたん当サイト【スタビジ】の本記事では、ディープラーニング(深層学習)の学習方法について詳しくまとめていきます!ディープラーニングは難しいと思われがちですが、アルゴリズムは意外とシンプルで実装自体も非常に簡単なんです!Pythonでの実装もおこなっていきますよー!
こんにちは!
消費財メーカーでデジタルマーケター・データサイエンティストを経験後、現在は独立して働いているウマたん(@statistics1012)です!
最近はどっぷりディープラーニングに浸かっています。
ディープラーニングってなんだか難しいイメージがあるかもしれませんが、案外シンプルでそんなに難しくないんですよー!
ロボたんディープラーニングって複雑なイメージがあるけど、そんなことないの??
ウマたんもちろん簡単ではないけど、基礎的な部分は非常にシンプルなんだ!!
この記事では、そんなディープラーニングを初心者がある程度のレベルまでマスターするまでの学習ロードマップをまとめました。
理論と実装の2つの視点から見ていきましょう!
ちなみにデータサイエンスの基本からディープラーニングまで一気通貫で学びたい方は当サイト「スタビジ」が提供する「スタアカ(スタビジアカデミー)」というサービスで体系的に学ぶことが可能ですので是非チェックしてみてください!
ディープラーニングとは

さて、まずはディープラーニングとは何なのかカンタンに見ていきましょう!
ウマたん動画でも10分ほどで分かりやすく解説しているのでぜひチェックしてみてください!
得たいの知れないモノの正体をクリアにしていくことで学習へのハードルがグッと下がりますよー!
ウマたんまずは、ディープラーニング=新しくて複雑なモノというイメージを払拭だ!
実は、ディープラーニングの原型は1940年代から存在していたと言われています。
ロボたんえ!?そんなに昔からあるの!?
ウマたんそうなんだよー、最新の技術だと思われているんだけど既に理論自体はだいぶ昔から確立されていたんだ!
1940年~1950年にかけて人間の神経を模した仕組み「ニューラルネットワーク」が確立されました。
人間の神経が信号を伝播させていくようにある入力を次の層へと重み付けをして伝播させていき出力を求めます。

ロボたんなんで今さら50年以上も前の手法が注目されてるの?
ウマたん当時の状況では層を積み重ねていくことができなかったんだ!
この層を多層にしていくのがディープラーニングなのですが、当時のマシンパワーでは計算量が膨大過ぎて実現不可能でした。
計算負荷を軽減する誤差逆伝播法(バックプロパゲーション)などの計算手法の登場やマシンパワーの増強により現在に至ります。
そんな計算負荷の問題が解消され深層ニューラルネットワーク(ディープラーニング)が日の目を浴びたのは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”
ディープラーニングに関して詳しくは以下の記事をチェック!
【入門】ディープラーニング(深層学習)の仕組みとPython実装のやり方!当サイト【スタビジ】の本記事では、ディープラーニングの仕組みやPythonでの実装方法について解説していきます。ディープラーニングってなんとなくブラックボックスなイメージがあるかもしれませんが、実はシンプルなアルゴリズムなんですよー!
ディープラーニングでできること

さて、ディープラーニングの全体像が分かったところで、どんなことが実現できるのか見ていきましょう!
画像識別

ディープラーニングと言えば、画像認識!!
Mnistという手書き文字を実際に分類してみたコードを以下に載せておきます。
Mnistは「Gradient-based learning applied to document recognition」で用いられたデータセットであり、現在でも多くの論文で用いられています。
Modified National Institute of Standards and Technologyの略であり、0~9の数字が手書き文字として格納されているデータセットです。
学習用に60000枚、検証用に10000枚のデータセットが格納されています。
import numpy as np
from sklearn.model_selection import train_test_split
import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow import keras
from tensorflow.keras.layers import Dense, Activation
from tensorflow.keras.models import Sequential
from tensorflow.keras.utils import to_categorical
# Kerasに付属の手書き数字画像データをダウンロード
np.random.seed(0)
(X_train_base, labels_train_base), (X_test, labels_test) = mnist.load_data()
# Training set を学習データ(X_train, labels_train)と検証データ(X_validation, labels_validation)に8:2で分割する
X_train,X_validation,labels_train,labels_validation = train_test_split(X_train_base,labels_train_base,test_size = 0.2)
# 各画像は行列なので1次元に変換→X_train,X_validation,X_testを上書き
X_train = X_train.reshape(-1,784)
X_validation = X_validation.reshape(-1,784)
X_test = X_test.reshape(-1,784)
#正規化
X_train = X_train.astype('float32')
X_validation = X_validation.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_validation /= 255
X_test /= 255
# labels_train, labels_validation, labels_test をダミー変数化して y_train, y_validation, y_test に格納する
y_train = to_categorical(labels_train)
y_validation = to_categorical(labels_validation)
y_test = to_categorical(labels_test)
# パラメータの設定
n_features = 784
n_hidden = 100
bias_init = 0.1
# 学習率
rate = 0.01
# Sequentialクラスを使ってモデルを準備する
model = Sequential()
# 隠れ層を追加
model.add(Dense(n_hidden,activation='relu',input_shape=(n_features,)))
model.add(Dense(n_hidden,activation='relu'))
model.add(Dense(n_hidden,activation='relu'))
# 出力層を追加
model.add(Dense(10,activation='softmax'))
# TensorFlowのモデルを構築
model.compile(optimizer=tf.optimizers.Adam(rate),
loss='categorical_crossentropy', metrics=['mae', 'accuracy'])
# Early stoppingを適用してフィッティング
log = model.fit(X_train, y_train, epochs=3000, batch_size=100, verbose=True,
callbacks=[keras.callbacks.EarlyStopping(monitor='val_loss',
min_delta=0, patience=10,
verbose=1)],
validation_data=(X_validation, y_validation))
# Test dataで予測を実行。
pred_test = model.predict_classes(X_test)
validation = (pred_test == labels_test)
size = validation.size
size
correct = np.count_nonzero(validation)
print(f"{correct}/{size} correct ({correct*100/size:.3f}%)")
詳細は省きますが、最終的にテストデータに対して96.96%の精度を算出することができました。
なかなか判別の難しい手書き文字も入っているのでなかなかの精度。
以下の記事で詳しくまとめています。
【入門】ディープラーニング(深層学習)の仕組みとPython実装のやり方!当サイト【スタビジ】の本記事では、ディープラーニングの仕組みやPythonでの実装方法について解説していきます。ディープラーニングってなんとなくブラックボックスなイメージがあるかもしれませんが、実はシンプルなアルゴリズムなんですよー!
ちなみに画像タスクの応用で通常の写真にゴッホのスタイルを入れるなんてことが、ディープラーニングを使えば出来ちゃうんです!

(引用元:https://github.com/jcjohnson/neural-style)
可能性は無限大です!
文脈を読み取る

また、ディープラーニングを用いて文章を予測したり文脈を読み取ることが可能です
ここで登場するのがRecurrent neural network(再帰型ニューラルネットワーク)。
RNNと略されて呼ばれます。
RNNを用いて時系列問題を解いてみましょう!
使うデータセットはKaggleのホームページから落とせる航空会社の乗客数データ!
1949年から1960年までの月別乗客数がデータとして入っています。
149行2列のシンプルなデータセット。
1変数の時系列データを基に過去のデータから未来の値を予測します。
この時、tflearnというライブラリを使ってRNN(正確にはLSTM)を実装していきます。tflearnはkerasと似たようなライブラリでディープラーニングの実装が感覚的に容易にできます。
実際にモデルを構築していきましょう!
import tensorflow
import tflearn
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
tensorflow.reset_default_graph() #モデルを初期化
df = pd.read_csv('AirPassengers.csv',usecols=[1])
dataset = df.values
dataset = df.astype('float32')
dataset = (dataset - np.min(dataset))/(np.max(dataset)-np.min(dataset))
dataset = np.array(dataset)
def create_dataset(dataset, steps_of_history, steps_in_future):
X, Y = [], []
for i in range(0, len(dataset)-steps_of_history, steps_in_future):
X.append(dataset[i:i+steps_of_history])
Y.append(dataset[i + steps_of_history])
X = np.reshape(np.array(X), [-1, steps_of_history, 1])
Y = np.reshape(np.array(Y), [-1, 1])
return X, Y
def split_data(x, y, test_size=0.1):
pos = round(len(x) * (1 - test_size))
trainX, trainY = x[:pos], y[:pos]
testX, testY = x[pos:], y[pos:]
return trainX, trainY, testX, testY
steps_of_history = 1
steps_in_future = 1
X, Y = create_dataset(dataset, steps_of_history, steps_in_future)
trainX, trainY, testX, testY = split_data(X, Y, test_size = 0.33)
net = tflearn.input_data(shape=[None, steps_of_history, 1])
net = tflearn.lstm(net, n_units=6)
net = tflearn.fully_connected(net, 1, activation='linear')
net = tflearn.regression(net, optimizer='adam', learning_rate=0.001,
loss='mean_square')
model = tflearn.DNN(net, tensorboard_verbose=0)
model.fit(trainX, trainY, validation_set=0.1, batch_size=1, n_epoch=150)
test_predict = model.predict(testX)
rmse = np.sqrt(np.mean((test_predict-testY)**2))
print(rmse)
最終的な評価はRMSE(Root Mean Square Error)で算出しています。
RMSEは0.10079201となりました。
それなりに良い予測ができてる!
RNNについては以下の記事で詳しくまとめていますのでチェックしてみてください!
RNN(リカレントニューラルネットワーク)の概要とPython実装方法をわかりやすく解説!当サイト【スタビジ】の本記事では、ディープラーニングを時系列にも対応させたRNN(リカレントニューラルネットワーク)について解説していきます。RNNの仕組みや応用場面と一緒にPythonでの実装をしていきます。これからの応用が期待される領域なんですよー!
ここでは一部だけ取り上げましたが、ディープラーニングでできることはもっともっと幅広いんです!
ディープラーニングでできることをもっと知りたい方は、以下の記事をチェックしてみてください!
ディープラーニングでできることとできないこと!Pythonでの実装例とともに見ていこう!当サイト【スタビジ】の本記事では、ディープラーニングができることとできないことについて適宜Pythonでの実装例をはさみながら解説していきます。何でも出来ると思われがちなディープラーニングについてちゃんと理解しておきましょう!
ディープラーニングの学習ロードマップ

さて、ディープラーニングの全体像・できることが分かったところで本題に入りましょう!
ディープラーニングをマスターするためには、どのように学習していけばよいのか。
CNNでの画像識別ができるところまでを目指します。
ディープラーニング学習は、以下の4ステップ!
それぞれについて具体的に見ていきましょう!
Step1:基礎固め

ディープラーニングをしっかり学んでいくためには、まず
が前提として必要です。
この3つの最低限知識・スキルを固めず、ディープラーニングを学習しても効率が悪いですし頭デッカチになっちゃいます。
遠回りに思えるかもしれませんが、しっかり順を追って学ぶことが後々効いてきます。
それぞれについては以下の記事を参考にして学習を進めてください。
【初心者必見】統計学入門に必要な知識と独学勉強方法を簡単に学ぼう!当ブログ【スタビジ】の本記事では、統計学入門に必要な知識をカンタンにまとめ、それらをどのように効率的に独学で勉強していけばよいかをお話ししていきます。統計学は難しいイメージが少しありますが、学び方をしっかり考えれば大丈夫!
【入門】機械学習のアルゴリズム・手法をPythonとRの実装と一緒に解説!当サイト【スタビジ】の本記事では、入門者向けに機械学習についてカンタンにまとめていきます。最終的にはどのように機械学習を学んでいけばよいかも見ていきます。細かい手法の実装もPython/Rを用いておこなっていくので適宜参考にしてみてください。
【Python独学勉強法】Python入門を3ヶ月で習得できる学習ロードマップ当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。
この時に注意して欲しいのが、「統計学・機械学習の知識」と「Pythonスキル」は切り分けて勉強するのではなく並行して学習を進めていってください。
そうすることで理解が深まり効率が高まります。
知識だけ入れてから・・・と進めると挫折します。
ロボたん数式だらけで何が何だかわからなくなりそう、、、
ウマたんPythonでの実装も同時に行いながら学習を進めることで、手法のイメージが掴みやすくなるよ!
Step2:ディープラーニングの概論

さてさて、基礎固めが出来たらディープラーニングの理論と概論に移りましょう!
まずディープラーニングの将来性や現状・そしてどのようにビジネスに活用されているかについて学びましょう。
ディープラーニングはあくまで手段です。
ディープラーニングを使って何がしたいかを明確にしておかないと学習効率は上がりません。
ふわっとしていても良いので、Step3に進む前にディープラーニングを学習した先に目指すものをつくりましょう!
たくさん書籍が出ていますが、以下の2つが個人的にはよかったです。
東大の松尾教授は、日本のディープラーニング第1人者。
ぜひチェックしてみてください。
Step3:ディープラーニングの理論

概論のイメージを膨らませたら続いては本格的な理論の学習に入っていきましょう!
ディープラーニングの理論の学習には書籍がもっとも適しています。
名著「ゼロから作るディープラーニング」!
この本に出会いディープラーニングの魅力に取りつかれました。
パーセプトロンの話からニューラルネットワークに入り、そこからCNNまで解説しています。
タイトルの通り0からアルゴリズムを組み立てていき、Pythonで0からコーディングしていきます。
とにかくめちゃくちゃ分かりやすいです。
必読の1冊。
理論はこの1冊読んでおけば基本問題ないです。
また、「ゼロから作るディープラーニング②」では、自然言語処理の領域に利用されているRNNについて詳しく解説しています。
少々レベルが上がりますが、興味のある方は読んでみるとよいでしょう!
ディープラーニングの書籍を以下の記事でまとめていますのでチェックしてみてください!
ディープラーニングを学習する上でオススメな本と勉強法当サイト【スタビジ】の本記事では、ディープラーニングを学習するのにオススメな本と勉強法について紹介していきます。ディープラーニングだけ分かっても意味がありません。まずは、データサイエンスの基本である機械学習手法を理解してPythonで実装できるまでになりましょう!
ビジネスサイドからディープラーニングの活用を学べる書籍も紹介していますよー!
Step4:ディープラーニングの実装

理論のStepでは、ディープラーニングがどんなアルゴリズムで動いているかを理解するためにゼロからPythonで実装してみましたが、実際の場面でゼロから作り上げることは多くありません。
実装するだけなら便利なライブラリが用意されていてライブラリを呼び出すだけで実装が可能なんです。
ライブラリ実装によるディープラーニングはオンラインスクールもしくはオンライン動画で学習するとよいでしょう!
オンラインスクールはいくつかありますが、Techacademy(テックアカデミー)のAIコースを受講してみてパーソナルメンターのクオリティが高かったのでおすすめです!
このコースでは、機械学習の初歩的な内容からCNN(畳み込みニューラルネットワーク)の実装まで学びます。
【体験談】テックアカデミー評判は?3か月本気受講してみたので徹底レビュー!当ブログ【スタビジ】では、様々なプログラミングスクールの中からテックアカデミーのメリット・デメリット・評判について3か月の体験談をもとに赤裸々にレビューしていきます。
教材のクオリティは高くないので先ほどの書籍「ゼロから作るディープラーニング」と並行して進めるのがオススメです。
ちなみに先ほども紹介しましたが、データサイエンスの基本からディープラーニングまで一気通貫で学びたい方は当サイト「スタビジ」が提供する「スタアカ(スタビジアカデミー)」というサービスで体系的に学ぶことが可能ですので是非チェックしてみてください!
他のスクールと比較して圧倒的に格安で提供しています!
ディープラーニングの学習をしっかり集中的に行うのであればプログラミングスクールは比較的オススメです。
以下の記事でまとめているのでぜひチェックしてみてください!
ディープラーニング(深層学習)が学べるスクールおすすめ4選!当サイト【スタビジ】の本記事では、深層学習(ディープラーニング)の勉強ができるスクールをまとめていきます!これからのAI発展を担うディープラーニングの理論と実装についてしっかり学んでおきましょう!スクール選びは非常に大事なので是非参考にし…
ディープラーニングの学習で注意すべき点とアドバイス

ディープラーニングの学習ロードマップ、無事進められそうでしょうか?
最後に学習をしっかり完遂し初心者脱却するために注意すべき点とアドバイスをまとめておきます。
学習の一助になれば幸いです。
ディープラーニングで最終的に何がしたいかを明確に

ディープラーニングは手段でしかないので、ディープラーニングを学習した先の目的を明確にしておいた方がよいです。
目的は些細なことでも実現ハードルが高そうなことでも何でもよいと思っています。
ウマたん目的があるとモチベーションも上がるね!
他の機械学習手法と比較すると良い

当サイトでは、同様のMnistのデータを勾配ブースティング手法とディープラーニングで分類していますが、
勾配ブースティング決定木の手法をPythonで実装して比較していく!当サイト【スタビジ】の本記事では、勾配ブースティングの各手法をPythonで実装して徹底比較していきます!勾配ブースティングの代表手法「Xgboost」「Light gbm」「Catboost」で果たしてどのような違いがあるのでしょうか?
【入門】ディープラーニング(深層学習)の仕組みとPython実装のやり方!当サイト【スタビジ】の本記事では、ディープラーニングの仕組みやPythonでの実装方法について解説していきます。ディープラーニングってなんとなくブラックボックスなイメージがあるかもしれませんが、実はシンプルなアルゴリズムなんですよー!
ご自身で勉強する時もぜひ他の機械学習手法と比較してみてください。
精度と計算負荷を他の手法と比較することで、ディープラーニングへの理解がより深まります。
出力層の関数は要注意

ディープラーニングを組み立てていく時、出力層・中間層の関数を決めるのですが出力層の関数を適切なものに設定しないと出力値が見当はずれのものになるので注意が必要。
当たり前ですが、出力したい値が0・1の2クラスなのか、多クラスなのか、それとも量的数値なのか、明確にして設定しましょう。
ディープラーニングの学習 まとめ
本記事では、ディープラーニングの学習方法についてまとめてきました!!
学習ロードマップは以下の4STEPでしたね!
このステップが必ず正解というわけではないので、参考にしながら自分のペースで学習を進めていってください。
以下のポイントには留意しておきましょう!
ロボたんディープラーニング学習についてだいぶクリアになったよ!
ウマたんディープラーニングを学んで世界にはばたこう!
以下の記事でPythonの学習方法やデータサイエンティストへの勉強法をまとめているのあわせてチェックしてみてください!
【Python独学勉強法】Python入門を3ヶ月で習得できる学習ロードマップ当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。
【5分で分かる】データサイエンティストに必要なスキルと独学勉強ロードマップ!当サイト【スタビジ】の本記事では、データサイエンティストに求められるスキルとそれを身に付けるための勉強法について徹底的にまとめていきます!入門者でも、しっかりデータサイエンティストについて理解しある程度独学で駆け出しの状態までいけることを目指します。
【これだけ!】AI(人工知能)の勉強ロードマップを徹底的に解説!当サイト【スタビジ】の本記事では、AIを勉強するロードマップについて徹底的に解説していきます。まずは、AIの概要について理解して統計学の基本知識・機械学習の基本知識・Pythonでの実装・インフラ周りの知識などを包括的に理解していきましょう!
【5分で分かる】機械学習の独学勉強ロードマップを徹底的にまとめていく!当サイト【スタビジ】の本記事では、機械学習の独学勉強ロードマップについて徹底的にまとめていきます。機械学習をいきなり理論からしっかり勉強しようとすると挫折しかねません。そこで、この記事ではなるべく挫折しないロードマップをお伝えしてきますよ!
また、ディープラーニングの資格としてG検定・E資格というものがあります。興味がある方は以下の記事をチェックしてみてください。
【初心者向け】G検定の勉強方法を現役データサイエンティストが徹底的に解説!当サイト【スタビジ】の本記事では、G検定の勉強法をまとめています!おすすめの学習サイトや本を紹介しているので、この記事を読んで、G検定の勉強を始めていきましょう!
E資格のおすすめ講座10選を現役データサイエンティストが紹介!当サイト【スタビジ】の本記事では、E資格の取得を目指している人に向けて、おすすめ講座を紹介しています。AI・ディープラーニングのスキルアップとして目指す人も多いE資格!ぜひ本記事を参考に講座を受講していきましょう!読んだ内容を、スタアカの「ディープラーニング」コースで身につける
データサイエンス・AIを、動画と課題で体系的に学べるオンラインスクール。最初のレッスンは無料で見られます。








