UdacityのDeep Learning Nanodegree Foundation Programを修了しました
今年の1月末からUdacityのDeep Learning Programを始めて先月修了したので、どんな感じだったか書きたいと思います。
目次:
- Deep Learning Nanodegree Foundation Programとは?
- 講座の流れ
- サポート
- カリキュラム
- Project(課題)
- 講座の良かった点
- こんな人にオススメ
- 講座を終えて
Deep Learning Nanodegree Foundation Programとは?
- Udacity が運営する講座で、プログラミング経験者を対象としたDeep Learningの基礎コースです。
(TechCrunchの紹介記事はこちら ) - 費用は$399で、$100分のAWS creditがもらえました。(課題をするためのGPUインスタンス用)
講座の流れ
Udacityのサイト上でtextやvideoを視聴
- textはこんな感じ。
- videoは全てyoutubeで公開されていて、こんな感じ。
www.youtube.com
Jupyter Notebook で穴埋め形式の問題を解く (+解説videoを視聴)
- これもgithubで公開されています。
github.com
- これもgithubで公開されています。
(月1程度で) Projectと呼ばれる課題に取り組んで提出
余裕がある人向けにcoding challengeというのがあって、出題videoを見る → githubにupされた課題に取り組む → 翌週のvideoで優秀者の発表 という取り組みもありました。 また深く学びたい人用の論文等のリンク集もありました。
サポート
- Udacityのサイト上にForum (掲示板っぽいもの) と、Slackのチャンネルがありました。
- Slackでは、週2回ほどoffice hour (講師の人が質問にすぐ回答してくれる) もありました。
(でも日本時間だと早朝の時間帯が多かった 😂 ) - Slackには講座開始時点で3,000人ほどいて、自分が詰まった点はSlack上で検索すればたいてい上がってました。
- Slackでは、週2回ほどoffice hour (講師の人が質問にすぐ回答してくれる) もありました。
- Projectを提出した後は必ずレビューが返ってくるのですが、(恐らく人がコードを見て)フィードバックをくれるようでした。
カリキュラム
カリキュラムは大きく分けて
1. Neural Networks
2. Convolutional Neural Networks (CNN)
3. Recurrent Neural Networks(RNN)
4. Generative Adversarial Networks(GAN)
の4つから成っています。
- 特に1は基礎的な部分から丁寧に扱っていて、環境構築(numpyの使い方、anacondaの導入法)に始まり、パーセプトロンの説明 & クイズ(XORパーセプトロンを作るetc)、数式の説明、numpyだけでNeural Networkを作ってみる という感じで順を追って理解を深めることができました。
- 全て英語で理解が追いつかない部分もあったのですが、その際は日本語資料を色々ぐぐりました。
- 数式の理解には、 機械学習 | 頭の中に思い浮かべた時には がとても参考になりました!
- 2の前半で MiniFlow という、TensorFlowを単純化したようなフレームワークを作る回があり、その後にTensorFlowの使い方の説明 → 以降2〜4は全てTensorFlowで行う という流れでした。
- 2以降は進みも早く、TensorFlowでどのようにモデルを作るのかはある程度わかったものの、「とりあえずこうする」という"おまじない"的な扱いの部分もあったように思います。
- 例えばNetworkのトレーニングには毎回 tf.train.AdamOptimizer というのを使ってるけど何をやってるんだろうetc (ただ、API仕様に論文へのリンクがあったりでいくらでも調べることは出来ますが)
Project(課題)
以下の5つのProjectに取り組みました。
1. numpyでNeuralNetworkを作ってレンタルバイクの需要予測を行う
「何月何日の何時台に何人がバイクをレンタルした + その時間帯の気温、湿度」データを基に予測を行う。
最終的には以下の予測結果が得られました。(青が予測)
2. TensorFlowでCIFAR-10(犬、猫等の10カテゴリの画像セット)の画像分類を行う
ランダムに画像を与えて予測した結果が以下です。
(予測精度は約63%で、以下の結果の場合automobileは正しく判別できているが、birdはできていない)
3. TensorFlowでRNNを構築し、ザ・シンプソンズのTVスクリプト(台本)を生成する
以下の様な台本が生成されましたが、学習のベースとなるデータが少ないこともあり、文法的にはめちゃくちゃなものになりました。
4. TensorFlowでsequence-to-sequenceモデルを構築し、英語からフランス語への翻訳を行う
以下のような翻訳結果が得られました。これも学習に使ったテキストデータは10MBを切るので精度は高くありません。
5. TensorFlowでGAN(Generative Adversarial Networks)を構築し、手書き文字画像と人間の顔画像の生成を行う
学習にはMNIST と CelebA というデータセットを使っています。
学習の最初は
こんな感じだったものが、
(なんということでしょう) 学習後は
こんなのを生成するように!
上記は提出したProjectの抜粋ですが、フルで見てみたい方はこちら
講座の良かった点
- Deep Learningの基礎から、割と最新の話題(GAN等)まで手を動かして学ぶことができる
- 各カリキュラムの最初の方のvideoがかなり作り込まれていて、概要を掴みやすかった
- 試行錯誤が高速にできた
- 解説やProject がJupyter Notebook で提供されていたお陰で、
「まず解説を読む → 次に関数のブランク箇所を穴埋めしてみる → shift + Enterでcellを実行すると
その関数のテストが走り、実装が合っているかすぐわかる 」という流れが快適でした。
- 解説やProject がJupyter Notebook で提供されていたお陰で、
- 環境構築でハマることがなかった
- Projectに提出期限があり、〆切効果でがんばれた
- 自分の場合本だけでやっていたら挫折してたかも・・
こんな人にオススメ
- 基礎から(数式レベルで)理解したい人
- 数式に関しては、色んな所でオススメされているO'REILLYの「ゼロから作るDeepLearning」が確かに良さそうです。「TensorFlowでRNN、GANもやってみたい」場合にこの講座が良いかもしれません。
- 英語がある程度わかる人
- 講座のtext, videoは全て英語です。「Readingは出来るけど、Listeningは・・」という方なら、youtubeの自動字幕機能を使えば何とかなると思います。
- 時間に少し余裕がある人
講座を終えて
- 次の講座として「Self-Driving Car」「Artificial Intelligence」「Robotics」というコースがあり、Deep Learning受講者向けに割引があるよーという案内がきました。
- 今後については、ひとまずDeep Learningの基礎 & 全体像 がある程度掴めたので、自分で手を動かしつつ身につけていきたいと思っています。
(手元にある自分のライフログデータを学習させて予測してみたい & 仕事にも活かしたい)- ちなみに、次の講座は1ターム(3ヶ月)$800かかるらしい(計2ターム)のですが、現時点でそこまでかけて進みたいかというとそうでもないな〜というのもあり。
- 約4ヶ月の講座をやりきったというのは自信にもなったし、受講してよかったと思います 😇