Coursera 上的 Deep Learning Specialization 课程

昨天把吴恩达老师的这一系列课程学完了(只有前四门,第五门课还未上线),简单记录一下『学后感』,以资后来人参考。

我对机器学习几乎是零基础。以前一直觉得机器学习对数学要求极高的学科,是那些博士们才能搞的高级学问。但不知怎地就突然来了兴趣,想学一学,了解一下。巧的时,刷推的时候有人正好提到这套课程。略一了解之后,就毫不犹豫地报了名。

这套课程的内容和时间安排如下:

  1. 课程一:Neural Networks and Deep Learning
    • 时间:4 周,每周 3-6 小时
  2. 课程二:Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
    • 时间:3 周,每周 3-6 小时
  3. 课程三:Structuring Machine Learning Projects
    • 时间:2 周,每周 3-4 小时
  4. 课程四:Convolutional Neural Networks
    • 时间:4 周,每周 4-5 小时
  5. 课程五:Sequence Models
    • 时间:待定

第五个课程目前正在紧张制作中,一月份应该可以上线。

算起来前四课程一共需要 13 周时间,每周只需花 5 个小时左右就行。如果时间充裕,3、4 周时间就能完成。

下面是我觉得这套课程比较值得称赞的几点:

  1. 深入浅出,通俗易懂

    对很多人来说,跨入机器学习领域的一大障碍就是数学。很多人,包括我都是因为听说机器学习要求极高极深的数学知识,而不敢跨出第一步。昨天发推晒我的成绩时,还有人回复说要先去补补数学再考虑学习机器学习。我在报这套课程之前还专门买了高数、线代、概率的教科书来准备复习一遍。

    但是这门课会告诉你,那些担心都是多余的。老师讲的非常通俗易懂,再配以生动的图文,即使在大学的时候高数挂科的人都能听懂。

  2. 分拆合理,主题明确

    这套课程把几乎所有的机器学习相关的内容分拆成五个课程,由浅入深,循序渐进;每一个课程又被拆分成 2-4 周,同样是由底层到高层,由简单到复杂;更值得称道的是,每周的课程还被分拆成了若干个视频片段,每段视频只讲一个主题。

    这和学校里的课堂不太一样。学校里的课一般是老师连讲两个小时,一股脑地罗列好几个概念,中间几乎没有停顿。稍一走神儿,就跟不上节奏,不知道现在讲的是哪个问题了。

    而这套课程把每周要讲的概念或者要解决的问题,分拆成若干段视频。你可以很容易地每次集中精力在某一个问题上。

  3. 课后习题,验证理解

    这套课程在每周的视频讲解之后都安排了十道问答题。这些问答题可以有效地帮助你验证自己对本周课程内容的理解。

    我学下来的感受是,这些题的意义非常重要。就像是锚一样,把我们刚刚所学的知识锚在了那里,不会过一段时间,或者是学了后面的内容之后,这些知识就都漂走了。

    老师讲解的再清楚,总还是有些问题在我们脑子里似是而非。做过这些题之后,刚刚学过的知识就更牢固地印在头脑中了。

  4. 编程练习,加深理解

    这应该是这套课程最重要的一点了,也是这套课程的意思所在了。三百多块钱的价值就是在这体现的。

    首先,动手写代码是学习任何计算机知识最重要的一环。无论如何强调它的重要性都不为过。

    其次,机器学习与其他计算机知识不同,即使你按着你的理解把知识转化成代码了,并且也正常运行了,你仍然不知道你的实现是好的还是坏的,甚至不敢说是对的还是错的。如果没有一个标准作为反馈,自己都会对所学到的产生怀疑。

    这套课程每周都有一两个编程作业。这些作业把所有干扰你理解课程知识的细枝末节都帮你做了,比如初始化、加载数据,你只需专注于课程中所学的核心即可。这些作业每一步都紧跟测试用例,步步验证你的代码对错,免除了你从一大堆代码里调试错误的繁琐,节省大量时间,并使学习更加顺畅。

  5. 社区讨论,答疑解惑

    如果做完习题,写完代码,你还有问题不明白,那可以去社区讨论一下。那里有很多学这套课程的人,并且有指导员耐心回答问题。同侪讨论,于学问大有裨益哈。

