CourseraのDeep Learning Specializationを修了しました
ちょくちょく取り組んでいたAndrew Ng先生のDeep Learningの講座を全て修了しました。
(実際に修了したのは、2018年11月頃です…はよ記事にしよって感じですが…)
想像以上に有意義な講座だったため、ちょっとした感想を書こうかと思います。
まずは基本情報をば…
何はともあれ料金
まず料金ですが、この講座はSpecializationという括りで、月50ドルの月額制となります。
早く終われば、その分お金が浮くというシステムですね。動画自体は無料で見られますが、課題やディスカッション等へのアクセスはできないようです。
ちなみにですが、5コースすべてを修了すると、自動的に更新が止まるようです。
日本語対応?
ここで注意なのですが、説明文では日本語対応と書いてあるコースもありますが、そのコース内の講義すべてが日本語対応しているとは限りません。*1
数式とコードで何を言わんとしているかは、なんとくなく分かりますが、英語絶対ムリ!という方には厳しい箇所があるかも…
それでもAndrew先生は、ゆっくりで非常に聞き取りやすい英語で話してくれるので、英語のリスニングを兼ねていると思うと、儲けもんです。
もちろん、英語字幕はすべての講義で見られますので、Google翻訳を使えば、事足りるのではと思います。
数学は出てくる?
これに関してはしっかりと出てきます。主に出てくるのは線形代数と微分ですが、線形代数の内積もちゃんと説明してくれるため、正直前提知識がほとんどなくても、ついていけると思います。
講義の基本的なスタンスは、脱ブラックボックスなので、これは仕方ない所ですね。
特徴として、 は`np.sum`に置き換えられたりと、実際にコードを組むことを意識して展開されるので、エンジニアの方には頭に入りやすいんじゃないかなと思います。
講義形式
講義の基本形式は、こんな感じです。
- テーマに沿った講義動画
- 10-20問の選択式のテスト
- Jupiter notebookを使ったプログラミング課題
このセットを1週間で行います。課題の提出の期限が設けられているため、なんとなくやらなくなってしまうオンライン講座の良くないところもカバーしています。もちろん1週間以内で終えて、次週分の講義を開始しても全く問題ありません。
課題もなかなか面白いものが多いです。例えばですが、こんなものがあります。
課題はJupyter notebook形式で行いますが、穴埋め形式でコードを完成させるタイプのものです。
環境はすべてクラウド上で構築されているため、ブラウザ一つあれば取り組むことができます。
課題は決して簡単ではないのですが、各課題で用意されているディスカッション(掲示板)を活用することもできます。
他の受講者のハマり所や、メンターによる参考サイト等を見ることができるので、すべて自力で解答しなければいけない訳でもないです。
解答をそのままディスカッションに掲載するのは、Courseraの規約違反になるので、ヒントだけ見るイメージですね。*2
講義内容
全5コースですが、それぞれについてざっと書きます。
1. Neural Networks and Deep Learning
最初の講義では、まずDeep Learningとはなんぞや?からニューラルネットではない2値分類(Logistic Regression)を出発点とし、多層ニューラルネット、ベクトル化、forward/back propまで、基本的な内容を一気に学びます。このコースだけでニューラルネットが何たるかを学習することができます。
2. Improving Deep Neural Networks: Hyperparameter tuning Regularization and Optimization
このコースでは、コース1の発展として、汎化、バイアス/バリアンス分解、l1, l2, ドロップアウト等の正則化手法について学びます。パラメータの初期化方法や、最適化手法、パラメータチューニングの戦略等、実践的な内容になっています。特に、これらはTensor FlowやKerasでコードを組むときに必ず出てくるものなので、ニューラルネットの入門書を読んで、概念は理解できたけど、オプションの指定方法が分からないという方の強い味方になりそうです。*3
3. Structural Machine Learning Projects
このコースは他のコースとは毛色が違います。実際に機械学習のシステムを組むときに、どの指標を使うべきなのか、train/dev/testの割合はどうするべきか、ベースラインはどう考えるべきなのかといった、なかなかテキストでは学べないものとなっています。
特に間違ったラベルについてどう考察するかの講義は新鮮でした。どれだけの精度が出たかに注目されがちですが、間違ったものから何を得るか、どういった戦略をとるかは、なかなかテキストには書いてないので、大変勉強になりました。
(4, 5はまた時間ができたら書きます…)
結局受けてみてどうだった?
まずディープラーニングのテキストをしっかりと読めるようになったというのが大きいですね。簡単なものなら論文を読むこともできるようになりました。
理論と実践がそこそこの難易度で展開されるので、ディープラーニングをちゃんとやりたいと思う方の最初1歩としては、本当にお勧めできます。仮に 3ヶ月かけて15,000円払ったとしても十二分に回収できます。(私は仕事中も空いた時間でこなしてたというのもありますが、だいたい1ヶ月くらいかかりました)
あとは機械学習ライブラリで出たエラー内容を追いやすくなりました。
いままで次元数があってなくてエラーが出ていても、一生懸命ググってそれっぽい解決をしていましたが、”あっ、こことここのレイヤー合ってないやん”みたいに気づけるようになった気がします。
ただ一つ注意点なのですが、このコースを修了したからといってデータサイエンティストや機械学習エンジニアを名乗れるかと言われればそうではありません。
総コーディング量も決して多くありませんし、数ある機械学習手法の一つであるディープラーニングにフォーカスしたものなので…
それでも、入門レベルを超えたディープラーニングの知識を身につけられることは間違いないですし、高いセミナーや変なセミナーに参加するよりも、まずこれやっとけ!と声を大にして言いたいです。