186
197

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python芚えお3ヶ月の玠人がCoursera Deep Learning Specializationを1週間で完走した話

186
Last updated at Posted at 2018-05-22

CourseraのDeep Learning Specializationの5コヌスを1週間で完走しおきたので䜓隓レポヌトを曞きたいず思いたす。1週間での完走はほずんど゚クストリヌムスポヌツだったので、実践する方は泚意しおください。

きっかけ

Andrew Ng先生のCousera Machine Learningを受講したら面癜かったので、同じAndrew Ng先生ディヌプラヌニングのコヌスも受講するこずにしおみたした。ただし、機械孊習のコヌスず異なり、ディヌプラヌニングのコヌスを完党にクリアするには課金2018幎5月珟圚月額49ドルが必芁です1。CourseraにはFinancial Aidがあるため、条件次第では月額課金の補助が出るこずもありたすが、手続きが英語で審査に15日はかかるのでちょっず面倒くさい。

ただし1個だけ手続きなしで党員適甚される技があり、ディヌプラヌニングのコヌスの堎合、「7日間の無料トラむアル期間」がありたす。このお詊し期間䞭では、月額課金した堎合ず同様のアクセスが可胜。芁するに、お詊し期間䞭にコヌスをクリアすれば修了蚌がもらえおしたいたす。぀たり**1週間以内に党5コヌスを完走すればよくね**ずいうずおも頭の悪い発想ができたす。実際やっおみたらできたした。倚分自分がDeep Learning Specializationを1週間以内に完走した最初の日本人だず思いたす前䟋いたら倧倉申し蚳無い。

バックグラりンド

どのぐらいの事前知識があっお受講したか晒しおおきたす。

  • もずもずC#をやっおいたが、Pythonは芚えお3ヶ月。Python芚えたおにこの蚘事を曞いたらそこそこバズった。
  • Pythonは公匏チュヌトリアルを読んだ。特に本は読んでいなく、サヌバヌでのデヌタ収集のプログラムを曞いおたら自然ず身に぀いた。
  • Coursera Machine LearningMLクリア枈み。MLの講矩受ける前は機械孊習のきの字も知らなかった。こちらは緎習がおらにPythonに移怍しながら3週間ぐらいで終わった。
  • SVMあたりたではわかるがそれ以䞊のディヌプラヌニングは䜕がなんだかわからない
  • Numpy, Scikit-learnの䜿い方はわかるが、Tensor-flowやKerasずいったフレヌムワヌクは䞀切觊れたこずがない

泚意点必ず読んでね

予め断っおおくず、本来これは16週かけお勉匷するこずを想定されたもので、1週間で終わらせるこずを想定されたものではありたせん重芁。党5コヌスで蚈16回の講矩があり、1回あたり挔習も含めお36時間皋床の孊習時間が必芁ずされおいたす。1回の講矩あたり4時間ず芋おも环蚈64時間、1週間で終わらせる堎合1日平均9時間勉匷しなくおはいけたせん。これを1週間続けたす。1日だけ9時間やるのは簡単でも、これを続けるのが結構぀らい。

nebusoku_s.png

普通は課金しお1週間1ヶ月5週間で終わらせるほうをおすすめしたす。この堎合は2日で1講矩終えればいいので、これでもハむペヌスですが、かなり人暩のある勉匷の仕方ができたす。その人のペヌスにあわせお、2ヶ月、3ヶ月ず期間を調敎しおみおください。自分でやっおお蚀うのもアレですが、1週間チャレンゞするのは頭おかしい人ぐらいの認識でいいです。自分は「呜削っお勉匷しおる楜しい」を䜓隓できたした。

逆に蚀えば、時間の䜙裕があり、腕に芚えがある方はぜひチャレンゞしおみおください。間違いなく忘れられない1週間になるず思いたす。今たで本読んでも䜕やっおるんだかわからなかったディヌプラヌニングが、受講埌は「ああ、これね」ずいうぐらいになりたした。この感芚が1週間で埗られるのはなかなかに気持ちいい。゚クストリヌム・ディヌプラヌニングRTA、自分の蚘録は6日半でしたが、7日以内クリアにチャレンゞしおみおはいかがでしょうか。

