Geoffrey Hinton 「神经网络与机器学习」课程简评

Geoffrey Hinton 的「神经网络与机器学习」课程是机器学习领域长久不衰的经典之一,Arthur Chan 在 The Grand Janitor 发表了一篇关于 Hinton课程的回顾文章,机器之心对其做了编译。

对我而言,完成 Hinton 的深度学习课程(https://goo.gl/GbC3qd)或者神经网络和机器学习(Neural Networks and Machine Learning,NNML)课程是一个期待已久的任务。要知道,该课程于 2012 年首次启动。那时候,我还没那么相信深度学习的能力(https://goo.gl/eWVN2I)。当然,大约在 2013 年我改变了想法,却发现停课了。直到 2 年以后我才决定去上吴恩达关于机器学习(https://goo.gl/CkmL7d)的课程,最后我终于可以再次去上 Hinton 曾经的课了。但是他的课程直到去年 10 月份才再次恢复,我决定再听一次,比如,把所有的视频再看一次,完成所有的作业并且拿到课程学分。通过我的学习历程,你会发现这门课很难。所以有些视频我看了 4 到 5 次才弄明白 Hinton 到底在说什么。有些作业我用了很多精力才想通。最后,我还是完成了所有 20 项作业。我甚至还买了一个可以炫耀的证书(https://goo.gl/cssHj8)。总的来说,这是一段让人耳目一新、发人深省且令人满意的经历。


所以,本文是我对课程的回顾,以及为何、何时你应该修它。我也会讨论一个在论坛上不时出现的问题:考虑到现在有那么多深度学习课程,Hinton的版本会不会已经过时了?亦或是它仍旧是入门者的最佳选择?我会最后解答这个问题。

困难的旧版本

我佩服那些用 Coursera 上的老版本完成该课程的人。众所周知,NNML 比吴恩达的机器学习(https://goo.gl/gg9iSd)难得多,也正如这里的评论所言(https://goo.gl/EhfiAa ;https://goo.gl/BwAjSs)。我朋友中很多有博士学位的人都不太能跟得上 Hinton 课程的后半部分。


难怪:当 Kapathay 在 2013 年回顾它(https://goo.gl/u3Ycv7)的时候,他注意到该课程涌入了一群非机器学习人员。对新手来说,理解诸如像能量模型(energy-based model,EBM)这样的主题会显得非常吸引人,要知道能量模型非常难以理解。或者深度信念网络(deep belief network ,DBN)呢?今天人们依然将其与深度神经网络(deep neural network ,DNN)相混淆。老实说,由于深度信念网络如此难以理解,我至今不能真正理解第 15 讲里的一些证明。


老版本只允许 3 次测试尝试,而且时间很紧,你只有一次机会去完成课程。有个家庭作业要求从零开始反推反向传播的矩阵形式。这一切都使这门课不适合于像我这样很忙的人。但是对于那些 2 到 3 年级的研究生甚或是那些有充足时间的从业者来说更加不适合(但是,谁适合?)。

新版本更简单,但仍然具有挑战

当 Coursera 将大部分课程替换成新版本并允许学生重修以后,我去年 10 月又修了一次新版课程,他们去掉了任务里一些困难的部分,让它更适合于时间不太充裕的人。但是这并不意味着这门课就会很轻松:大部分内容里,你都需要反复研究课程内容,弄清里的数学原理以及伪代码等等。要求你推导反向传播矩阵的家庭作业依然还在。优点是:你依然可以领略深度学习的快乐。(笑)缺点是:你不应该期盼自己一周不花个 10 到 15 小时就通过课程。

为何该课程具有挑战(一):数学

不同于吴恩达的课程和 cs231(视觉识别的卷积神经网络:http://cs231n.stanford.edu/),NNML 对于没有微积分背景的新手来说并不简单。里面的数学依然不是特别困难,大部分是链式微分,对 Hessian 原理的直观理解,更重要的是,向量微分——但是如果你从未学过——这门课对于你而言就会很难。在你上课之前,至少去上上 微积分 1 和 2,并且从《矩阵食谱》(https://goo.gl/hG9iCq)中了解一些基本方程。

为何该课程具有挑战(二):能量模型

这门课程困难另一个的原因是,课程的后半部分全部基于所谓的能量模型(EBM),例如霍普菲尔网络(HopfieldNet),波尔兹曼机(BM)和受限玻尔兹曼机(RBM)。即便你习惯于监督学习方法涉及的数学知识,比如线性回归、逻辑回归甚或是反向传播,RBM 的数学知识也仍然可以虐爆你。难怪:这些模型中的很多有其物理来源,如 Ising 模型(https://en.wikipedia.org/wiki/Ising_model)。深度学习研究也频繁使用使用来自贝叶斯网络的想法,比如: explaining away(https://goo.gl/IJ4cFc) 。如果没有物理或贝叶斯网络的基本背景知识,你会感到相当困惑。


对我而言,我花了相当一部分时间在搜索引擎上搜索资源,阅读相关文献,这个方法让我通过了一些测试,但是我不会假装我明白了那些主题,因为它们很深奥且反直觉。

为何该课程具有挑战(三):循环神经网络

如果你最近想学习 RNN,可从 Socher 的 cs224d(http://cs224d.stanford.edu/)课程开始或者读 Mikolov 的论文。LSTM(长短期记忆网络)会很容易成为你仅有的解决 RNN 梯度爆炸/消失的想法。当然,还有其它办法:回声状态网络(echo state network,ESN)和 Hessian-free 方法。近来人们很少对它们进行讨论。此外,它们的方程形式也和诸如反向传播、梯度下降这样对你们而言的标准方法相去甚远。但是学习它们可以扩宽你的视野,而且可以让你思考现在做的事情是否正确。

但是,它赞吗?

当然了!待我在下章为你一一道来。

为什么赞?

如果你想尝试一下更酷一点的机器学习/深度学习研究工具,不妨去上吴恩达的课,尝试一下各种应用,然后宣称自己是这方面的专家——好吧,许多人都是这么干的。事实上,吴恩达的课就是为了让你感受一下深度学习,而且事实上,课后你就能使用许多机器学习工具了。


也就是说,你应该意识到你对机器学习/深度学习的理解还是相当肤浅的。或许你认为,“哦,我有数据,把这些数据扔进算法吧!”“噢,我想用 XGBoost,是的!它总能跑出最好的结果!”不过,你应该意识到,性能数字并非一切。重要的是理解模型的运行情况,缺乏理解的时候,你很容易做出短视的决定,代价高昂。很多同行都出现过这种情况,甚至一些导师也犯过这些错误。


不要犯错!要总是寻求更好的理解!试着心意相通(grok)。如果只完成吴恩达的课后作业,那么,你现在仍然会想知道如何将工具应用到其他任务中。参加 Hinton 的课程后,你会被他说的弄得迷惑不解,不断重复这一过程。然后,你就可以开始更好地理解深度学习了。


还有一个技术小贴士:如果你想学习深度无监督学习,我认为也应该首先学习这个课程。Hinton 会教你理解这些机器的直觉方面的内容,你也有机会应用到它们。诸如 RBM 、Hopfield net 这类模型,如果你有基础的 octave 编程经验,还是可以做一下的。

这么赞,不过,是不是过时了?

今天的学生幸运多了,有很多深度课程可以选择,比如深度学习。看看我自己最爱的 5 个课程榜单吧(吴恩达的 Machine Learning 、李飞飞和 Karpathy 的j计算机视觉课程 Stanford cs231n 2015/2016、Richard Socher 的深度学习和自然语言处理 Standard cs224d、David Silver 的强化学习以及 Hinton 的神经网络)。


不过,我仍然推荐 NNML 这门课程,有四个原因:


  1. 比其他基础可能要更深更难。NNML 不好学,不完全是数学的东西(Socher 和 Silver 课程的数学比重很大),而是概念性的,比如能量模型,训练 RNN 的不同办法也是一些案例。

  2. 机器学习或深度学习中的许多概念都可以从其他角度来观察。比如,在频率论者眼里,偏差(bias)/方差(variance)就是一种权衡,不过,贝叶斯阵营的人将它们视为“频率论的错觉”。BP、梯度下降也有这样的情况。一旦你尝试思考,你会发现这些概念并不好懂。因此,这门课不是仅仅教你一些概念,而是让你学会从不同角度看问题。从这个意义上来说,NNML 真的是不二之选。长时间散步时,我总是会思考 Hinton 的一些观点。

  3. Hinton 的视角——过去三十年中,他处于机器学习的不利的一方。但是,他坚持下来了,从这门课中,你将感受到他如何(以及为什么)开始某项研究,或许以后你自己也能研究些东西。

  4. 他传达知识的方式很幽默。比如,第 10 讲中谈及在上世纪八十年代,物理学家为什么研究神经网络时,他讲的很幽默。(注意:在研究神经网络前,他也是位物理学家。)

结论与下一步打算

总的说来,Hinton 的「神经网络和机器学习」是一门必修课。无论是初学者还是专家们,都会从这本课的广度和 Hiton 的观点中受益良多。


如果你真的是小白,那么,最好先上吴恩达的课,或许再学一下微积分 1 或 2  、线性几何以及概率与统计学。这样,上课就不会感觉吃力了。我认为,Kapathy 和 Socher 的课程可能比 Hinton 的课程要容易一些。


如果你已经修过了,不放看看其他值得一上的基础课程,可以参考我的这篇文章"Learning Deep Learning - My Top 5 List",或许会知道接下来该学点什么了。这里需要特别提示一下:Daphne Koller 的概率图模型也相当难,或许能让你对非常深的问题(比如深度信念网络)有更清晰的理解。


还有一个建议:或许你可以再学一遍该课程。如上所述,我打算半年后就再学一遍,搞清楚之前没有搞懂的一些细节。不过,可能要来个 6 到  7遍才能真正弄懂吧。

附:其他免费计算机科学在线课程地址:https://goo.gl/wIx8T640.png


原文链接:http://thegrandjanitor.com/2017/04/10/review-of-hintons-coursera-neural-network-and-machine-learning/

入门机器学习神经网络Geoffrey Hinton课程入门深度学习