しろあんのさかな

ふーちゃのエンジニアブログ

Deep Learningに全く馴染みのない女子大学院生がCourseraのNeural Networks and Deep Learningを受けて解釈してみた

CourseraのDeep Learning Specializationで4コースある中でコース1が終わったので感想と、私なりの授業の解釈を書こうと思います。良いかどうかの判断になれば嬉しいです。CourseraはオンラインでスタンフォードやGoogleBrainチームなどに所属する有名な方々の講義が聞けるというものです。研究室を変えたこともあり、時間に空きができたので、受けてみることにしました。 私が修了したコースは、Neural Networks and Deep Learningです。

www.coursera.org

f:id:taiyaki_future:20190416105231p:plain
コース1修了証

内容

全体を通して深層学習の基本的な仕組みを学びました。4週間のコースで、1週目はまず基礎となる隠れ層がない単純なモデルであるLogistic回帰の解説がありました。Loss function(損失関数), Cost function(コスト関数), Activation function(活性化関数)について学びました。Andrew先生が、各式について、直感的な解説をしてくれるのが面白かったです。そして微分に馴染みがない人や、普段数学から離れたことをしている私のような人のためにderivative(導関数)の説明がありました。これらの導関数は入力された各要素の重要度となる重みを更新するための勾配を計算するために必要です。
2週目は同じLogistic回帰でforward propagation(順伝播)からのback propagation(逆伝播)の計算の仕方の解説がありました。コスト関数はいつ使うのかふんわりとしたイメージしかなかったのですが、back propagationに使うための重要な関数なんだと実際に手を動かすことで理解できました。すごく面白かったのが、2週目の演習課題で、入力画像が猫か猫じゃないかを判断するLogistic回帰のモデルを、TensorflowやKeras,Chainerなどのフレームワークを利用せずに伝搬部分からnumpyのみで作るというものです。CourseraバージョンのJupyter notebookに式を書き込んでいくという感じの課題で、できたモデルの精度はそこまで高くないのですが、最後に自分の好きな画像を判定してくれて、意外と犬と猫を分類できていて楽しかったです。猫っぽい画像を探してきていれてみたりしてました。

f:id:taiyaki_future:20190416124939j:plain
2週目課題概要
3週目は隠れ層を1つ持つ2層ニューラルネットワークの解説と、隠れ層で使う活性化関数の種類の解説がありました。多層にすることで線形分離不可能の分類もできることを学びました。この授業があったので、4週目の2層以上のニューラルネットワークがとてもわかりやすかったです。同じ層のニューロン数が少なくても増えすぎてもダメなことがわかる課題が面白かったです。
4週目は多層ニューラルネットワークの解説と実装をしました。まだ直感的な理解しかできていませんが、層を増やした方が空間計算量が少なくなることを学びました。実装は2層ニューラルネットワークの繰り返し処理で、3週目の応用なのでわかりやすくとてもスムーズに進めることができました。(教材すごい)内容は2週目と同様に猫か猫じゃないかの分類モデルを多層ニューラルネットワークを用いて作成しました。おまけとして、どういう猫でない画像が猫と判断されてしまっているか、また猫の画像が猫でないと判断されてしまっているかを表示できるコードがあり、気になっている部分だったのでしっかり準備されてて感動しました。

感想

  • 授業は英語だけど、なんども再生できるからそこまで敷居が高くなかったです。
  • 修了証の取得と授業料で5000円かかったけど、受けた価値がある楽しい授業でした。
  • とにかく課題が面白い!なんでかなって思うことは全部解説してくれていたし、演習になっていました。
  • Andrew先生がめちゃくちゃ優しい(優しそう)そして癒された。
  • 別で読んでいた深層学習の本で、自分じゃ肉付けできない部分を解説してもらえました。

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

英語でよく知らない内容の授業を受けようと思った

深層学習という大学生の時に漠然と怖くて避け続けてきた授業を、しかも英語で受けるということで、ハードルが高いかなと思ったのですが、7日間は無料なので聞いてみて難しかったらやめようと思いはじめてみました。

私のスキル

  • TOEICは700点ちょっと。Listening - Reading > 100点 と、読むのがとにかく遅い人です。
  • 日常英語は多少リラックスしても聞き取れるくらい。数学の専門用語とかは全然知りませんでした。
  • 私の研究はグラフデータの処理クエリ分割による高速化で、Deep learningはあまり使われていません。

どうして受けようと思ったか

ポケモンLDAをやった後、次は技データではなく、ポケモンの画像で分類をしようと画策してweb上の応用できそうなコードを真似していましたが、簡単にうまく行かず...。さらにその時いろいろアドバイスをしてくれた、普段Tensorflowをよく触っている方の言っていることが、全く理解できず。(本当に申し訳ないほどとても丁寧に解説してくださったのですが)これはある程度の基礎が必要だと考えて探した結果Courseraにたどり着きました。

taiyaki-future.hatenablog.com

感動ポイント

授業によっては日本語字幕があるものもあり、日本語字幕があるものは迷わず利用していました。PCでみると、画像と字幕が別れてしまっているのですが、アプリだと話してる部分に字幕が自動スクロールされていくので、とてもみやすかったです。でもスマホだと画面が小さいので、きっとタブレットで学習するのがいいと思いました笑 字幕は文章がボタンになっていて、文章をタップ/クリックすると、動画がその文章まで移動するので(その技術に)感動していました。
あと、各週の最後におまけ動画で、ニューラルネットワークを思いついた人やGAN(Generative Adversarial Network)を作った人へのインタビューがあって、授業とはまた違った面白さがありました。

料金に関して

1コース4週間が想定されていますが、終わったら次の週をどんどん進めていいスタイルなので、春休みの空き時間を利用して通算2週間くらいで終わりました。最初の7日間はお試しで無料でしたが、私には難しいことも多く、調べながらやっていたので14日くらいかかりました。1ヶ月で50ドルくらいで、払っていれば修了証も手に入るので、Andrew先生に感謝の気持ちも勝手に込めさせてもらいお支払いしました。

まとめ

Deep Learning Specialization講座を受けてみている話でした。深層学習の概要が聞けてよかったのと、課題が面白かったのでたくさんの英文を読むのは時々辛かったけど続けられました。

おまけ

面白かった結果です。多層ニューラルネットワークの課題で、猫か猫じゃないかを判定するモデルを構築しました。Accuracyが80%くらいでしたが、ねこのラテアートは"cat"判定でした笑
人のラテアートは"non cat"でした。

f:id:taiyaki_future:20190416115743p:plain
猫のラテアート