在Mindsdb从事 3 年自动机器学习工作后,我辞职了,至少我不会在短时间内从事任何与机器学习相关的职业工作。掐指一算,我已经做了 5 年机器学习研究,但直到今天,我才终于搞清楚了很多自己之前不知道的事物,甚至我还可能觉察到一些别人不知道的东西。
本文总结了我从事机器学习工作以来总结到的收获,请不要将这当作“专家总结”,你可以把它想象成局外人的一件艺术作品——一个对时代精神进行了不同寻常的深入研究,却没有成为“社区”一部分的某个人的收获。
机器学习研究的作用是什么?
早在 5 年前,我就曾接触过机器学习研究。但直到今天,机器学习研究的作用对我来说仍然是个谜。
大多数科学子领域(真正的领域)都可以声称,它们是一个理论构建和数据收集的双重过程。更多的理论领域,比如那些围绕数学和计算机科学这两个术语展开的领域,取得的进步几乎完全来自概念层面。这些概念是如此基础,似乎不太可能被取代,比如欧几里得元素等等。
但机器学习正处于一个奇怪的十字路口。即使我们承认它和物理学一样具有理论上的严谨性,它仍然缺乏永恒的实验观察。这并不是因为参与者缺乏美德,只是它研究的对象是一个移动的目标,而不是一个具体的现实。
人们最多可以提出这样的永恒主张:
给定<某某硬件>,可以在 ImageNet 的<某某部分数据集>上获得<某某精度>。
给定数据集,并使用整个数据集保留一个 CV,我们可以获得某些精度函数的 x/y/z 的最新值。
给定允许可编程代理与之交互的环境,我们可以在循环/惩罚/时间/观察 & 奖励/知识/理解矩阵上达到 x/y/z 点。
但这些并不是理论本身所围绕的那种主张,机器学习带来的易于验证且永恒的收获在理论上是无趣的。最多可以说,他们对在特定任务中的数字硬件性能设定了下限。
此外,机器学习也没有强有力的理论保证作为后盾。虽然有一些“小”的理论保证可以帮助我们进行更广泛的实验,例如证明在特定范围内的可微性等等。但在理想化条件下,一些理论保证最多可以指向潜在的实验路径。
可能有人会认为机器学习是一个非常模糊的领域,甚至大多数数据都是假的,大多数发表的论文都是为了在更广泛的学术论文引用游戏中获胜。
然而,事实上,机器学习可能是学术界唯一正确运作的领域。通常情况下,机器学习论文要附带代码和数据,以及足够严格的方法,以便于其他人重复研究。论文提出的观点通常很容易用作者提供的工具进行证明和获取。虽然也有例外,但整体而言还是比较少的。
更重要的是,与数学和计算机科学领域不同,机器学习中的重复研究不是留给十几位有大量空闲时间的专家的。如果你想验证一篇最新的 NLP 论文,你只需要掌握 CS101 知识就可以了。但在数学等领域,这是不可能的。因为在数学领域,现代“定理”(有时写在一本厚厚的书上)的有效性取决于少数专家的一致意见,而不是一个自动化的定理证明器。
事实上,机器学习中的许多实际工作都是由圈外人完成的,他们没有相关的学术背景,或者几乎没有学术背景。这与其他领域正相反。在其他领域中,证书主义是绝对的权威,并且人们也习惯于按资排辈。
什么是软件能做,而硬件做不到的?
广义上,机器学习研究包括基于 LA 库或集群工具的工作,这些研究似乎总是倾向于重蹈覆辙。机器学习中的主要现代技术,似乎可以被称为对 20、30 甚至 50 年前想法的轻微概念重构。
试问一下,70 年代以来,机器学习的进步中有多少是软件,多少是硬件?很遗憾,研究类似问题的论文少的惊人。因为众所周知,在任何语言任务中,试图用某种 T5 等价计算在一定规模上训练一颗巨大的决策树,都不会与 T5 相匹配,而且调整算法的任务也不简单。
这个问题本身是一个没有实际意义的问题,因为总是需要一些研究来开发最适合硬件发展的软件。一个更好的问题可能是:如果机器学习研究的数量减少了 1000 倍,会对性能或可处理任务的广度产生任何影响吗?
直觉告诉我,未来的大多数进步都会是硬件产生的结果,而对于我们这些更喜欢专注于软件的人来说,可以做的是:
先弄清楚硬件的进步能够让一个人在 2-4 年内做什么,寻求资金,围绕这些突然出现的机会创建一家公司;
试图寻找范式转变,修复浪费 99%资源的瓶颈,这些瓶颈深深扎根于我们的思维中,我们甚至无法看到它们。计算出 99%的可用计算能力正在/实际上/没有被使用,并且可以使用这个很酷的技巧。想出一个简单的抽象,在任何可用的任务上单独执行接近于 SOTA。
自动化机器学习
过去几年,我的大部分工作都是围绕自动化机器学习的,所以我带有偏见地认为,自动化机器学习是机器学习中很重要的一部分。事实上,无论是学术界还是产业界,在机器学习领域工作的大部分人,似乎都在从事自动化边缘的工作。
相关的学术论文可以归结为以下几个步骤:
架构。
对超参数进行一些小的修改。
在几个数据集上运行基准测试。
证明一些理论保证,这些保证通常不适用于任何现实世界的训练场景,并且可以通过经验证明(例如,当数据符合某种理想分布时,可微性、一致收敛性)
添加足够的填料。
而数据科学家和机器学习工程师的工作也可以归结为以下几个步骤:
尝试一些易于使用的模型,如果设置正确,这些模型不需要 100 行代码就可以使用。
在测试数据上尽量调优超参数的单元精度,即使它在现实中有点糟糕,也仍然值得部署到生产中。
将其包装在某种 API 中供后端使用。
如果需要,编写一个 cron 定时任务,时不时地对其进行训练。
编写一个很长的 PPT,并向 5 个(有 P 开头或 C 开头职位头衔的)人演示,这样他们就可以放心地允许你部署。
广义上讲,这似乎是一件非常容易自动化的事情。但似乎这些人的工作与第 1-4 步没有任何关系,也许模糊的理论和幻灯片才是重点。
或许这是一种简化的思考方式,但换种角度来看,如果自动化机器学习真的这么好,为什么更多的 Kaggle 排行榜不是由使用这些软件包的人所主导?
机器学习中的基准和竞争
与论文发表量相比,大家对基准和竞争的兴趣似乎并不高。arxiv 上每天出现的与机器学习相关的论文数量远远超过 100 篇,而登上代码排行榜的论文数量却要小得多。
我认为大多数研究人员证明这一点的方式是,他们没有试图用他们的技术在任何事情上“竞争”,也没有试图提高某种精度分数,而是试图为设计和思考模型提供有趣的理论支持方向。
这本身没问题,但事实上,据我所知,没有任何一个突破性的技术是完全基于数学保证的,并且需要数年才能成熟。通常的情况是,如果某个东西“起作用”并得到广泛采用,这是因为它立即改善了结果。花费几年甚至几十年才能实现的突破是影响广泛的架构理念,但这种突破非常少。
现实情况是,人们在论文中假设“通用”技术,例如优化器或增强方法,手摇几个公式,然后在不到 12 个数据集的模型因变量(如优化器优化的架构、增强算法使用的估量器等)中,进行小到微不足道的基准测试。
这不是我对三流论文的批评。在我的脑海中,我可以说出像 LightGBM、改进的 ADAM 和 lookahead 等理论。对我和其他许多人来说,它们是游戏规则的改变者,已经证明了它们在许多现实问题中的价值,并且它们最初是在几乎没有任何实验的论文中被提出来的。
我认为当前的问题归结为以下三点:
缺乏“通用”基准测试套件。OpenML自动机器学习基准测试最接近通用基准测试,但其问题焦点非常狭窄,仅限于测试端到端的自动机器学习方案。理想的通用基准测试应该具有多对多的体系结构到数据集的映射,允许替换某些组件,以便作为更大整体的一部分评估新技术。在某种程度上,我曾幻想将 Mindsdb 基准测试套件构建成这样,但我怀疑是否有人真的想要这种解决方案,因为没有激励结构。
缺乏竞争。我的意思是,像 Kaggle 这样的网站和十几个特定行业的克隆网站,它们的格式对用户提出了很多要求,并且竞赛颁发的奖励也比较吝啬。
上述 2 个问题的一个潜在组合是,机器学习中最“有价值的”问题甚至很难进行基准测试或竞争。翻译、文本嵌入生成和自动驾驶等任务是各种级别的难以用一些指标进行检测来客观判断的任务。
这又回到了一种观点,即:如果你做技术开发工作,你最好专注于范式转变或产品化,除非你明确地得到报酬去做其它事情。
机器学习在特定领域是否达到了“最先进水平”?
另一个有趣的问题是,机器学习在特定领域是否达到了“最先进水平”?这种问题可以包含在一个.csv 文件中,使用 0 到 1 的精度函数进行评估,并在速度、数学保证和“可解释性”方面发生了很大变化。
尽管如此,我们目前还是无法确定地回答这个问题。
我几乎能肯定回答的是,从学术研究人员到行业研究人员,再到普通的中型公司数据科学家,他们对获得最先进结果的想法完全不感兴趣。
我很幸运地(或者不幸地)与几十个组织交流它们的机器学习实践,我的印象是,大多数“想要使用机器学习”的组织和项目,甚至还没达到机器学习的“数据驱动”阶段。它们希望从结论开始,凭空做出预测。他们对评估一个算法是否足以用于生产的想法令人目瞪口呆。
大约 30 年前,一位医生发表了一篇论文,在这篇论文中他重新发明了六年级数学,试图找出如何评估他的糖尿病患者的方法。这发生在个人电脑普及的时代,人们会认为需要标准化计算的、生死攸关的决定肯定是由一台机器完成的,而不是一个连微积分都没听说的人。更糟糕的是,考虑到我们谈论的是一个实际发表论文的人,这就是当时该领域 0.1%的顶尖人物,只有神知道其他人在干什么。
我有一种感觉,无论这个问题所描述的更广泛的现象是什么,它仍然是机器学习对其它领域缺乏影响的根本原因。通过舍入误差来提高某些问题的精度,或者从理论上保证算法是否在完美解的 0.3%以内,或者为了更容易解释而对参数进行精简,都不太可能有所帮助。
在我看来,人们在使用经典机器学习时的大多数问题都是人,没有多少研究可以解决这个问题。
机器学习更像是外星人的大脑
另一方面,机器学习正越来越多地应用于“非经典”问题,例如语言问题或驾驶问题。在这个领域内,有监督和无监督的区别似乎消失了,人们试图将算法解释为简单的数学,而不是基于约束的生成系统自我选择,变得像用大脑做这件事一样愚蠢。
宏观来讲,在某个方向上有一定的影响力会产生高度专业化的方法和算法,这些方法和算法可以(作为文件或服务)在研究人员之间传播,作为构建更高级别功能的基础。在 30 年后,机器学习似乎更像是巨大的无比复杂的外星大脑,控制着大部分社会,而不是做线性代数。
持怀疑论的人认为,在给定一行或两千行代码的情况下,机器可以从头开始编写 GPT-{x},而且大部分工作都在并行化和易于实验的代码上,在实现数字百分比改进的技巧上。此外,缺乏客观评估复杂任务的能力迟早会导致崩溃,这几乎是肯定的。
我不认为机器学习和自动驾驶的情境是相似的,我们已经在没有多少自动驾驶的情况下度过了很长时间。对我来说,从多元回归开始解释机器学习,似乎比预测编码和博弈论更好,后者奠定了更好的基础。但我肯定对机器学习所能取得的成就印象更深刻,同时也怀疑进步是否会以类似的速度缓慢前进。
机器学习的 3 个发展方向
目前,在机器学习分支下,我看到了 3 个有趣的方向,而且这些方向正在进一步分裂。
第一个方向是“经典的”机器学习方法。它们现在有足够的计算算力来处理大多数高维问题。其中的核心问题是提供更多的理论保证,产生作为“因果”模型基础所需的那种“可解释性”,并引导时代精神远离直线、p 值和柏拉图式的形状。
第二个方向是行业应用。我认为这更多地涉及到典型的“自动化”工作,即数据争论、领域逻辑理解和政治活动。只是新一轮的自动化浪潮现在和以往一样,得到了更高级工具的支持。
最后一个方向是镀金类型的研究,这是由一些理想主义者和许多试图通过论文进入职业生涯轨道的学生进行的。这是最有趣的发现,它们隐藏在成堆无法操作或低影响的噪音中。我不确定在敞开的大门之外发生了什么,因为我没有足够的能力去过滤噪音。但从表面来看,抽象概念正在转移到以前被认为是强化学习的领域。
这三个方向任意两两组合,你会得到一些有趣的东西。比如,AlphaFold 是 Transformer 与科学领域专业知识的最后一分钟进步,以取代蛋白质折叠的“手动”模型;特斯拉自动驾驶是 SOTA 愿景、RL 和转移学习,与游说者、律师和营销人员联合起来,自动化减少了两位数的工作;一些研究危机复现的人似乎处于前两者之间,他们试图通过系统化来避免分析数据和审查证据时的人为错误,尽管我认为这样的研究为时过早。
虽然这是一个不完美的分类,但它帮助我了解整个领域。我认为这也是一个很好的范式,可以用来思考应该解决什么问题,与谁合作,以及需要什么样的背景。