近日,Reddit 上出现了一个颇有争议性的问题,提问者怀疑深度学习的低门槛会破坏这个领域的声誉,业余者的加入甚至会成为深度学习成长的障碍,因为他们会轻率地将自己不成熟的知识和观念传播出去,最终会影响到业界对深度学习的认同。对此,人们从研究者和工程师的对比、技术成熟阶段性、行业标准和个人经验等角度进行了广泛而热烈的讨论。机器之心编译了其中的重点讨论,原文链接请见文末。

  问题

  长期以来,我看到很多人自封为深度学习专家、奇才,或者诸如此类的称呼。没有机器学习或者深度学习的教育经历或研究背景,他们仅仅安装了 tensorflow 或 keras,然后跑了几段 github 代码就以为掌握了专业的深度学习知识。接着他们立刻称自己为深度学习专家,撰写博客教程,甚至有胆量教课写书。不久前,我收到了两个人关于深度强化学习一类书的写作计划,他们没有任何在机器学习、深度学习抑或深度强化学习方面的教育经历和工作经验,只是觉得自己已然是专家,不得不写本书出来...

  为什么这使我困扰?

  这破坏了深度学习的声誉。很多公司无法辨认这些所谓的「专家」。面试官不了解深度学习,对 NIPS、ICML 等毫不关心,无法正确地评估面试者。因此他们最终雇佣了这些所谓的「专家」,然后当其「深度学习」方案最终失败,面试官得出结论,深度学习毫无价值,就是炒作。随着越来越多的公司遇到这种情况,他们对深度学习更加怀疑。现在业界人士已经半开玩笑地把人工作智能称为人工智障。

  你怎么看?你是否同意上述观点?如果你同意,我们该做什么?启动一个深度学习招聘网站吗?

  补充:我所谓的低进入门槛并不是指低学历。我指的是你无需掌握足够的机器学习或深度学习知识,便能成功解决一些经典问题;但是对于全新的问题,你确实需要具备专业知识和研究经验。

  回答与讨论

  NichG:实际情况是,绝大多数公司更倾向于工程师而不是研究者。现在大多数手头工作是把标准技术应用于具体的商业用例上。投资新研究往往得不偿失。

  因此大多数情况下,满意于从正确位置复制粘贴正确代码这种工作方式的人才是你真正需要的。当然,除此之外也要知道标准技术什么时候不工作及其原因是什么。

  hippomancy:说的好。我司最近组建了一个深度学习团队,包括两名统计学博士、一名机器学习博士和一名博士工程师。统计学家试图构建聪明的分布近似以更好地选择特征。机器学习博士提供解决该问题的前沿对抗性方法,并写好了 TensorFlow 模型。工程师则写了「from sklearn.ensemble import random_forest」,因为她知道这很可能工作不错。一天结束之时,统计学家的假设错了,对抗性模型缺乏足够的数据进行训练,但是随机森林一切正常。

  BadGoyWithAGun:在绝大多数领域,工程师无需假装成研究者。

  automated_reckoning:这很可能是由于工程师实际负责现实世界中事物的运转。最后,研究者由于研究成果拿到钱,工程师由于解决方案拿到钱。

  demonFudgePies:作为一个在「四大」工作的人,我认为不仅仅是由于其有更好的服务器,它们还十分明确地让工程师从事工程工作,研究者从事研究工作。研究者被其他知识渊博、有影响力的研究专家聘用,他们知道如何区分所谓的「专家」与专家。

  visarga:你无权「保护你的声誉」。人们有权利自由使用 AI 工具,进行相关写作。如果一个公司不知道如何招聘深度学习人才,只好自食其果。

  FermiAnyon:我的问题不同,但是相关。我在这个领域属于半路出家,获得了物理学博士学位,自高中开始一直坚持写代码。近一年来我阅读了手头所有关于机器学习的东西,并拿自己的个人项目练手。虽然我是机器学习新手,但在编程方面很老练。最近我为投简历的事很苦恼,有很多人在这两方面都是新手,他们只是看了一些 YouTube 视频,也许随便学了些教程,但从没有把技术应用到实际问题上,而我至少有机器学习方面的实操经验。我根据自身情况就说这么多,供面试官参考。

  FutureIsMine:深度学习目前很火,任何时候有什么技术火起来的时候,就会有一些自称专家的狂热者出现。这在移动设备领域出现过,在上个世纪 90 年代 Java 领域出现过,在大数据领域也出现过。这并不是深度学习的错,只是行业标准尚未树立起来的现象而已。

  我并不认为近年大部分当前最佳声明是(如你所说的)不可重现的。每一样事物的成长都需要经历加德纳技术成熟度曲线(gartner hype cycle),有些领域(比如图像转换)甚至会有多重标准。你所说明的问题其实是,出现了很多视觉化和形象化的 AI 成果,但实际上要在特定的案例中实现是很困难的。

  mszarvas:当前最佳(SOTA)结果不可重现是什么意思,有具体的例子吗?是第三方无法重现,还是用发布的参考代码也无法重现?

  我曾经见过即使用发布的代码也不能重现的情况,这使我怀疑大多数的声明结果。但我仍然保持乐观,也许作者只是出现了一些失误。在我看来,这个领域需要树立一些标准,不应该接受任何没有标准差的孤立结果(缺少对比)。孤立结果可能只是异常值而已。

  在这样的研究环境下,很多 SOTA 声明其实都不堪一击。更糟糕的是,视发表这些错误的 SOTA 声明为正当合理的,会把那些使用正确研究方法的研究者排除在竞争之外。

  我们至少应该鼓励以后的论文发表还需要:

  发布代码;

  发表实验的完整日志。

  这两样东西有助于寻找研究中的错误。

  jbcraigs:低门槛其实是一件好事,因为产业中不仅需要高级研究员,还需要能将概念实现到日常应用中的工程师。

  _MandelBrot:在商业领域中,构建一个真正的学习/数据管道是相当大的挑战。尤其是使用了多个无法访问的旧有 IT 系统工作的时候,而很多企业服务完全就是这样子的。

  torvoraptor:我面试过的大多数 PhD 都没有做出什么有意思的成果,使他们能和一个彻底了解 DL/ML/GenML 的工程师相提并论。而理论基础扎实的工程师和有实践能力的 PhD 都是很罕见的。

  PhD 过分关注创新性,而不够重视简单性和对现有知识的复用,这对于构建现实世界中的系统是很不利的。而大多数工程师刚好相反。

  目前可能只有少于 200 个人是真正能够持续做出有意义成果的,但这并不意味着其他人应该就此放弃。还有,并不是说这 200 个人都有 PhD,每一个机器学习博士毕业生都将自动成为「高级研究者」。只因为他们发表过一些论文,提出一些新的深度学习架构,而并没有人有兴趣去重现他们的结果。

  693sniffle:这其实和个人计算机发展迅猛的年代很类似。突然间有无数的人建立了软件设计公司,然后拿出糟糕的 App 产品,没有人知道谁将成为比尔·盖茨。

  目前这样的现状是因为产业的需求量特别大,供不应求,因此会出现很多的投机者。

  unnamedn00b:机器学习领域有今天的成就并不和开放性、包容性相斥,而是依赖于它们。并且,开放性的文化也是社区的一大优势,这不是巧合。

  always_trade:不同意!这不过是该领域中真正的专家和从业者取得巨大成就的结果,仅仅意味着公司们需要有更好的眼光,以找到货真价实的人,不需要担心。

  realSatanAMA:我有 20 年的专业编程经验,并自学了 6 年的机器学习。我现在从事的工作几乎完全是机器学习的,但我仍然远远称不上是「专家」。我的公司雇佣了 4 个 PhD 以接替我的工作,但他们还不能从两年的研究成果中提取出任何比我的哪怕是很简单的实现更好的东西。面向客户的机器学习的意义是,最容易的部分是设计出有预测能力的模型,且在可接受的误差范围之内。而最难的部分是构建系统以把所有模型整合到现有的基础架构中,并搭配 UI 展示,以说服客户接受你的产品。我大部分的时间都用于扩展云服务器群集,用于传输数据。对于机器学习「专家」来说,学习如何让模型在大规模数据中运行得更快,比提出一个新模型更加有用。

  gabrielgoh:计算机编程很困难,非常非常的难!从菜鸟到编程专家乃至真正的大师需要走很长的路。在真正开始写自己的第一行代码之前,你需要熟悉抽象代数、离散数学和计算复杂度的基本概念。直到精通了多项式分层之前,不要妄想真的能找到工作!你需要阅读《The art of computer programming》的全 8 卷内容,完成所有的练习。然后阅读《Concrete mathematics》,再从头到尾一口气看完 PCP 理论的证明,不理解的话就从头再来。你需要发明自己的汇编语言,并编写一个 C 编译器,自己在 Linux 内核上运行它。一步一步来,记得随时写笔记。最后,当你完成了启动顺序(boot sequence)的时候,再从 Python 解释器开始学习。当你终于能写下自己的完整代码,并且成功编译的时候,恭喜你已经掌握了基础知识!但是,离真正的程序员还很远……