深度学习究竟怎么入门?两位Google大神掀起剑气之争

2018 年 3 月 11 日 量子位 关注前沿科技
夏乙 发自 凹非寺
量子位 出品 | 公众号 QbitAI

作为一名 华山派新弟子 深度学习新手,该先学会用框架快速搭出神经网络,用到实际问题中去,还是该先练习用Python基本徒手搭建模型,在小数据集上训练,了解它们的工作原理?

谷歌的两位研究员最近在Twitter上展开了一场旷日持久的争论,两派主要代表都是圈子里大名鼎鼎颇有建树的人物:

“气宗”代表 谷歌大脑的研究员David Ha(@hardmaru),SketchRNN的爸爸。

“剑宗”代表 谷歌研究员François Chollet(@fchollet),Keras的爸爸。

注: “气宗”“剑宗”无任何道德、派系等层面的影射,不要多心

剑气之争

这两位所争论的问题,正是 内力和剑法哪个更重要 深度学习新手的入门路径问题:了解模型的内部原理,和快速实现模型解决问题,哪个更重要呢?

量子位越洋围观了这场辩论,觉得他们的观点很值得搬回来让大家了解、思考一下。

在David Ha看来,想搞好深度学习,当然要先打基础,“练气”很重要。他在一个月前抛出了这样一个观点:

从零开始(用纯Python、numpy、甚至JS)实现全连接网络、卷积神经网络、RNN、反向传播、SGD,然后用小训练集来训练这些模型是一种学习神经网络如何工作的好方法。在跳到框架上之前,应该花时间从这里收获宝贵的直觉力。

新手入门,难道不该用最简单的高层框架吗?Keras作者Chollet就更支持初学者们先“练剑”。他对David的反驳是这样的:

实现神经网络能教你怎样实现神经网络,让你从算法上理解它们的工作原理。

但这不能教会你它们是做什么的,或者说能否实现哪些功能。要学习这些,你应该把它们应用到一系列真实问题上去(而不是XOR、MNIST)。

究竟谁更有道理?两位过招七八条Twitter,来详细论证自己的观点,看完再选适合你的方法也不迟。

以气驭剑

徒手搭模型,拿MNIST这样的小数据集、甚至XOR来琢磨其中奥妙,显然不是速成之法。那么,花这么多时间“打坐练气”的意义何在?

追求的,当然是一个以气驭剑。

David Ha说,深度学习框架都是些样板化的模型,入门就用框架,会限制眼界,让你泯然众人。

从零开始徒手搭模型就不一样了,对于那些跨行业入门深度学习的人来说,有机会从自己的独特视角,看到大多数人忽略的东西。

“气宗”不止David一人。李飞飞的得意门生、现任特斯拉AI总监的Andrej Karpathy也表达过类似观点。

他在斯坦福CS231n课上就要求学生将神经网络的向前和向后传递都用numpy实现一遍。学生当然有意见:拿个框架就能自动算的东西,我为什么要徒手来搭?

最重要的原因是,徒手将向前和向后传递都实现一遍才能真正理解其中的工作原理。如果单纯依赖框架的自动计算,在反向传播出现问题时就无法应对。

Karpathy为此专门写过博客一篇:
https://medium.com/@karpathy/yes-you-should-understand-backprop-e2f06eab496b

有些知行合一的实践者,说这样学习很有收获:

比如说Oculus VR的CTO John Carmack也在琢磨深度学习,前不久,不擅长休假的他花了一周时间专门休假闭关写代码(So…量子位休假应该闭关写稿😱)

身为资深高阶码农,Carmack没装TensorFlow没用PyTorch,而是用C++从零开始写了一些神经网络实现,包括其中的反向传播,然后用MNIST做了一些实验。

他说经过这一番折腾,他对过度训练、泛化、正则化有了更好的深层理解。

BTW 插播一个推荐,Carmack作为一个不爱看视频课程的人,高度赞扬了斯坦福CS231n公开课。

还有更极致的。另一位资深码农Thomas Lahore说他当年入门机器学习时,故意先什么文献、课程都不看,自己思考了几个月,这段经历对他来说非常宝贵。

他们,都是David心目中基础扎实的好学生。David特别强调对背后原理的理解,他说这不仅有利于更快消灭bug,在现有范式之外进行延展解决新问题的时候也更有信心。

更重要的是,“(基本徒手搭个神经网络)真没那么难,又不是让你写个像Keras那样深思熟虑的框架出来。:)”

一招制敌

