其他 商科背景, 5 周完成 deeplearning.ai 课程的过程、心得与总结

imwildcat · 2018年02月11日 · 最后由 imwildcat 回复于 2018年03月22日 · 33 次阅读
本帖已被设为精华帖!

deeplearning.ai 的课程已经发布一段时间了,最后一部分 Sequence Model 也在不到一周前发布。虽然最近开学课业紧张,我终于在前天赶完了课程。在此之中有一些感受,想简单写写,供大家参考 。原文地址:blog.daohanchong.com/2018/02/sum… ,转载请注明出处。

完成课程的时间与物质成本

吴恩达(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等。不管怎样,希望在学习深度学习路上的各位,可以早日做出自己喜欢的有趣应用。

共收到 13 条回复

好厉害!我之前也想学习下,但对于我般文科生数学门槛太高了...

jasl 将本帖设为了精华贴 02月12日 12:41
jasl 将本帖设为了精华贴 02月12日 12:42
ted 回复

确实,没有线性代数基础的话,numpy 还是很难学的。 不过我是文学士哦 =。=

imwildcat 回复

这么说如果需要学习的话,第一步就是搞定线性代数咯?

ted 回复

不一定,可以先看一下课程。感觉入门的话并没有对数学要求那么高。

然后做出来了啥?

这这,数学不好的不是没机会了?

dayudodo 回复

不,有的是机会!我只是个文学士本科生而已啊喂!

一直不喜欢python, 好像要学习人工智能, 机器学习就绕不过python. 不知道能用ruby吗?

itomato 回复

不太可能,因为基本都是 python 的 binding 最好。其实和语言关系不大。

imwildcat 回复

看来还得稍微学点python

itomato 回复

是的,有时候感觉语言真的是次要的。

具体说下作业是啥嘛……貌似tinyfool都通过了

zzz6519003 回复

😅 Tinyfool 过了没什么大不了了吧?

作业就是用 numpy、tf、keras 完善部分神经网络。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册