deeplearning.ai 的课程已经发布一段时间了,最后一部分 Sequence Model 也在不到一周前发布。虽然最近开学课业紧张,我终于在前天赶完了课程。在此之中有一些感受,想简单写写,供大家参考。原文地址:https://blog.wildcat.io/2018/02/summary-of-my-learning-experience-about-deeplearning-ai-zh/ ,转载请注明出处。
完成课程的时间与物质成本
吴恩达(Andrew Ng)教授对中国的深度学习学习者来说真的很良心,直接把课程视频和讲义发布到 网易云课堂 免费供大家观看阅读。在夏天,deeplearning.ai 课程刚刚发布的时候,我也是在网易云课堂慢慢观看课程,效率较低。而且这个课程如果抛开编程练习,意义就要小很多了。因此,在圣诞假期的末期时候,我决定去购买了 Coursera 的订阅,并在一月中旬连续刷完前三门课程,一月下旬和二月前几天完成了 Convolutional Neural Networks 和 Sequence Model 部分。时间表如下:
课程 |
完成时间 |
Neural Networks and Deep Learning |
4 January, 2018 |
Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization |
7 January, 2018 |
Structuring Machine Learning Projects |
9 January, 2018 |
Convolutional Neural Networks |
25 January, 2018 |
Sequence Models |
6 February, 2018 |
可以看到,整套课程完成大概用了 5 周的时间(这个时间并不是全职完成课程,而是完成笔者大学的课程和作业的闲暇时间)。Coursera 有一个星期的试用期,最终应该只会产生一次订阅月费(£36)。不过,实际上,对于自己来说,达到这个速度是有一定的先决条件的:
- 已完成 Coursera 上 Machine Learning 课程
- 有选修现在学校的 Machine Learning 与 Introduction to Neural Computation 课程
- 有一定的微分和线性代数基础(本科学了一部分金融和经济学,一部分 marketing,现在硕士计算机科学)
- 全部视频都是 1.25 倍速播放(不过算上记笔记时暂停用的时间,估算速度也就大概 1.15 倍)
因此,每个人情况不同,个人觉得不用特别追求速度。对于 Andrew Ng 的课程来讲,花上三个月的订阅费去学习也是性价比很高的(相比于其他同类课程的价格,这个课程已经不能再良心了)。
对课程的整体感受
- 刚入门时比较基础,从最基础的 logistic regression 讲起,学习曲线并不陡峭。另外,这门课也是比较有深度的,挖掘了 Adam、Momentum、LSTM、GRU 等复杂概念。
- Ng 很喜欢鼓励大家,每当讲到很复杂的概念的时候,他总是安慰大家,不用太害怕这些复杂的东西,慢慢理解就好。他总是说,自己最初也是边用边慢慢深入理解的。很喜欢 Ng 常用的一个词“intuition”,个人对这个词的理解就是,对于复杂的概念,不求甚解,在以后的使用中慢慢体会。
- 持续时间不算长,不拖沓。不同知识点被合理分配成不同的短视频,适合零碎时间看。
- 个人偏好 Ng 的讲义形式:手写标注和打印公式相结合。
- 很多部分的设计,比如 notations(上标下标等),非常用心,可以看出 Ng 下了不少功夫。
- 编程作业设计得比较好,很注意训练模型与使用 pretrained weights 相结合,节约训练时间。
事后总结的,完成课程的一些小技巧
这部分适合刚开始学习这门课程的同学参考。
Lecture 部分
-
一定一定一定要做笔记,个人建议最好纸笔手写笔记,只有自己写下公式和网络架构图,写代码时才更加自信并且不容易出错。
- 尽量多复习回顾,可能回顾一两遍后,印象很深,方便后面答 quiz 和编程作业。
Assignment 部分
- 多用 Coursera 论坛搜索 Jupyter Notebook 的报错,也可以用 Google 搜一些比较 general 的报错,例如 Keras 和 TensorFlow 的报错。
- 对于 dimension 的报错,应该去想这个 dimension 是为什么错,正确的 dimension 应该是从哪里来的。
- 一些报错很难 debug,一定要有耐心。有时候实在解决不了编程作业就等一两天,说不定过段时间就有思路了。
- 一定不要去 GitHub 找代码(照抄代码骗人骗己浪费钱,多搜索锻炼思考与解决问题能力)。
- Jupyter Notebook 中的内容,尤其是练习后总结的蓝字要认真读,甚至做笔记。这样有助于加深对于 lectures 的理解(比如不同方法的优劣等等)。
- 如果 Jupyter Notebook 总是输出与期望数据不相关的值,请不要总是以为习题设计有问题(早期问题大部分可能都被修复了),多从自己找原因,多搜索。如果实在被卡住,可以提问后进行下周课程以节约时间。
- 对于 Keras 要大胆尝试,多查文档。一个很重要的点就是理解 Keras 的函数式编程 API。
其他感受
- 最后一个编程作业呼应了 Ng 的 Machine Learning 中讲到声音合成的部分,很有趣。
- 预处理数据可能比根据论文复用成熟深度学习模型本身要复杂很多。
- 虽然第三部分个人得分最低而且没有编程作业,但是依旧很值得学习,传授的是 Ng 多年总结的经验。
- Ng 对于一些深度学习领域的领军人物的采访,也非常值得一看。比如,GAN 的”发明人“Ian Goodfellow 入门之路竟然是从上 Andrew Ng 在斯坦福的 AI 课开始的(并且 Ng 一开始并不知道这件事)。
总结
毋庸置疑,deeplearning.ai 这一组深度学习课程,质量是非常高的。对于入门者来说,完成这一系列课程需要非常大的毅力与耐心。完成这门课,仅仅意味着自己在这个领域刚刚入门,还有很多需要慢慢探索,比如强化学习、GAN 等。不管怎样,希望在学习深度学习路上的各位,可以早日做出自己喜欢的有趣应用。