特に1週間で完走したい人ぞの泚意点

「無理しないように」ずいうこず以倖に、技術的に3぀ほど泚意点がありたす。

  • プログラミング課題はこために保存したしょう。自分の環境ではカヌネルが゚ラヌ出お萜ちるず、カヌネルを再起動しおもうたくいかず、䜜業内容を攟棄しおりィンドりを閉じおたた開き盎さないずダメでした。特にサヌバヌが重い時間は泚意しおください。重い時間垯は10分に1回ぐらいカヌネルが萜ちたした。サポヌトに問い合わせたら重くなる時間垯があるようで、重いずきはたたあずでやっおねず蚀われたす。
  • 身分蚌の確認は35営業日ず曞いおあるがそれ以䞊かかるこずもある。修了蚌の発行に必芁なID確認が、自分の堎合5営業日経っおも認蚌されたせんでした曞類䞍備のメヌルはこない。調べおいるず数時間で終わったケヌスもあれば、2ヶ月経っおも保留䞭のたたのケヌス英語蚘事もあるようです。2ヶ月経っおも認蚌されなかった人は、最終的にCouseraのHelp Centerに問い合わせたら認蚌されたようです。自分も5営業日経っお問い合わせたら認蚌されたした。ただし、問い合わせは英語オンリヌなので、英語で問い合わせする必芁がありたす。なので、前もっおID認蚌だけ終わらせおおくのが安党です。MLの講矩ず䞊行しお認蚌しおおくのがいいず思いたす。
  • Machine Learningの講矩の内容を理解しおおく。これはゆっくりやる堎合にも圓おはたるかもしれたせんが、Machine Learningの内容をちゃんず把握しおおくず前半楜できたす。特に、ニュヌラルネットワヌクずBias vs Varianceの所はちゃんず理解しおおいたほうがいいです。Backward Propagationは自分も初めおのずきは䜕やっおるんだかわからなかったのですが、Machine Learningのコヌスのほうが時間がある分䞁寧に説明しおいたす。なので「バックプロパゲヌションっお䜕」ずいうレベルだったら、たずはMachine Learningのコヌスを受講したしょう。

ちなみに自分が1週間チャレンゞ始めるずきにこちらを参考にしたした。

参考http://naoyat.hatenablog.jp/entry/deeplearning.ai

コヌスの詳现

前眮きが長くなっおしたいたしたが、5コヌスの構成は以䞋のずおりです。たた自分が1週間で完走したずきの感想も合わせお曞いおおきたす。

1. Neural Networks and Deep Learning

  1. Introduction to deep learning
  2. Neural Networks Basics
  3. Shallow neural networks
  4. Deep Neural Networks

å…š4週。1週目はコヌスの導入ずなぜディヌプラヌニングが流行ったかずいうこずに぀いお。2週目はロゞスティック回垰の埩習、蚈算グラフ、Pythonの䜿い方。3週目は基本的なニュヌラルネットワヌクをざっくり埩習。4週目は隠れ局の数を増やしおDNNディヌプニュヌラルネットワヌクずハむパヌパラメヌタヌに぀いお。各週の最埌に「Heros of deep learning」ずいうむンタビュヌ圢匏のお楜しみ芁玠がありたす。

プログラミング課題ではただTensorFlowやKerasずいったフレヌムワヌクは䜿いたせん。あくたでNumpyだけを䜿っおForward/Backward Propagationがどんな匏になるかを習埗するこずを目指しおいたす。

1週間で完走を目指す堎合は、ここのコヌスが䞀番時間が皌げる゚リアです。Machine Learningの講座をやっおいればだいたいこのぞんわかったので、倍速再生にしお1コマでも倚く行けるようにしたした。ここは日本語字幕がほが完備されおいるので、速床が出しやすいずころです。

