【新智元导读】本文作者两次完成 Hinton 在 coursera 上的经典课程“机器学习中使用的神经网络”,他对这门课程作了总结介绍并极力推荐:这门课很难,但绝对是必修课。
我很久以前就完成了 Hinton 的“机器学习中使用的神经网络课程”(Neural Networks for Machine Learning,以下简称 NNML,课程地址:https://www.coursera.org/learn/neural-networks),如你所见,这个课程是2012年首次推出的,当时我对深度学习还不很信服。当然,我的想法在2013年左右改变了,但这个课程我一直存着。直到两年之后,我决定上 Andrew Ng 的《机器学习》课,然后得以过了一遍 Hinton 的这门课。但在去年10月,这门课再次开课时,我决定再次行动,即再观看一遍所有视频,完成所有作业,并获得通过课程的成绩。当你阅读我的总结,你会发现,这门课很难。所以有些视频我起码观看了4~5遍,才能理解 Hinton 的解释。其中一些作业我花了很多时间思考。最终,我通过了所有20次作业,甚至花钱买了一个让我可以吹嘘的证书:这是一次全新的、发人深省的、同时也是令人满意的体验。
本文是我对这门课的回顾,我也会说明为什么这门课值得学,什么时候应该学。我还讨论了一个经常出现在论坛上的问题:既然现在已经有如此多的深度学习课程,Hinton 的课是否已经过时?还是 Hinton 的这门课仍然是最好的初学者课程?本文最后,我会就这些问题进行回答。
旧版课程很难
我钦佩哪些用旧版 Coursera 平台完成这门课的人。有许多学员评论说,NNML 比 Andrew Ng 的机器学习课要难的多(Andrew Ng 的 Machine Learning 课地址:https://www.coursera.org/learn/machine-learning),甚至许多 PhD 都不太跟得上 Hinton 在课程前半部分讲的内容。
这不难理解:2013年 Kapathay 在一篇总结文章(地址:https://plus.google.com/+AndrejKarpathy/posts/4FtyNBN5A38)中写道,有许多非 ML 研究者涌入学习这门课程。对新来的人来说,了解诸如 energy-based models 这样的许多主题虽然令人着迷,但许多人能跟上是很困难的。还有深度置信网络(DBN),现在仍有许多人将它和深度神经网络(DNN)混为一谈。坦白说,学了一遍这门课程之后,lecture 15的一些内容我仍然不能说完全理解了,因为深度置信网络真的是很难的主题。
旧版课程只有3次测验,而且截止日期很短,你只有一次机会能完成课程。其中一个作业要求你从头推导 backprop 的矩阵形式(matrix form)。这些使得这门课程不适合忙碌的人(比如我),而更适合的是二年级或三年级的研究生,或者有足够多的时间的从业者。
新版课程更容易,但仍然很具挑战性
我于去年10月份开始上这门课,当时 Coursera 的大部分课程都改成了新的形式,学生们可以重新注册。新的形式取消了一些太难的任务,使得课程更适合忙碌的人。但这并不意味着它很轻松:大多数情况下,你需要听讲座,做数学题,编伪代码,等等。推导 backprop 的作业也仍然不变。好的方面是:你仍然可以得到深度学习的所有乐趣。缺点:不花上 10~15小时/周的时间,就不用期望通过这门课了。
为什么这门课具有挑战性——Ⅰ:数学
与吴恩达的 cs231n(斯坦福“视觉识别的卷积神经网络”课,地址:http://cs231n.stanford.edu/)不同,NNML 对没有学过微积分的初学者来说并不容易。数学本身还不算太难,主要是链式法则微分,Hessian,还有矢量微分(vector differentiation)——如果你从来没有学过,那么这门课程之难将会超出你的想象。因此,在注册这门课程之前你至少应该先学微积分Ⅰ和Ⅱ,并利用 Matrix Cookbook 了解一些基本公式。
为什么这门课具有挑战性——Ⅱ:Energy-based Models
这门课难的另一个原因是后半部分都是以所谓的 Energy-based 模型(RBM)为基础的,即Hopfield 网络(HopfieldNet),波尔兹曼机(BM),受限玻尔兹曼机(RBM)等模型。即使你习惯了线性回归、逻辑回归、甚至反向传播,RBM 数学仍然会让你头大。原因:这些模型很多都源自物理学,例如伊辛模型(Ising Model)。深度学习研究也经常使用贝叶斯网络的思想。如果你没有物理学或贝叶斯网络的背景知识,你也会感到头大。
我的做法是:我花了很多时间去 Google 搜索,然后阅读相关的文献,再通过小测验强化,但我不会假装我理解了这些主题,因为它们真的相当深而且不直观。
为什么这门课具有挑战性——Ⅲ:递归神经网络
如果你最近学了 RNN,很可能是从 Socher 的 cs224d(斯坦福NLP深度学习课程,地址:http://cs224d.stanford.edu/)或者通过阅读 Mikolov 的论文学的。在思考如何解决 RNN 的梯度爆炸/梯度消失问题时,LSTM 很可能是你最先想到的方法。当然,还有其他的方法,例如回声状态网络(echo state network)和 Hessian-free 方法。这些方法最近很少讨论了。再次,它们的公式与你的标准方法(例如 backprop 和 gradient-descent)完全不同。但学习它们能给你广度,让你思考是否标准的方法就是正确的方法。
那么这门课好吗?
当然!接下来的部分我会详细说明这点。
为什么好?
假设你只是想使用 ML / DL 的一些好用的工具,你可以学 Andrew Ng 的课程,试验一系列的实现,然后就可以自以为是专家了——现在很多人正是这样。实际上,Ng 的机器学习课程的设计就是只给你尝试一下 ML,而且你确实能够在课程完成后学会使用许多 ML 工具。
也就是说,你应该意识到你对 ML / DL 的理解还是非常浅的。你可能在想:“哦,我有一堆数据,让我们把它们喂给算法 X!”或者,“哦,我们只要用 XGBoost 就行了,对吧!它总是能有最好的结果!”你应该意识到“性能”的数字不是一切。而了解你的模型发生了什么很重要。缺乏对模型本身的理解的话,很容易出现短视,付出昂贵的不明智决定。很多人都是这样,包括我,我的许多同事,甚至我的一些导师。
不要犯错误!要一直追求更好的理解!如果你只做过 Ng 课的神经网络作业,那么现在你仍然不知道如何将这些方法应用于其他任务。去上 Hinton 的课,去对教授讲的内容头大,重复这个过程。然后,你将能够更深入地理解深度学习。
还有一个有关技术的说明:如果你想学习无监督深度学习,我认为这门课可以是第一个课程。Hinton 教授讲了许多这些机器的直觉知识(intuition),你也有机会去实现它们。对于像 Hopfield net 和 RBM 这样的模型,如果你了解基本的 octave 编程,是相当可行的。
我知道这门课很好了,但它已经过时了吗?
现在的学习者比较幸运,对于深度学习这个领域,现在有很多可以选择的课程。比如这里有我选出的 top 5(地址:http://thegrandjanitor.com/2016/08/15/learning-deep-learning-my-top-five-resource/),前面提到的 cs231n,cs224d,以及 Silver 的课都是非常好的。
但我仍然极力推荐 NNML,原因如下:
结语
总而言之,Hinton 教授的这门 Neural Networks for Machine Learning 课程是一门必修课。对所有人,包括初学者和专家都将受益于 Hinton 的观点和思想的广度。
如果你完全是初学者,我建议你先学学 Ng 的课,以及先学微积分Ⅰ和Ⅱ,再加上一些线性代数、概率学和统计学,这会让你在上 Hinton 这门课时更容易。
另一个建议是:有可能的话可以再次学这门课。这也是我计划半年后做的事情——正如我前面说了,我不是完全理解这门课的每个知识点。但是,我想学到第6或第7遍的话,我可能能够完全理解了。
原文地址:http://thegrandjanitor.com/2017/04/10/review-of-hintons-coursera-neural-network-and-machine-learning/