目前在计算机视觉领域已经有了一个普遍认识,那就是 ImageNet 预训练对于下游任务的有效性,来自 silero.ai 的俄国数据科学家 Alexander Veysov 将这一现状称为实现了「ImageNet 时刻」。那么它在语音领域是否存在呢?在本文中 Alexander Veysov 给出了否定的回答,并讨论了目前语音领域业界和学界存在的弊病,解释了为何迟迟未能实现「ImageNet 时刻」。
选自Gradient,作者:Alexander Veysov,机器之心编译,参与:NeuR。
本文希望回答以下两个问题:
什么是「ImageNet 时刻」?
在给定的机器学习子领域中,要实现「ImageNet 时刻」,需要满足以下条件:
如果以上条件都满足了,人们就可以用合理的成本开发新的应用。同时这也实现了该子领域的民主化,即人们不需要再依赖大公司(例如谷歌),认为在业界只有它们的研发成果才是可靠的。
为什么「ImageNet 时刻」尚未到来?
为了理解这个观点,我们来看看计算机视觉(CV)领域中,那些导向「ImageNet 时刻」的标志性事件和趋势。
导致 CV 领域「ImageNet 时刻」的关键事件和趋势。
这个过程简述如下:
因此到 2018 年,在 CV 社区中「ImageNet 时刻」已经完全实现了:
这个现象在 CV 社区已经变得越来越普遍,即不把在 ImageNet 上训练图像识别当作任务的结束,而是当作训练深度卷积神经网络以学习有用和通用特征的预任务。这种首先在 ImageNet 上训练 CNN 来执行图像分类(即预训练),然后在新的目标任务上调整这些特征(即微调)的做法,已经成为解决大量 CV 问题的事实标准。通过利用 ImageNet 预训练 CNN 的特征,我们在一系列图像分类数据集上实现了惊人的结果,此外还包括目标检测、动作识别、人类姿态估计、图像分割、光流估计、图像捕捉等任务。
为了简化论证,我们假设 STT 和 CV 使用相同的硬件加速选项、框架以及神经网络架构。然而,在预训练模型、迁移学习和数据集方面,STT 是落后于 CV 的。同时,STT 的计算资源需求仍然太高。
那么,为什么会出现这种情况呢?大部分语音方面的研究是由业界/企业赞助的学术人员发表的。本文将对学界和业界对语音研究现状的影响进行批判。
对业界的批判
通常,大部分 STT 论文是由来自业界的研究员发表的(例如谷歌、百度和 Facebook)。本文大部分对 STT 论文和解决方案的批评可以根据研究员的背景分为「学界」部分和「业界」部分。
简单来说,以下是我们对于 STT「业界」部分的主要担忧:
在私有数据上实现解决方案,且未进行如实表述
著名的 Deep Speech 2(2015)论文中出现了以下表格:
这个表格的大意是,要得到高质量的模型,需要大量的数据。这是明确表述该结果并执行了数据集外验证的少量论文中的一篇。而大多数现代 STT 论文通常只是用成本更高昂的方法严重过拟合 LibriSpeech ASR 语料库 (LibriSpeech)。
谷歌、Facebook 和百度可能拥有 10000-100000 小时的数据集,用于训练模型。这倒还好,但不好的一点是,他们使用这些数据来提高模型的性能,却没有在论文中报告相关细节。语音标注很费时,这使得问题更加严重。由于过高的数据代价,该领域的普通玩家没办法构建自己的数据集。即使他们使用相似的标注方法(https://github.com/snakers4/open_stt),也需要大量的资源、时间和精力来生成标签,并进行大规模验证。
标注 1 小时的语音大概需要 2 到 10 个小时,这取决于数据集的标注难度,以及手上是否有某些形式的自动标签(即其它 STT 系统的输出)。在 CV 中,有用数据集的标注仅需要少量的精力,而语音数据集的标注则非常昂贵。这导致了目前的情况:每个人都声称在某个有名的公开数据集(LibriSpeech)上获得了顶尖结果,但从来没有或很少报告这些模型在现实任务中的表现,以及哪些模型被产品化。
谷歌、Facebook 或者百度并没有开源他们的庞大专有数据集的明确经济动机。总而言之,这给从业者构建自己的 STT 系统造成了非常大的障碍。像 Common Voice 这样的项目使情况变得好了一些,但它们还不具备足够的数据。
框架和工具包过于复杂
对于从业者而言,使用框架或工具包而不是从零开始写代码是很普遍的做法。自然我们也会希望有专用的 STT 框架或工具包,如此一来,在框架提供的模型上做研发会比从零开始用 PyTorch 或 TensorFlow 构建模型更加便利。不幸的是,这种愿景在语音领域并未实现。由于以下几个原因,使用这样的方法来启动 STT 项目是不合理的:
解决现实中不存在的问题
构建更新或更好、适用于 LibriSpeech 数据集、且在 8 块价值 10000 美元的 GPU 上工作的工具包,并不能为现实应用带来帮助。
创建和发布基于现实世界数据的免费、开源和公共领域数据集,然后发布在这些数据集上预训练的模型才是真正的解决方案(这正是 CV 领域的发展轨迹)。然而,除了 Mozilla 发布的 Common Voice 项目以外,我们还没有看到有价值的行动。
研究结果不可复现
机器学习界有一个普遍现象,每周都有人声称得到了 SOTA 结果,但很少的结果是可复现的,或附带容易运行的代码。
考虑到集成加速硬件、大规模数据集以及训练模型所需时间的难度,复现变得更加困难。
和 SOTA 倾向相反,我们认为应该更加关注研发「足够用于现实任务」的解决方案和公开数据集。对学界的批判
对学界的批判主要集中在以下几点:
除了可复现性以外,论文还存在一些其他缺点:
被 SOTA bug 反咬一口
我真的非常喜欢「被 SOTA bug 反咬一口」的表达。简单来说,有一大群人全力追求某些抽象指标的顶尖结果,这些结果也就失去了意义(古德哈特法则的典型表现)。每次发生这种现象的明确原因通常都是不同的,并且可能是非常技术性的,但在机器学习界,情况通常是模型对数据集用于计算指标的某些隐藏内在性质过拟合。例如,在 CV 领域中,这种情况通常指视觉相似图像的聚类。
相比于更大规模和更流行的社区,追求学术或科研目标的小规模、理想主义的低调社区更不容易成为古德哈特法则的受害者。一旦社区流行度达到一定的程度,社区就会开始盲目追求指标或道德信号(在不需要付出真正努力的时候,为了炫耀而炫耀自己的道德价值),而真正的进步则停滞不前,直到某些危机降临。这正是「被 SOTA bug 反咬一口」的真正含义。
例如,在自然语言处理领域,这种态度曾经导致在公开学术基准上训练和优化大型模型的非理性现象,但这样的「进展」意义极其有限,原因如下:
最近,学术性 NLP 数据集数量的爆炸性增长令人振奋,但它们的真实适用性通常受以下因素的制约:
我们支持关于机器学习验证和指标的不同观点:机器学习 pipeline 应该被当成一个压缩算法,即 pipeline 可以用内存、计算和硬件将现实世界压缩为一系列的计算图和模型。如果你能将一个模型压缩为 1/10 大小或十分之一的计算量,同时性能相近,那相比于在排行榜上的得分上升 0.5%,这种成就显然要大得多。
另一方面,也有好消息,即业界的人们开始思考其方法的效率,甚至谷歌也开始思考如何高效地预训练 Transformer(当然,是以谷歌的规模)。
论文内容和结构
传统上,机器学习的新思想是以论文中数学公式的形式共享的。这种做法具有历史意义并且合理,但这其中也存在缺陷,因为今天随着开源工具被更广泛地接受,构建应用解决方案、优化已有方案、解释工作原理(这是个难题)、构建基础模块或框架(例如百度构建的 warp-ctc 或 Facebook 构建的 PyTorch)和创建新的数学方法之间有着明显的界线。
机器学习研究人员通常同意存在很多为了写方程而写方程的论文。这对我们理解事物的原理真的有帮助吗?我们以 CTC(Connectionist Temporal Classification)损失为例来解释这一点。几乎每一篇使用该损失函数的 STT 论文都会用一个章节来解释它。你会在其中找到一些数学公式,但这对于理解该损失真的有帮助吗?
CTC 损失很复杂,可能是 STT 研究中最大的推动器,但是很少有论文提到使用了哪种实现。我还未在任何读过的论文中看到以下思想,那么,是我无知,是我使用实现的习惯比较怪异,还是他们故意省略了这些东西?
当然,你也】可以查阅 CTC 的原始论文(由一位数学家所写),或 Distill 上的一篇文章(sequence modeling with CTC),这篇文章更加通俗易懂。但老实说,我能找到的最容易懂的解释来自一个俄语的 Youtube 视频(How to build end-to-end recognition system (Part 2): CTC Loss [RU]),视频中两个人坐在屏目前用案例解释 CTC 如何工作,并使用幻灯片一步一步地解释。论文中所有关于 CTC 的解释都是数学公式,虽然很可能在技术上是正确的,但这能带来任何益处吗?实际上,要想做出 3Blue1Brown 那样的视频非常难,不过也许参考恰当易懂的解释会是解决之道?
想象一下,如果机器学习论文和出版物能遵循以下模板的话,向学术界传播研究成果会变得容易多少:
在「小型」学术性数据集上训练样本低效、过参数化的网络
我们先来看看,自 Deep Speech 2 的原始论文推广了 ASR 之后,我们取得了多大进步。
根据这里的图调整得来(https://paperswithcode.com/sota/speech-recognition-on-librispeech-test-other),人类结果来自 Deep Speech 2 论文。
上面这张图是不是表示字错率(character error rate,CER)和词错率(word error rate,WER)指标实际下降了 60%,性能超越人类表现?如果它真的表现那么好,为什么我们还没有看到理想的 STT 技术被应用在所有设备的日常 app 上呢?为什么语音接口仍然只被认为是很酷的功能呢,尤其是在商业应用中?
虽然我们同意下表所展示的,人类在转录音频时通常会出现 5%-10% 的错误,但该表格存在误导性。我们阅读了多篇论文,发现了一些问题:
这是少有的将 ASR 系统和人类基线在现实数据上进行比较的案例。即使在清晰的英语语音转录中,人类也有 4-11 的 WER(取决于语言领域)。(图源:https://blog.timbunce.org/2019/02/11/a-comparison-of-automatic-speech-recognition-asr-systems-part-2/)
我能理解,研究必须遵循不断的循环过程(研究出新的、低效率的技术,优化该技术,然后再次发现新技术),但是 ASR 研究似乎是古德哈特法则在实践中的一个很好的案例。
研究人员希望在他们待解决问题上取得进展并利用现有的数据,这情有可原。但最终表明,首先创建一个真正大型且极具挑战性的数据集(类似 ImageNet 项目)将会有用得多。
过分依赖大规模计算
过参数化示例。谷歌在实验里展示了,其大型网络和中型网络的性能并没有多大差距。也就是说,在实际应用中,你可以采用中型网络并使用其它技巧来提升性能。
下表展示了我们对著名或最近 ASR 论文中所用计算的分析:
由于俄语拥有更多的变化,其转录难度比英语更大。我们的数据集不能直接和 LibriSpeech 相比较,因为它包含了很多领域,而 LibriSpeech 更加同质化,且噪声更少。
从上表中,我们可以观察到以下现象:
转录结果随模型尺寸的变化(图源:http://arxiv.org/abs/1512.02595)(http://arxiv.org/abs/1512.02595%EF%BC%89)
转录结果随数据量的变化(图源:http://arxiv.org/abs/1512.02595)(http://arxiv.org/abs/1512.02595%EF%BC%89)
通过表格,我们可以立刻发现以下趋势:
Deep Speech 2 的收敛曲线。
其它常见批判
在研究机器学习或 STT 问题时,还常出现以下批评:
对我们的解决方案提出批评
为公平起见,我们也对自己的解决方案做出了反省:
结论
最近在大众媒体中,监督式机器学习成为热词。出现这种情况是因为,在某些承诺的刺激下(虽然它们无法兑现),该领域出现了非理性繁荣和过度投资。
这是可悲的,因为这样的情况可能导致对有益于整个社会的领域投资不足。自动驾驶卡车公司 Starsky 的故事完美地说明了这一点。他们交付了有效的产品,但视场还没准备好,部分原因在于「人工智能祛魅」。
借用本文的概念和图像,你可以想象社会对新技术的反应曲线,如下所示。如果技术已经到达 L1,它将被广泛采用,每个人都能受益。如果 L2 可以实现,但需要大量投资和时间,可能只有大公司或国家支持的垄断企业才能收获果实。如果要实现 L3,那么人们可能只会重新考虑这项技术。
Andrej Karpathy 在他的技术演讲里解释为什么提高自动驾驶汽车性能的最后 1% 会这么难。
那么我们能收获什么呢?我们为什么要关心和参与?语音技术有很大的潜力,可以自动完成无聊的任务,让人们把更多的注意力放在重要的事情上。这在之前就发生过。20 年前,这种「奇迹」技术是一种关系型数据库,参见 Benedict Evans 的文章《Ways to think about machine learning》。
关系型数据库是一个新的基础支持层,它改变了计算的功能。在 20 世纪 70 年代末关系型数据库出现之前,如果你想让数据库向你展示「所有购买该产品并居住在该城市的顾客」,通常需要一个定制的工程项目。数据库不是用结构来构建的,否则任何任意的交叉引用查询都是一件容易的、常规的事情。而当时如果你想问一个问题,就必须有人来构建它。数据库只是记录保存系统,关系型数据库则把它们变成了商业智能系统。
这改变了数据库在重要方面的用途,并创造了新的用例和新的十亿美元公司。关系型数据库带来了 Oracle、SAP,SAP 和它的同行带来了全球即时供应链——他们给了我们苹果和星巴克。截至 20 世纪 90 年代,几乎所有的企业软件都是关系型数据库,PeopleSoft、 CRM 和 SuccessFactors 等都运行在关系型数据库上。关注 SuccessFactors 或 Salesforce 的人中,没有人会说「这永远不会起作用,因为 Oracle 拥有所有的数据库」。相反,这项技术成为了一个使能层,是一切的组成部分
所以,这是一个思考目前机器学习的很好方式。这是我们可以用计算机做的重大改变,这将是许多不同公司的不同产品的一部分。最终,几乎所有东西都会在某个地方用到机器学习。这里一个重要的相似之处是,尽管关系型数据库有规模经济效应,但也有有限网络或「赢家通吃」效应。如果公司 B 和 A 从同一个供应商处购买相同的数据库软件,那么公司 A 使用的数据库不会变得更好。实际上,机器学习也是如此:机器学习完全是关于数据的,但是数据对于应用来说是高度特定的。更多手写数据会使手写识别工具性能更好,更多的燃气轮机数据会使预测燃气轮机故障的系统性能更好,但它们彼此之间不会互惠互利。数据是不可替代的。
他的理念「机器学习=回答部分问题的支持堆栈,就像无处不在的关系型数据库」,语音技术的命运只能由我们来决定。利益是由少数精英获得,还是由整个社会获得,目前仍不得而知。我们坚信,语音技术将在 2-3 年内成为一种商品。剩下的唯一问题就是:它们看起来更像 PostgreSQL 还是 Oracle?还是两种模式共存?