10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

机器学习是科学还是“炼金术”?

  • 2021-07-31
  • 本文字数:2377 字

    阅读完需:约 8 分钟

机器学习是科学还是“炼金术”?

在实证领域,科学的严谨性是从假设开始塑造的。


业界对机器学习研究的科学严谨性的质疑声越来越多了。


在 2017 年 NIPS 会议上的一场演讲中,当时就职于谷歌 AI 的 Ali Rahimi 和 Ben Recht 认为 ML 已经成为了一种炼金术,也就是说从业者使用的方法在实践中表现很好,但在理论层面上对这些方法的理解却相当欠缺。类似地,Keras 深度学习库的作者 Francois Chollet 认为当今的 ML 从业者都有“货物崇拜”的思想,人们依赖的都是“民间传说和魔法咒语”。


炼金术、货物崇拜、魔法咒语。对于一个发展如此迅速、在现实世界应用越来越广泛的领域来说,这些都是值得关注的批判意见。而且正是这种广泛应用的局面让 Rahimi 和 Recht 感到忧心忡忡:


如果你构建的是照片共享服务,那么就算用的是炼金术也无所谓。但我们现在正在构建的系统会管理医疗保健和政见发表等事务。我希望我们世界的系统应该建立在严格、可靠、可验证的知识基础上,而不是用什么炼金术来充数。


机器学习是一个实证领域:我们根本没有什么理论可以解释为什么某些方法行之有效,而其他方法却行不通,我们甚至不清楚这样的理论是否会存在。但缺乏理论这一事实本身实际上并不是主要问题。即使在实证研究领域,我们也可以用科学严谨的方式取得进展。


我认为科学和炼金术之间的关键区别始于从业者分配给科学假设的角色。

先做假设


ML 从业者需要面对庞大的复杂性,从数据集采样和清理到特征工程,再到模型选择和超参数调整,都涉及非常复杂的过程。对这些部分一点点做调整,然后(通常在测试集上)看看哪种参数组合的效果最好,已成为行业中的常用手段。


但仅靠微调是不足以形成一门科学理论的。与炼金术相比,科学研究的本质区别在于科学假设的作用:科学家首先提出一个假设,然后设计一个实验来检验该假设。然后假设要么被拒绝,要么被接受。无论是哪种结果,我们都能获得新的知识。科学方法是不会预知实验结果的。



相比之下,微调过程不是由假设驱动,而更多是由“直觉”驱动的。如果这样做的目标只是探索一种现象,那也无所谓。但如果这种微调被 HARKing 伪装成科学就很危险了。所谓 HARKing,就是在已知结果后再去提出适合这一结果的假设。


HARKing 很容易误导人,因为它不仅会愚弄研究人员,而且会愚弄整个社区。在最坏的情况下,研究人员可能会对一种算法的不同变体进行大量实验,选出达到预期结果的版本。在实践中,这意味着它击败了最新的最先进基准,然后研究人员使用 HARKing 来证明这个选择是合理的。人们一般称之为 SOTA-hacking。


当然,运行的随机实验越多,它就越有可能仅凭偶然发挥就击败任何给定的基准:这也被称为查看别处效应。更糟糕的是,SOTA-hacking 占用了很多本可用于实际创新的资源。Facebook 工程师 Mark Saroufim 在《机器学习:大停滞》中写道:


在追求一流结果的过程中,我们奖励并鼓励了作为创新者的渐进式研究人员,增加了他们的预算,让他们可以领导更多下属员工或研究生,并行进行更多渐进式研究。



SOTA-hacking


在运行实验之前就提出科学假设,是预防 HARKing 和 SOTA-hacking 的最佳保护机制。在论文“深度学习的HARK一侧”中,作者数据科学家 Oguzhan Gencoglu 及其同事甚至提倡对 ML 研究论文采用“隐藏结果(result-blind)”的提交流程:让科学家先提交他们的科学假设以及实验设计,当假设和设计被接受后他们可以继续进行实验,条件是他们必须公布结果,无论结果是证实还是排除了假设。这是一个极端、不切实际且可能不现实的解决方案,但它肯定会消除 SOTA-hacking 的风险。

ML 可以从物理学中学到什么


随着 ML 研究的发展,我相信它可以从物理学中借鉴很多有益思想。物理学的基本思想之一是先考虑一个更容易解决的小玩具问题,其结果可以在更大、更复杂的问题背景下提供有价值的见解。


这并不是说这些物理风格的实验是不该做的,但做的实验并不会很多。在 NLP 的背景下,值得注意的例子是揭示著名的 BERT 语言模型对转喻多义词或简单的输入序列顺序的敏感性的几项研究。例如,后一项研究发现,当 BERT 在 GLUE 基准任务上训练时,它对词序相对稳健。这表明大部分信号不是来自上下文,而是来自其他线索,例如关键字。


除了玩具问题,另一种强大的实证方法是消融研究。具体来说就是有意在每一次实验中忽略解决方案的一个组成部分,以将关键组成部分与没有实际影响的“花里胡哨”部分区分开来。在 NLP 的背景下,一个很好的例子是 2017 年的著名论文“你需要的只有注意力而已”,它表明语言模型中的递归在存在注意力机制的情况下是多余的。