以下是这套课程的不足之处:

  1. 字幕

    视频字幕的制作可以说是这套课程最大的瑕疵了。

    前几课还是有中文字幕的,后面就没了。中文字幕我看的不多,不知道翻译质量如何,不做评论了。

    即使是英文字幕,也是有不少错误。有时候觉得这是通过视频由机器生成的字幕。有几节课的字幕错乱了,同时显示两行,很影响观看。更有一节课的字幕时间轴完全对不上,只能关掉字幕盲听。

    哎,我这渣英语水平。

  2. 习题

    前几课的习题做的非常用心。提交之后不只是显示对错给出评分,还会讲解每个选项为什么对为什么错。后面几课就只给出对错和评分了。

  3. 编程

    编程作业的问题不多。但是偶尔也有一两个 bug 。四个课程我一共遇到两个。不过,社区讨论中都有提及。

    目前课程制作团队正在紧张地制作第五个课程,还没精力来修复这两个 bug 。如果遇到问题,可以先搜一下社区讨论中的帖子。

开篇说我对机器学习是零基础,可能有点言过其实。在学这么课程之前,我其实已经看了一周左右的相关课程。比如,周沫凡的机器学习入门,还有台湾李弘毅老师的机器学习课程。还花了几天时间熟悉了 IPython,看的是 Tacey Wong 翻译的一本小册子

正是在跟着李弘毅老师的课程学习机器学习,做完第一个作业时,我才意识到自己写出来的代码没人帮忙验证对错,也没有习题来验证自己的理解是否有偏差。这才在听说吴恩达老师的这套课程后立马报名的。

前面我也说过这套课程对数学要求不高。但并不是说机器学习这个领域对数学要求不高。随着对机器学习的深入,肯定会越来越依赖你对数学,尤其是微积分、线性代数、概率论的理解。但,针对这套课程来说,你真的不用太担心。

如果能提前熟悉一下机器学习的基本概念、IPython/Jupyter Notebook 环境、numpy/matplotlib/TensorFlow/Keras 这几个库的话,肯定对学习这套课程有所帮助。当然,不了解也是完全没有问题的。

最后向大家推荐一下我认为比较好的学习步骤。

  1. 先认真看一遍视频。可以随时暂停或者回放;
  2. 把一周的视频都看完之后,再从头过一遍并做笔记,把所有知识点在本子上写下来;
  3. 做完笔记之后再做习题。争取全部做对。八小时之内可以提交三遍。如果三遍之后还有题是错的。那就等八个小时再做一遍提交;
  4. 做编程作业,包括所有可选的部分。提交并通过之后,再回头改改参数、试试自己的数据等等,『把玩』一下。

最后的最后,强烈建议大家在学完每个课程之后,把视频、字幕、习题、编程作业都下载下来保存。这些习题和编程作业,是自己花费了不少时间和精力做出来的,更重要的是编程作业中的代码结构是非常棒的。这些都有非常高的参考价值。而过一段时间后,网站上的课程可能会访问不了了。尤其是编程作业,一定要保存成 .ipynb 并把相应的资源都按原目录结构下载下来,步骤如下:

  1. 在 Notebook 页面点 File - Open… ;
  2. 在新开的页面会看到一个文件列表,挨个把所有文件都下载下来,并按原目录结构保存;

正如课程中所说的,机器学习正在深刻地变革着诸多工业。那我们还犹豫什么,学起来吧。

Get your hands dirty. Just do it.

by Soli

2018-01-13

Creative Commons License Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 4.0 International license .