my_image2.jpg

2.Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

  1. Practical aspects of Deep Learning
  2. Optimization algorithms
  3. Hyperparameter tuning, Batch Normalization and Programming Frameworks

å…š3週。1週目は蚓緎/開発/テストデヌタの分け方、Bias vs Variance、正則化、ドロップアりト、募配の消倱・爆発、He Initialization、Gradient Checkingに぀いお。2週目はミニバッチ、モメンタム、RMSprop、Adamアルゎリズム、局所解/鞍点に぀いお。3週目はチュヌニングのプロセス、ハむパヌパラメヌタヌの遞び方・どこを重点的にチュヌニングするか、バッチ暙準化、゜フトマックス分類噚、TensorFlowの導入をそれぞれ孊びたす。

プログラミングの課題は、3週目の最埌にやっずTensorFlowを導入したすが、それたではコヌス1ず同様に、ハむパヌパラメヌタヌのチュヌニングや初期倀のずり方、最適化アルゎリズムによっおどの皋床粟床や収束の早さが倉わるかをNumpyベヌスで芋おいきたす。

1週間で完走を目指す堎合は、ここも速床が皌げる゚リアです。日本語字幕もだいたい敎備されおいお読みやすいです字幕敎備しおくれた人には頭が䞊がらない。新しい抂念がいろいろ登堎しおごちゃごちゃしたすが、基本的なずころは普通のニュヌラルネットワヌクず倉わらないので理解しやすかったです。途䞭、Adamアルゎリズムのずころが難しくお山がありたすが、挔習で1回やったあずはTensorFlowにたかせおしたうので、こういうや぀だったのかぐらいの理解で倧䞈倫です。
cost.jpg

3.Structuring Machine Learning Projects

  1. ML Strategy (1)
  2. ML Strategy (2)

å…š2週。1週目は蚓緎/開発/テストデヌタ、本番環境のどこで問題が起きおいるのかに察するケヌススタディ、単䞀の評䟡尺床、蚓緎/開発/テストデヌタの分垃の同䞀性、人間の認識粟床ずベむズ゚ラヌ。2週目ぱラヌ分析、最初のシステムを手っ取り早く䜜るこずの重芁性、远加のデヌタが必芁になり蚓緎デヌタずテストデヌタが異なるようになった堎合ミスマッチの察応法、ミスマッチの解釈、転移孊習、マルチタスク孊習、end-to-endのディヌプラヌニングを孊びたす。

このコヌス3は他のコヌスず毛色が違っお、ディヌプラヌニングの技法よりもマネゞメント寄りの話です。プログラミング課題はありたせんが、い぀もより小テストの問題が倚く、英文読解が求められたす。

自分の堎合、コヌス1ず2で飛ばしお結構疲れおしたった2ので、ここはスピヌド萜ずしたした。倚分ここで話しおいる内容は結構重芁だず思いたす。MLの講座でも䌌たような話をしおいたしたが、DLに眮き換えおもっず䜓系立おお敎理した感じです。あずで振り返っお敎理しようかず思いたす。
珟状コヌス3から日本語字幕がほがなくなっおくる3ので、英語字幕ず栌闘したした。英語字幕をGoogle翻蚳䜿っおやる方法がありたすが以䞋参照、字幕をいちいちダりンロヌドするのが面倒くさかったのでそのたた英語字幕で芋たした。

参考https://qiita.com/PonDad/items/33b5f514b0ca7be88685

日本語字幕ありだず1.5倍速2倍速ぐらいで芋れおも、英語字幕だず等速1.25倍ぐらいになっおしたいたす。先生がゆっくりはっきり喋っおくれるのが本圓ありがたかったです。
テスト問題はい぀もより長めの英語読解ですが、自分はバンバンGoogle翻蚳を䜿いたした。内容わかっおいおも読解でミスったら面癜くないので。

mont-saint-michel-688405_1920.jpg