另一个很好的例子是 2017 年的论文“神经网络架构中文本预处理的作用研究”,该论文表明,除了小写外,常见的文本预处理技术(文本清理、词干提取、词形还原)在下游 ML 中没有提供任何可衡量的模型性能改进。

从炼金术到科学


今天的很多 ML 实践给人的感觉就像炼金术一样。但是,正如我在上述例子中所提到的,即使在不存在理论的情况下,也可以通过某些实验来更深入地了解 ML 的内部运作机制,为这一领域提供更严谨的科学立足点。下面是我对 ML 从业者提出的 3 条建议:


  • 在做任何实验之前先明确你的假设。抵制 HARKing 和 SOTA-hacking 的诱惑。

  • 要有创造性:先考虑特定的玩具问题,这些问题可以用来确认或排除社区(隐含或明确)做出的假设。

  • 使用消融研究来确定 ML 解决方案的关键部分,并消除方案中“花里胡哨”的部分。


最后,我希望随着 ML 研究的发展,业界的关注点将从目前追求突破性能基准的风潮转向更基础的原理探索领域。毕竟,科学是对知识,而非胜利的追求。我同意 Rahimi 和 Recht 的观点,他们写道:


想想你在过去一年中就为了搞定一个数据集进行了多少次实验,或者做那么多实验只是为了看看一项技术是否会给你带来提升。现在你应该好好思考一下你的实验,设法对实验观察到的令人费解的现象给出合理的解释。我们以前的重心都放在了突破纪录上,以后应该多关注理论和机制了。


原文链接:


https://towardsdatascience.com/machine-learning-science-or-alchemy-655bea25b227

2021-07-31 10:002752
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 584.0 次阅读, 收获喜欢 1981 次。

关注

评论

发布
暂无评论
发现更多内容

三、Redis在SpringBoot中使用案例,java程序员面试笔试真题与解析

Java 程序员 后端

不能错过的分布式ID生成器(Leaf-),积累总结

Java 程序员 后端

为了你们不错过金三银四,我真是操碎了心!RabbitMQ面试真题来了

Java 程序员 后端

为了进大厂,我深扒了阿里字节等大厂面经,总结了50道必考题

Java 程序员 后端

一线互联网大厂面经分享:阿里三面+头条四面,Java面试心得必备技能储备详解

Java 程序员 后端

三年Java开发经验,四面阿里成功斩获offer,分享面经,java面试问项目部署

Java 程序员 后端

不是吧阿sir!System,java面试问项目中遇到的技术难点

Java 程序员 后端

15个问题自查真的了解java编译优化吗

华为云开发者联盟

Java 编译 对象 语义 符号表

一见面就脱裤子?这份Spring Cloud微服务笔记应对面试怎么这么骚?

Java 程序员 后端

一辈子也不容错过学习的微服务网关与用户身份识别,Zuul过滤器

Java 程序员 后端

一线互联网大厂面经分享:阿里三面+头条四面(1),java基础入门第二版电子版

Java 程序员 后端

三面美团Java岗,HR现场直接发offer,他是横着走出来的

Java 程序员 后端

两年Java开发经验,混迹“中浩科技,java全套百度云视频

Java 程序员 后端

两道面试题,带你解析Java类加载机制,零基础也能看得懂

Java 程序员 后端

不是吧阿sir,你这计算机网络也太熟了,震惊面试官一整年

Java 程序员 后端

世界顶级Linux技术大神,耗时一年力作1300页Linux开发实战

Java 程序员 后端

两年半,50W的offer,三本,springboot运行原理生命周期

Java 程序员 后端

为什么大公司要使用微服务?(建议收藏),java基础案例教程第二版答案

Java 程序员 后端

一篇神文让你“一夜封神“Mycat 中间件 (最详细讲解),linux操作系统实用教程文东戈课后答案

Java 程序员 后端

三年Java开发每天增删改查,终于靠着这份面试题,成功上岸京东

Java 程序员 后端

不是吧工作3年你都不知道这份超详细JVM内存结构,怎么涨薪?

Java 程序员 后端

不是吧阿sir,你这业务太熟了吧,震惊面试官第八年,献给真心想学Java的打工人

Java 程序员 后端

业务中台的困境、及可能的解,java基础笔试题判断题

Java 程序员 后端

明道云在保险经纪公司中的应用场景例举

明道云

上线GitHub七天后就标星87,并发知识体系大全

Java 程序员 后端

不是吧工作3年你都不知道这份超详细JVM内存结构,怎么涨薪?(1)

Java 程序员 后端

七、Redis持久化的两种方式RDB和AOF理解,mybatis接口实现原理

Java 程序员 后端

三面阿里被灵魂追问,出门就被Java面试官逼哭!,java虚拟机的运行原理

Java 程序员 后端

世界顶级SQL技术专家呕心沥血半年才整理出这份:SQL优化核心思想笔记,手慢无

Java 程序员 后端

丹丹学妹哭着对我说:学长,JVM如何实现动态类型语言支持的呢

Java 程序员 后端

为什么分布式一定要有Redis?,java面试逻辑题三个开关三盏灯

Java 程序员 后端

机器学习是科学还是“炼金术”?_AI&大模型_Samuel Flender_InfoQ精选文章