再谈“炼金术”:可以使用不严谨的方法,但拒绝不严谨的评估方法
原作:inFERENCe
安妮 编译自 inference.vc
量子位 出品 | 公众号 QbitAI
昨天,NIPS大会中“Test of Time”最具时间价值大奖的获得者Ali Rahimi(阿里·拉希米)在演讲时表示,机器学习已经成为了炼金术。此话一出,就引发了大量讨论。
在Reddit上这个话题同样火爆,剑桥大学博士Ferenc Huszár在他的博客inFERENCe阐述了自己的观点,获得了很多人的支持。
他到底说了什么?他怎么看?
像大家一样,我很欣赏阿里在NIPS上的演讲,并且推荐所有人都去看一看。
我也看到了Yann LeCun对阿里演讲的反驳,表示阿里所说的炼金术实际上是工程学。尽管我认为他所反对的观点阿里在演讲中并没有提,但对于技巧(tricks)、实验性证据和理论在工程中扮演的不同角色,LeCun提出了一些非常重要的、不错的想法。
我也想谈谈自己的想法和经验。
不同的创新模型
我们可以将机器学习的知识看成是一张图,在这张图中,各种方法用节点表示,而线条代表着方法间的联系和类比。
创新意味着在这张图上画上新的内容,这里有很多画法——
1. 增加新的节点:
这意味着你需要跳出思维定势,发现一些全新的、古灵精怪的可行方法。最近这种类型的机器学习中的创新做法很多,比如herding、noise-as-targets、batchnorm、dropout或GAN。我们在图中添加了新节点,它可能与图的其余部分连接关系很弱,最初大多数人可能不太清楚你的逻辑和推理。
2. 发现现存节点间的联系
这是在寻找新方法的解释——把K-均值当成期望最大化、把dropout和随机梯度下降当成变分推理、把GAN当成f-GAN、把batchnorm当成自然梯度、把去噪自动编码器当成评分匹配等。我们迫切需要在机器学习中使用这种有影响力的方法,因为这些联系帮助我们改进和推广技术,使我们的进展更可预测。
3. 完善模式
这是类比推理。我们注意到图中不完整的模式,推断出一些节点只能在完善了模式后才存在。在2010年NIPS研讨会上,我记得Zoubin Ghahramani开了个玩笑,讲了他和Sam Roweis是通过补全超立方体上的节点撰写一堆了论文,具体如下图所示。值得注意的是,这种“模式完善”在贝叶斯世界之外也发生了,例如双向卷积RNN或PixelGAN自动编码器。
每一种创新模式在构建知识和进步的过程中都至关重要的。我们的圈子更看重上述的第一条(只要论文的标题中有流行词);而大家为了发paper,又而第三条的风险最小、最容易完成,因此大家在这上面也花了很多功夫。
而第二步总是最容易被忽视的,这也是我理解的阿里演讲的主要内容之一。过度关注基准、数据集和实证结果,我们实际上是在为那些研究各种方法为什么管用或无效的研究人员设置障碍。
还记得最初的GAN论文中的结果吗?这个结果在当时让人非常震惊,但现在看起来甚至有些拿不出手:
GAN可以说是一个非常有影响力、伟大的新想法。今天,同样结果的论文将无法出版,因为图片看起来不够漂亮。Wasserstein GAN(WGAN)的想法不错,无需去看实验结果。
Yann LeCun说神经网络在90年代由于缺乏凸优化方法所具备的收敛保证,而被不公平地抛弃,同样,今天我们也在不公平地否定任何不产生最先进结果的方法。
我曾经评审过一篇论文,另一位评审员写道:“如果这种方法与现有方法相比,能成为XX领域最有效的方法,那这篇论文就很不错。我想说,这种想法的错误程度,不亚于因为没有理论支撑就否定新想法。(顺便说一句,阿里也没这么说)。
可以使用不严谨的方法
但不能使用不严谨的评估方法
就我而言,我也习惯了使用不严谨的方法,或者理论框架不完善或不存在的方法。但是,
任何人都不应该对那些评价体系不严谨的论文感到满意。
在我看来,有关GAN的论文大多向我们展示了一些漂亮的图片,但我们没有严谨的方法来评估样本的多样性,或者是否有任何形式的过拟合。
根据我的经验,将一个足够新颖的深度学习理论应用于实践是一个脆弱的过程:一开始不管用,然后可能终于管用了却不收敛,接下来又收敛到了错误的地方……这种东西通常是突然管用了,却不清楚具体它有用的原因是什么,这个过程类似于多个假设测试。
你做了数不清的实验,得到了超出你期望的目前最好的结果。潜在的问题是,我们将软件开发过程的需要,与实现手动超参数搜索和选择出的最好结果混为一谈。因此,我们在论文中提到的“经验证据”,可能没有我们期望中的那么公正可靠。
理论一旦出现,就不应该抵制它
我同意Yann的观点,在找到理论支持或严谨的分析之前,先开始采用技术是有好处的。然而问题在于,找到了理论支持之后,基于经验表现的推理往往还会胜过严谨性。
我遇到过几次这种模式:有人提出了一个想法,使用了非常大的神经网络和大量的技巧,经过几个月的手动调整和搜索超参数,在一些大型复杂的问题上运行得很好。但我发现这个方法有一个理论问题。但他们却反驳说:这个方法在实践中运行良好,所以我没有看到问题。
我之前写过两篇文章批评过计划抽样(scheduled sampling)和弹性权重巩固(Elastic Weight Consolidation,EWC)。有审稿人说,这两种方法在“现实世界的问题”上有效,而对于计划抽样方法,甚至有人评价说“这些方法毕竟是在基准竞赛中首先提出来的,肯定是正确的”。
我反对这种说法,如果一个方法可行,但可行的原因是错误的,或者和作者给出的原因不一样,我们就遇到了一个问题。
你可以把“在数据集上做一个深度学习方法”当成统计测试来看,我会认为这种方法的统计功效不足。我们做了很多事情,比如提前停止、手动调整超参数、运行多个实验或只报告最好的结果。大家可能都知道,当测试假设时,不应该做这些事情。然而,这些实践在报告实证结果时被认为是好的。许多人仍然这样做,并认为这些报告的实证结果是支持一种理论“强有力的经验证据”。
总结
感谢阿里的演讲,演讲的内容确实有些容易引起冲突,但我认为这并不是“侮辱”。可能说“挑衅”可能更确切吧。我并不认同阿里的全部演讲内容,但我不认为这是错误的。
阿里的演讲涉及到很多问题,我认为这些问题应该得到群体的认可和赞赏。严谨不是关于学习理论、收敛保证、界限或定理证明的。无论我们是否已经完全开发出用于分析的数学工具,知识的严密性是所有机器学习的准则。
严谨性意味着周密、详尽、细致。它包括了良好的实践,比如诚实地描述方法的潜在弱点,思考可能出了什么问题,设计突出和分析这些弱点的实验,在某些案例中预测算法的行为并根据经验证明它确实符合预期,拒绝使用不合理的评价方法,接受和处理批评……所有这些都应该适用于机器学习,无论深度还是不深,它们确实适用于整个工程。
— 完 —
活动报名
加入社群
量子位AI社群12群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot4入群;
此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。
进群请加小助手微信号qbitbot4,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)
诚挚招聘
量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
再谈“炼金术”:可以使用不严谨的方法,但拒绝不严谨的评估方法相关推荐
- 再谈华罗庚先生的《统筹方法》
华罗庚先生是中国最有成就的数学家之一,我在学生时代曾经学习一篇他写的文章<统筹方法>,也许是对我一生影响最深的几篇文章之一.他用非常简单.通俗易懂的文字,为我们讲述了统筹方法,如若在人们日 ...
- 拉普拉斯算子属于卷积方法吗_2020 年 GNN 开卷有益与再谈图卷积
题记 2019 年,GNN 从来没有这样繁荣过.一方面,计算机视觉.自然语言处理等领域都忽如一夜春风来,反复"发现"了自身潜在的 Graph 结构,与 GNN 融合.另一方面,GN ...
- 硬盘安装linux系统步骤分区,Linux系统“分区”方法再谈安装!(一)
1.我想使从未接触过Linux系统的人们更容易理解.因此,言语表达不是很规范和.我只需要新手就可以了解基本知识,并希望在将来进行改进和扩展.您可以转到Linux专用论坛并阅读文章以进行学习.这篇文章仅 ...
- 再谈目前QQ空间主流的赚钱方法
重点导读 同样是腾讯旗下的产品,QQ空间和微信,这两个在今年都得到了重视,各种微信营销培训和QQ空间流量培训,满天飞,让很多新手朋友眼花缭乱.在这里我就说下,用QQ空间来获取人民币.因为QQ空间流量 ...
- java数组去重_再谈JavaScript数组去重
JavaScript的数组去重是一个老生常谈的话题了.随便搜一搜就能找到非常多不同版本的解法. 细想一下,这样一个看似简单的需求,如果要做到完备,涉及的知识和需要注意的地方着实不少. 定义重复(相等) ...
- 透过数字化转型再谈数据中台(三):一文遍历大数据架构变迁史
编者按:<透过数字化转型再谈数据中台>系列连载 6-8 篇左右,作者结合自己在数据中台领域多年实践经验,总结了数据架构知识.BI 知识,以及分享给大家一些产业互联网实施经验.本文是系列文章 ...
- 再谈 BigInteger - 使用快速傅里叶变换
我在"浅谈 BigInteger"的随笔中实现了一个 Skyiv.Numeric.BigInteger 类,那时乘法是使用常规的 O(N2) 的算法,所以比 .NET Framew ...
- Unity教程之再谈Unity中的优化技术
这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体 这一步主要是为了针对性能瓶颈中的" ...
- 放在请求头目的_浅谈http的几种请求方法
脑图 目前主流使用的 HTTP 协议的请求方法是比较固定的,并没有随着大版本的提升有过多改变. 按照 常用.非常用以及扩展可以分成上图中的 3 类.要彻底掌握这些 request methods,我们 ...
最新文章
- 说话夹杂English的人:我不是要装X,只是Brain功能太强
- javascript DOM对象
- java设计模——反射的应用 (利用反射来去除if判断语句)
- Android常用代码(类似工具类吧)
- linux decode函数,Oracle 中 decode 函数用法
- 在eclipse中修改java web项目的名称
- SpringMVC跨重定向请求传递数据
- EasyUi各种消息框
- php laravel 空白,php – Laravel View Make返回空白页面
- 网络 TCP的头部 3次握手和4次挥手 出现大量TIME_WAIT或CLOSE_WAIT的原因及解决办法
- 2019湖南多校第四场
- CF125E MST Company
- 在vue-cli中使用v-for动态设置img的src值,路径对,但是不显示图片
- Javaweb重要知识点总结(六)常见的前端框架
- 宝峰c1对讲机写频软件_宝峰对讲机写频软件(BF-480 编程软件)
- Qt中使用SQLite
- 数据分析案例 |【01】电影数据分析
- 关于使用实验室服务器的GPU以及跑上TensorFlow代码
- 【opencv】动态背景下运动目标检测 SURF配准差分
- 【七夕活动精选】致你的七夕礼物——3D Heart,跳动的 3D 爱心
热门文章
- 程序员告诉你如何用技术手段玩转冲顶大会
- 苹果发布 2017 年度应用榜单,你的 App 榜上有名吗?
- 网络编程之 创建多个子进程,避免踩坑。
- 分布式事务之TCC服务设计和实现注意事项!
- 潮流仿真分析matlab,基于MATLAB的电力系统潮流仿真与研究
- php _line_,php基本语法
- jvm调优工具_JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用
- python调用其他类中的方法_无法调用其他类中的方法
- 林肯android auto,林肯mkz仪表盘怎么设置中文
- 三行代码隐藏所有console.log