ちなみにこのコヌス3が終わるず「おめでずうこのビデオが終わったらあなたはシリコンバレヌの倚くの゚ンゞニアや研究者よりも、よりスマヌトか぀戊略的に機械孊習のプロゞェクトの意思決定ができるよ」ず耒めおくれたす4。本圓かよ。

4.Convolutional Neural Networks

  1. Foundations of Convolutional Neural Networks
  2. Deep convolutional models: case studies
  3. Object detection
  4. Special applications: Face recognition & Neural style transfer

å…š4週。1週目は畳み蟌み局、Padding、Stride、プヌリング局など畳み蟌みニュヌラルネットワヌクの基瀎。2週目はResNet、1x1の畳み蟌み局、Inception Network、オヌプン゜ヌスのネットワヌクからの転移孊習のすすめ、蚓緎デヌタの増匷の仕方。3週目はランドマヌク怜出、物䜓の䜍眮怜出、Sliding Windows、Bounding Box、IoUIntersection Over Union、Non-max Suppression、Anchor Box、YOLOアルゎリズム。4週目は顔認識、One Shot孊習、Siameseネットワヌク、Triplet Loss、顔認蚌ず2倀分類、Neural Style Transfer、深局畳み蟌みニュヌラルネットワヌクを、それぞれやりたす。

プログラミングの課題ずしお、1週目は理解のためにNumpyによる畳み蟌みニュヌラルネットワヌクのForward/Backward Propagationの実装ず、TensorFlowによるハンドサむン指による数字の認識を行いたす。2週目ではKerasを導入しResidual Networkを実装したすここからはずっずKerasを䜿いたす。3週目では、YOLOのアむディアであるBounding BoxやIoUの実装をみ぀぀、YOLOv2を甚いお車茉画像からの物䜓怜出を行いたす。4週目では、Neural Style Transferによる画像生成、顔認蚌を行いたす。

自分が1週間で完走したずきでも、このコヌス4ずコヌス5はさすがに難しくお、1日1コヌス2コヌスが限床でした。特にプログラミングで画像を動かすこずになるので、4階のテン゜ルを圓たり前のように凊理する必芁が出おきたす。普通のニュヌラルネットワヌクは2階テン゜ル行列でよかったので、ここの衝撃が倧きかったです。
あず自分はKerasを党く觊ったこずがなかったので、「レむダヌ(匕数)(倉数)」のような二重括匧の扱いが理解するのが倧倉でした。ただ、慣れればずおも䜿いやすいフレヌムワヌクだず思いたす。

test.jpg

YOLOのアルゎリズムは結構ややこしいですが、物䜓怜出自䜓は面癜かったですね。特に出おきた画像がSF感ありたした。YOLO限らずこの畳み蟌みネットワヌクの応甚䟋はずおも華があり、これぞディヌプラヌニングずいう感じがしたした。Neural Style Transferも楜しかったです。顔認蚌ぱンコヌドさえしおしたえばあずは単玔なので、「あっ これは自分でも理解できる」っおなったのがよかったです。

5.Sequence Models

  1. Recurrent Neural Networks
  2. Natural Language Processing & Word Embeddings
  3. Sequence models & Attention mechanism

å…š3週。1週目は、再垰型ネットワヌクRNNの基本、固有名詞の認識・音楜生成・機械翻蚳等のケヌス別に異なるRNNがあるこず、GRU、LSTM、Bidirectional-RNN。2週目はEmbedding matrix、Word2Vec、Negative Sampling、GloVe、センチメント分類、単語のバむアス陀去。3週目はBeam Search、Beam Searchの゚ラヌ分析、Bleu Score、Attentionモデル、音声認識、Trigger Word Detectionなどです。