对于上面这种学习方法,Fast.ai创始人Jeremy Howard路过参与到话题中来,吐槽了“气宗”的最强大势力:高校里的计算机专业。

他说,计算机学位教育非要让人先从底层开始构建一堆东西,然后才能学习那些抽象的东西,结果他有很多朋友大一没读完就退学了。

枯燥,确实是徒手搭建神经网络的一大缺陷。

不过,Chollet对这种方法的反对是出于别的原因。这位大佬能造个Keras出来,当然不至于认为实现神经网络太难或者太枯燥,他觉得这种方法,实在不够学以致用。

招式内部原理分析得再清楚,不知道该用在哪儿,也是白搭。

Chollet举了很多例子来说明这一观点:

练习手写奇异值分解(SVD)有什么用?写完还是不知道SVD能干什么,把它用到各种数据集上看结果,才能获得直观的印象。

研究生们2000年就会用C语言写神经网络了,可是他们对神经网络的理解,可能还不如一名只会鼓捣框架的2018年高中生,毕竟现在有更多的应用环境。

现在很多人从没动手实现过,也对神经网络挺熟练的,知道这个东西如何工作。10年后,这样的人可能会占90%,就像现在的软件工程师了解操作系统,但基本都没开发过操作一样。

还来了一段现身说法:

“我2009年念书的时候,第一次用C语言写了神经网络,从中学到的C比神经网络多。后来又过了好几年我才开始理解神经网络能干什么,为什么有用。关键在于更好的工具+现实世界数据集上的应用。”

总之,时代在进步,下一代学的东西就是更抽象,不该拿老一套方法来要求学生们了。

他建议学生们去参加Kaggle竞赛,除了神经网络之外也用一用其他的机器学习模型,再通过可视化方法来探索其中的特征。

“剑招”已经打包好了。Chollet希望未来的学生们知道什么时候该出哪一招,对于内部的原理,其实不必深究。

要兼顾?

在Twitter上参与到这场争论中来的路人,支持哪一方的都有,当然,最多的观点是“都重要,要兼顾”。

不知道国内的小伙伴怎么看?

祝气宗的徒儿剑法高,剑宗的师叔内力强。

加入社群

量子位AI社群15群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot6入群;


此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。


进群请加小助手微信号qbitbot6,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



登录查看更多
8

相关内容

人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。 最近十多年来,人工神经网络的研究工作不断深入,已经取得了很大的进展,其在模式识别、智能机器人、自动控制、预测估计、生物、医学、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。
《深度学习》圣经花书的数学推导、原理与Python代码实现
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【干货】谷歌Joshua Gordon 《TensorFlow 2.0讲解》,63页PPT
专知会员服务
24+阅读 · 2019年11月2日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
160+阅读 · 2019年10月28日
【开源书】PyTorch深度学习起步,零基础入门(附pdf下载)
专知会员服务
107+阅读 · 2019年10月26日
PyTorch  深度学习新手入门指南
机器学习算法与Python学习
9+阅读 · 2019年9月16日
【深度学习】深度学习的问题究竟在哪?
产业智能官
4+阅读 · 2019年8月30日
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
年薪48万的程序员,他究竟做对了什么?
机器学习算法与Python学习
7+阅读 · 2018年12月28日
入门 | 一文看懂卷积神经网络
机器之心
5+阅读 · 2018年2月20日
通俗理解卷积神经网络(小学生都能看懂)
七月在线实验室
9+阅读 · 2018年1月25日
CapsNet入门系列之一:胶囊网络背后的直觉
论智
8+阅读 · 2017年11月20日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
The Matrix Calculus You Need For Deep Learning
Arxiv
11+阅读 · 2018年7月2日
Arxiv
19+阅读 · 2018年6月27日
Arxiv
8+阅读 · 2018年1月25日
Arxiv
10+阅读 · 2017年12月29日
VIP会员
相关VIP内容
相关资讯
PyTorch  深度学习新手入门指南
机器学习算法与Python学习
9+阅读 · 2019年9月16日
【深度学习】深度学习的问题究竟在哪?
产业智能官
4+阅读 · 2019年8月30日
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
年薪48万的程序员,他究竟做对了什么?
机器学习算法与Python学习
7+阅读 · 2018年12月28日
入门 | 一文看懂卷积神经网络
机器之心
5+阅读 · 2018年2月20日
通俗理解卷积神经网络(小学生都能看懂)
七月在线实验室
9+阅读 · 2018年1月25日
CapsNet入门系列之一:胶囊网络背后的直觉
论智
8+阅读 · 2017年11月20日
Top
微信扫码咨询专知VIP会员