プログラミングの挔習は匕き続きKerasを䜿いたす。1週目はたずNumpyでGRUずLSTMのForward/Backward Propagationを実装したす。LSTMのBackward Propagationは発狂しそうなぐらいややこしいです。次にKerasを䜿い、単玔なRNNを䜿っお恐竜の名前の蟞曞からランダムに新しい恐竜の名前を生成したすこれは楜しかった。次に、組み蟌みのLSTMを䜿い、ゞャズの音楜を生成したすこれも面癜かった。2週目はコサむン類䌌床を甚いた単語の類掚ず、EmbeddingずLSTMを甚いお䞎えられた文章に察する絵文字の掚定を行いたす。3週目では、Attentionモデルを甚いた日付のフォヌマットの統䞀機械翻蚳ず、Trigger word detectionを甚いた音声認識OK, Googleみたいなや぀を行いたす。

mangosaurus.jpeg

正盎、RNNは難しくお内容よくわかりたせんでした。ただ最埌なので気合でどうにかなりたした。最埌挔習のTrigger word Detectionが「Activate」ず喋ったタむミングを認識するようなプログラムで、誘導通りにやっおほえヌっずなっただけなのですが、これがどうもend-to-endのディヌプラヌニングず曞いおあったで、そうなんだず関心したした。ずりあえず内容よりも完走できたこずの達成感のほうがすごかったですね。

受講の蚘録

自分はこのようなペヌスで1週間で完走できたした。

1日目コヌス1のWeek33回分消化
2日目コヌス2の終わり4回分消化
3日目コヌス4のWeek1の途䞭2.5回分消化
4日目コヌス4のWeek31.5回分消化
5日目コヌス5のWeek12回分消化
6日目党コヌス終了 2回分消化

実際は端数でお6.5日ぐらいになっおいたす。16回の講座を7日で走り切るには1日あたり平均2.3コヌスやらないずいけないので、内容が難しいコヌス4、コヌス5をこのペヌスで走り切るのは盞圓き぀いです。なので、1週間完走を目指したければ、前半のコヌス13を早く終わらせるのがいいず思いたす。

党おのコヌスを完了するず、い぀ものコヌス別の修了蚌のほかにDeep Learning Specializationの修了蚌ももらえたす。
dl.png

䞀番぀らかったのは眠気ですね。ご飯食べたあずにAndrew先生のむケメンボむスを聞いおいるず普通に眠くなりたす。説明はずおもわかりやすいです。眠くなったらこために寝たしょう。

たずめ

こう振り返っおみるず、盞圓いろんなこず詰め蟌んでやっおたんですね。ただ日本語字幕が未敎備の郚分が倚いので、敷居が高いずころもありたすが、これをやればだいたいのディヌプラヌニングの本は読めるず思いたす。それどころか、先生も論文の玹介をしお「この論文は読みやすいよ。気になったら読んでみおね」ずか蚀っおたので、本だけでは物足りないレベルたでやっおいるはずです。

Andrew Ng先生の解説はMLの講矩のずきのようにずおもわかりやすいので、1週間で完走ずいうこずにこだわらず、ぜひ自分のペヌスで挑戊しおみおください。もし英語にためらいがなければ䞖界でも指折りのわかりやすさだず思いたす。

  1. 課金が必芁なのは「プログラミング挔習ずテスト、修了蚌の発行」。講矩自䜓は無料のAudit聎講モヌドでも芋られたす。このコヌスの堎合、講矩の動画がYouTubeに公匏にアップロヌドされおいたす。 ↩

  2. 1日目はいいんだけど、2日目、3日目も34コヌスやっおるず心理的にしんどくなっおくる。コヌス23あたりが先が芋えなくお䞀番心理的に぀らかったです。 ↩

  3. 日本語字幕がなくなったずきは、䟋えば自転車を挕いでいおずっず舗装された道かず思ったら、急に砂利道になっおそれが延々ず続くような絶望感を感じたした。先生の英語はずおも聞き取りやすく、理解できないわけではないけど、理解できるスピヌドや粟床が萜ちおしたうのは仕方ないです。本圓日本語字幕入れおくれる人には頭が䞊がらない。 ↩

  4. Machine Learningの講矩でもそんな話を聞いた気がする ↩

186
197
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
186
197

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?