19

语音领域的「ImageNet时刻」为何迟迟不来?

 3 years ago
source link: https://www.jiqizhixin.com/articles/2020-05-17-2
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文希望回答以下两个问题:

  1. 什么是所谓的「ImageNet 时刻」(ImageNet moment),以及它为什么重要?

  2. 为什么语音领域还未实现「ImageNet 时刻」,学界和业界应为此负哪些责任?

什么是「ImageNet 时刻」?

在给定的机器学习子领域中,要实现「ImageNet 时刻」,需要满足以下条件:

  1. 用于解决 95% 标准「有用」任务的架构和所需模型构建块是广泛可用的,并可作为标准、经过测试的开源框架模块;

  2. 大多数用大型数据集预训练的流行模型都是可用的,只需要相对少量的数据就可以微调并应用到下游任务中;

  3. 在标准任务的预训练模型基础上进行微调,能够得到解决不同日常任务的模型(且效果较好);

  4. 对于日常任务,对比之前论文中所需要的计算资源,例如 STT(Speech-To-Text,语音到文本)模型的训练需要 100-1000 GPU 天,此时训练模型所需的计算资源很小(STT 模型的训练只需要 1-10 GPU 天);

  5. 预训练大型模型的计算量对于小规模的独立公司和研究团队而言是可承受的。

如果以上条件都满足了,人们就可以用合理的成本开发新的应用。同时这也实现了该子领域的民主化,即人们不需要再依赖大公司(例如谷歌),认为在业界只有它们的研发成果才是可靠的。

为什么「ImageNet 时刻」尚未到来?

为了理解这个观点,我们来看看计算机视觉(CV)领域中,那些导向「ImageNet 时刻」的标志性事件和趋势。

fAZBFrj.png!web

导致 CV 领域「ImageNet 时刻」的关键事件和趋势。

这个过程简述如下:

  1. 英伟达在数十年间研发和优化了消费级 GPU。众所周知,我们现在仅需要将 4-8 块顶级 GPU 组合起来,就相当于造出了一台「超级计算机」;

  2. 据说在 2000 年代末,英伟达就设想 GPU 的性能能够满足机器学习的需要,并开始投入 CUDA 的开发(CUDA 于 2007 年首次发布)。CUDA 是一种低级矩阵乘法框架,是大多数 GPU 加速机器学习应用的基础;

  3. 2009 年,由李飞飞教授带领的团队发布了 ImageNet 数据集,并在 2011 年举办了首届「ImageNet 大规模视觉识别挑战赛」(ILSVRC)。2012 年,Alex Krizhevsky 等人使用英伟达 GPU 和 CUDA 训练出 AlexNet 神经网络,性能远超之前;

  4. 之后人们更多地投入深度学习框架的开发,并在 2017-2018 年发展到了成熟期。截至本文发表,PyTorch 和 TensorFlow 已成为首选框架,它们都提供了针对多项任务(包括图像分类)的大量预训练模型;

  5. 同期在 ImageNet 上实现 SOTA 性能的模型架构经过了不断的精炼,同时训练和评估这些模型的代码也在这些常用的框架中和预训练权重一起发布了。

因此到 2018 年,在 CV 社区中「ImageNet 时刻」已经完全实现了:

这个现象在 CV 社区已经变得越来越普遍,即不把在 ImageNet 上训练图像识别当作任务的结束,而是当作训练深度卷积神经网络以学习有用和通用特征的预任务。这种首先在 ImageNet 上训练 CNN 来执行图像分类(即预训练),然后在新的目标任务上调整这些特征(即微调)的做法,已经成为解决大量 CV 问题的事实标准。通过利用 ImageNet 预训练 CNN 的特征,我们在一系列图像分类数据集上实现了惊人的结果,此外还包括目标检测、动作识别、人类姿态估计、图像分割、光流估计、图像捕捉等任务。

为了简化论证,我们假设 STT 和 CV 使用相同的硬件加速选项、框架以及神经网络架构。然而,在预训练模型、迁移学习和数据集方面,STT 是落后于 CV 的。同时,STT 的计算资源需求仍然太高。

那么,为什么会出现这种情况呢?大部分语音方面的研究是由业界/企业赞助的学术人员发表的。本文将对学界和业界对语音研究现状的影响进行批判。

对业界的批判

通常,大部分 STT 论文是由来自业界的研究员发表的(例如谷歌、百度和 Facebook)。本文大部分对 STT 论文和解决方案的批评可以根据研究员的背景分为「学界」部分和「业界」部分。

简单来说,以下是我们对于 STT「业界」部分的主要担忧:

  • 在私有数据上实现解决方案,并且没有进行如实表述;

  • 框架和工具包过于复杂;

  • 解决现实中不存在的问题;

  • 研究结果不可复现。

在私有数据上实现解决方案,且未进行如实表述

著名的 Deep Speech 2(2015)论文中出现了以下表格:

FRN7nmN.png!web

这个表格的大意是,要得到高质量的模型,需要大量的数据。这是明确表述该结果并执行了数据集外验证的少量论文中的一篇。而大多数现代 STT 论文通常只是用成本更高昂的方法严重过拟合 LibriSpeech ASR 语料库 (LibriSpeech)。

谷歌、Facebook 和百度可能拥有 10000-100000 小时的数据集,用于训练模型。这倒还好,但不好的一点是,他们使用这些数据来提高模型的性能,却没有在论文中报告相关细节。语音标注很费时,这使得问题更加严重。由于过高的数据代价,该领域的普通玩家没办法构建自己的数据集。即使他们使用相似的标注方法(https://github.com/snakers4/open_stt), 也需要大量的资源、时间和精力来生成标签,并进行大规模验证

标注 1 小时的语音大概需要 2 到 10 个小时,这取决于数据集的标注难度,以及手上是否有某些形式的自动标签(即其它 STT 系统的输出)。在 CV 中,有用数据集的标注仅需要少量的精力,而语音数据集的标注则非常昂贵。这导致了目前的情况:每个人都声称在某个有名的公开数据集(LibriSpeech)上获得了顶尖结果,但从来没有或很少报告这些模型在现实任务中的表现,以及哪些模型被产品化。

谷歌、Facebook 或者百度并没有开源他们的庞大专有数据集的明确经济动机。总而言之,这给从业者构建自己的 STT 系统造成了非常大的障碍。像 Common Voice 这样的项目使情况变得好了一些,但它们还不具备足够的数据。

框架和工具包过于复杂

uai6jqe.png!web

对于从业者而言,使用框架或工具包而不是从零开始写代码是很普遍的做法。自然我们也会希望有专用的 STT 框架或工具包,如此一来,在框架提供的模型上做研发会比从零开始用 PyTorch 或 TensorFlow 构建模型更加便利。不幸的是,这种愿景在语音领域并未实现。由于以下几个原因,使用这样的方法来启动 STT 项目是不合理的:

  • 代码需要优化,以进行大规模计算;

  • 这样的方法(展示如何使用这些框架的端到端示例)仅适用于小规模的学术数据集,如果没有大量计算便无法扩展到大规模数据;

  • 这样的方法是非常样本低效的(我们最喜欢的案例是,在包含数百兆字节文本的数据集上训练 10GB 的语言模型);

  • 即使你在 LibriSpeech 上预训练了一个模型,该模型也很可能无法迁移到现实任务中;

  • 如果你想构建自有的 STT 解决方案,并且内化它、适当地理解它以及进行优化,那么你可能需要一个大型团队,或耗费大量的时间,来内化工具包;

  • 这样的工具包要么是公开的自有解决方案,要么是作为公关手段首次出现,或者作为生态系统构建工具。这意味着该工具包将作为合适的基线,但如果没有投入大量资源,此类 pipeline 很难得到优化(如果你拥有一家公司,很有可能你会写自己的工具包)。

  • 从个人角度来说,我们多次尝试内化 FairSeq 和 EspNet 的 pipeline,但我们并不能在合理的时间和精力下完成这件事。也许是我们的机器学习工程技能欠佳,但我们还从其他拥有更好工程技能的同行(即全职 C++机器学习程序员)那里听说了同样的困境。

解决现实中不存在的问题

构建更新或更好、适用于 LibriSpeech 数据集、且在 8 块价值 10000 美元的 GPU 上工作的工具包,并不能为现实应用带来帮助。

创建和发布基于现实世界数据的免费、开源和公共领域数据集,然后发布在这些数据集上预训练的模型才是真正的解决方案(这正是 CV 领域的发展轨迹)。然而,除了 Mozilla 发布的 Common Voice 项目以外,我们还没有看到有价值的行动。

研究结果不可复现

机器学习界有一个普遍现象,每周都有人声称得到了 SOTA 结果,但很少的结果是可复现的,或附带容易运行的代码。

考虑到集成加速硬件、大规模数据集以及训练模型所需时间的难度,复现变得更加困难。

和 SOTA 倾向相反,我们认为 应该更加关注研发「足够用于现实任务」的解决方案和公开数据集

对学界的批判

对学界的批判主要集中在以下几点:

  • 如果有大量研究人员集中精力追求某个度量指标下的顶尖结果,则这些指标失去了意义(参见古德哈特法则:一项社会指标或经济指标,一旦成为一个用以指引宏观政策制定的既定目标,那么该指标就会丧失其原本具有的信息价值)。如果不能足够快地更新,学术数据集实际上就变成了「排行榜」,变成了企业或机构炫耀实力的工具。为了获得 SOTA 结果,在大型计算机上使用大规模和样本低效的网络成为了他们的默认选择,尽管这对于普通玩家而言遥不可及;

  • 理想情况下,论文应该有足够的细节,从而使独立研究者也能实现论文至少 95% 的结果;

  • 实际上,从研究者的真实目的和现实应用的角度来看,论文的内容和结构都是有问题的。他们以或被接收或被拒绝的心态发表论文,使用复杂的数学作为解释新概念的手段,尽管其工作可能与所述数学无关,只是将数学作为现成的工具。

除了可复现性以外,论文还存在一些其他缺点:

  • 论文在讨论方法的泛化性(即域外测试)时显得很模糊。阅读论文时你可能觉得神经网络似乎在自动语音识别任务(ASR)上击败了人类,但这不过是「排行榜」问题的另一种症状,神经网络并没有真正击败人类;

  • 论文通常没有说明使用的计算量;

  • 论文很少报告收敛曲线,即要用多少时间和计算量来实现相对于 SOTA 的次优结果。通常在机器学习领域,95% 甚至 99% 的结果都可以仅用全部计算量的一小部分来实现。

被 SOTA bug 反咬一口

我真的非常喜欢「被 SOTA bug 反咬一口」的表达。简单来说,有一大群人全力追求某些抽象指标的顶尖结果,这些结果也就失去了意义(古德哈特法则的典型表现)。每次发生这种现象的明确原因通常都是不同的,并且可能是非常技术性的,但在机器学习界,情况通常是模型对数据集用于计算指标的某些隐藏内在性质过拟合。例如,在 CV 领域中,这种情况通常指视觉相似图像的聚类。

相比于更大规模和更流行的社区,追求学术或科研目标的小规模、理想主义的低调社区更不容易成为古德哈特法则的受害者。一旦社区流行度达到一定的程度,社区就会开始盲目追求指标或道德信号(在不需要付出真正努力的时候,为了炫耀而炫耀自己的道德价值),而真正的进步则停滞不前,直到某些危机降临。这正是「被 SOTA bug 反咬一口」的真正含义。

例如,在自然语言处理领域,这种态度曾经导致在公开学术基准上训练和优化大型模型的非理性现象,但这样的「进展」意义极其有限,原因如下:

  • 即使是最好的 SOTA 模型对于眼前的任务也仅具备非常有限的理解(毕竟机器学习就是模式匹配);

  • 最近的 SOTA 结果已经变得越来越难以比较,因为它们使用的计算资源的差别可能有几个数量级;

  • 这些结果很难得到复现,从而限制了现实应用;

  • 数据越多,计算资源越多,越能得到 SOTA,这已经成为常态;

  • 排行榜指标的意义被高估。

最近,学术性 NLP 数据集数量的爆炸性增长令人振奋,但它们的真实适用性通常受以下因素的制约:

  • 大多数此类数据集是英文的;

  • 此类数据集有助于研究新的可能性,但与 CV 不同,我们很难将它们整合到实际 pipeline 中;

  • 虽然人们对构建 SQUAD 这样的数据集投入了大量精力和关注,但我们并不能真的在生产级模型中使用它们;

  • 稳定的生产级自然语言处理模型通常建立在大几个数量级的数据之上,或者任务较为简单。例如,我们可以安全地假设神经网络能可靠地执行 NER,但对于问答或对话任务而言,还处于科幻小说阶段。我喜欢这个贴切的比喻:用 Transformer 构建通用人工智能,就像通过造塔来登月。

我们支持关于机器学习验证和指标的不同观点:机器学习 pipeline 应该被当成一个压缩算法,即 pipeline 可以用内存、计算和硬件将现实世界压缩为一系列的计算图和模型。如果你能将一个模型压缩为 1/10 大小或十分之一的计算量,同时性能相近,那相比于在排行榜上的得分上升 0.5%,这种成就显然要大得多。

另一方面,也有好消息,即业界的人们开始思考其方法的效率,甚至谷歌也开始思考如何高效地预训练 Transformer(当然,是以谷歌的规模)。

论文内容和结构

n2uQneJ.png!web

传统上,机器学习的新思想是以论文中数学公式的形式共享的。这种做法具有历史意义并且合理,但这其中也存在缺陷,因为今天随着开源工具被更广泛地接受,构建应用解决方案、优化已有方案、解释工作原理(这是个难题)、构建基础模块或框架(例如百度构建的 warp-ctc 或 Facebook 构建的 PyTorch)和创建新的数学方法之间有着明显的界线。

机器学习研究人员通常同意存在很多为了写方程而写方程的论文。这对我们理解事物的原理真的有帮助吗?我们以 CTC(Connectionist Temporal Classification)损失为例来解释这一点。几乎每一篇使用该损失函数的 STT 论文都会用一个章节来解释它。你会在其中找到一些数学公式,但这对于理解该损失真的有帮助吗?

CTC 损失很复杂,可能是 STT 研究中最大的推动器,但是很少有论文提到使用了哪种实现。我还未在任何读过的论文中看到以下思想,那么,是我无知,是我使用实现的习惯比较怪异,还是他们故意省略了这些东西?

  • 每三个月我会将 warp-ctc(移植到 PyTorch)和 PyTorch 中的本地 CTC 损失做比较,后者无法恰当处理现实数据;

  • 和标准的损失相比,CTC 损失非常「激进」;

  • 通常需要某些形式的裁剪或 warm-up,CTC 损失很容易「爆炸」;

  • 在网络训练的第一个 epoch,你需要非常谨慎地选择训练数据。

当然,你也】可以查阅 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 之后,我们取得了多大进步。

InQf2qI.png!web根据这里的图调整得来(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% 的错误,但该表格存在误导性。我们阅读了多篇论文,发现了一些问题:

  • 较近期的论文很少用较小的模型做控制变量测试;

  • 声称得到 SOTA 性能的 ASR 论文很少报告收敛曲线;

  • 这些论文很少提及用于超参搜索和模型收敛的计算量;

  • 在我们读过的论文中,只有 Deep Speech 2 关注了从较小数据集迁移到现实数据的性能问题(即域外验证);

  • 没有针对样本效率和向真实数据集的扩展进行优化。2019 年的几篇论文做了类似的优化(参见论文《Sequence-to-Sequence Speech Recognition with Time-Depth Separable Convolutions》和《QuartzNet: Deep Automatic Speech Recognition with 1D Time-Channel Separable Convolutions》),但它们只关注减小模型尺寸,而没有关注训练时间。

Efaymie.png!web

这是少有的将 ASR 系统和人类基线在现实数据上进行比较的案例。即使在清晰的英语语音转录中,人类也有 4-11 的 WER(取决于语言领域)。(图源:https://blog.timbunce.org/2019/02/11/a-comparison-of-automatic-speech-recognition-asr-systems-part-2/)

我能理解,研究必须遵循不断的循环过程(研究出新的、低效率的技术,优化该技术,然后再次发现新技术),但是 ASR 研究似乎是古德哈特法则在实践中的一个很好的案例。

  • 如果你阅读了 deepspeech.pytorch 的版本注释,看到「不要期待这些模型在你自己的数据上能表现的多好!」这句话,你可能会被惊呆。这些预训练模型已经在 1000 小时的语音上训练过,并拥有非常低的 CER 和 WER。然而在实践中,将系统拟合到某些理想的约 10000 小时的数据集上时,仍得到 25-30% 的 WER(而不是宣传中所说的,在清晰语音上得到 5% 的 WER,在有噪声语音上得到 10% 的 WER);

  • 和 CV 研究不同,CV 中确实可以将模型在 ImageNet 上的优秀性能迁移到只有较少数据的现实任务中。但在语音领域,模型在 LibriSpeech 的优秀性能并不能迁移到现实数据。你并不能像在 CV 领域中用 1000 张图像训练网络那样,用 1000 小时语音来快速调整网络;

  • 以上这些意味着,学界和业界已经开发了越来越复杂且对 LibriSpeech 过拟合的方法。

研究人员希望在他们待解决问题上取得进展并利用现有的数据,这情有可原。但最终表明,首先创建一个真正大型且极具挑战性的数据集(类似 ImageNet 项目)将会有用得多。

过分依赖大规模计算

UBn2a2J.png!web

过参数化示例。谷歌在实验里展示了,其大型网络和中型网络的性能并没有多大差距。也就是说,在实际应用中,你可以采用中型网络并使用其它技巧来提升性能。

下表展示了我们对著名或最近 ASR 论文中所用计算的分析:

iaYR73j.png!web

由于俄语拥有更多的变化,其转录难度比英语更大。我们的数据集不能直接和 LibriSpeech 相比较,因为它包含了很多领域,而 LibriSpeech 更加同质化,且噪声更少。

从上表中,我们可以观察到以下现象:

  • 大多数在 LibriSpeech 上训练的模型都是以循环方式进行的,即用整个数据集训练 N 次。这种做法是非常成本低效的。因此,我们采用课程学习(curriculum learning)方法;

  • QuartzNet:这篇论文非常注重效率,但似乎用于训练的计算量与其他论文相当;

  • TDS:虽然他们没有明确报告训练网络所需的时间(我们试图复现其网络,但失败了),但他们有一大堆不错的想法——使用字节对编码(BPE),使用超过 2 或 3 的步长,使用可分离卷积;

  • JasperNet:该研究称,对网络进行了 50 个 epoch 或 500 个 epoch 的训练,但没有明确提到训练时间和使用的硬件数量;

  • Wav2Letter:令人惊讶的是,Wav2Letter 论文实际上没有报告这些指标中的任何一个。我们使用类似 Wav2Letter 的网络,它们有大约 2000 万到 3000 万个参数,但是不能转录俄语;

  • Deep Speech 2:很难将最初的 Deep Speech 论文包括在这个列表中,主要是因为他们尝试、推广和开创了许多不同的事物。我们只是把他们最常引用的在 LibriSpeech 上使用循环模型的实验包括在内。

VJnyIvj.png!web

转录结果随模型尺寸的变化(图源:http://arxiv.org/abs/1512.02595)(http://arxiv.org/abs/1512.02595%EF%BC%89)

eU3Yzqv.png!web

转录结果随数据量的变化(图源:http://arxiv.org/abs/1512.02595)(http://arxiv.org/abs/1512.02595%EF%BC%89)

通过表格,我们可以立刻发现以下趋势:

  • 几乎所有研究都使用大规模计算,并且没有清晰可见的硬件需求趋势(甚至在声称减轻计算负担的论文中也是如此);

  • 网络从小型到大型不等,但总体而言可以肯定的是,无论使用多少计算量,大多数网络都对 LibriSpeech 过拟合;

  • 如果你跳到「总体进展」部分,查看我们的收敛曲线和以下收敛曲线,你会发现,我们最佳网络的收敛 90% 发生在最初的 2-3 天,这与行业一致(但我们总体上使用的计算量要少得多)。

FFfaYrz.png!web

Deep Speech 2 的收敛曲线。

其它常见批判

在研究机器学习或 STT 问题时,还常出现以下批评:

  • 通常,论文对方法的泛化性能(即域外测试)表述含糊;

  • 很少关注超参数的稳定性;

  • 全新的半监督和无监督学习方法(wav2vec、循环 STT-TTS 训练)不执行任何关于样本效率、稳健性或泛化性的健全性检查,主要关注创新性因素;

  • 端到端怪象:学术论文通常在一个小的理想数据集(LibriSpeech)上过拟合 LM 并进行后处理,声称实现顶尖端到端结果的方法其实是非常不理想的,因为在实践中文本域可用的数据量至少要高 999 倍(例如,将维基百科与 LibriSpeech 中的所有文本的大小进行比较);

  • 过度依赖梅尔频率倒谱系数:我们尚未看到对短时傅立叶变换、梅尔频率倒谱系数、梅尔滤波器组、小波等的恰当对比。我们在较小数据集上进行了实验,最终发现使用什么不会造成区别,但是在真实的有噪声的数据上短时傅立叶变换是最好的。此外,我们未能对较新的网络滤波器(如 SincNet)进行任何有意义的实验。

对我们的解决方案提出批评

为公平起见,我们也对自己的解决方案做出了反省:

  • 我们使用私有数据来训练模型,尽管私有数据集的大小比整个数据集小几个数量级,即「高质量基准」大约包含 500 小时(其中 100 小时是手动标注的),而公共数据集有 20000 小时;

  • 此外,本文中报告的主要结果仅通过少量的手动标注获得(即我们仅手动标注了验证集)。我们使用少量私有数据的主要原因是,我们需要在主要语言领域中得到结果;

  • 与数据集不同,我们没有共享训练 pipeline、特定超参数和模型设置以及预训练模型,因为本研究 be 研究都是为自业商业项目进行的。我们本可以选择在非商业许可下共享,但普遍的共识是知识产权法在俄罗斯不起作用,除非你是国家支持的垄断者。我们正在寻找融资方案,以便开源一切资源,包括未来在其它语言方面的工作。

结论

最近在大众媒体中,监督式机器学习成为热词。出现这种情况是因为,在某些承诺的刺激下(虽然它们无法兑现),该领域出现了非理性繁荣和过度投资。

这是可悲的,因为这样的情况可能导致对有益于整个社会的领域投资不足。自动驾驶卡车公司 Starsky 的故事完美地说明了这一点。他们交付了有效的产品,但视场还没准备好,部分原因在于「人工智能祛魅」。

借用本文的概念和图像,你可以想象社会对新技术的反应曲线,如下所示。如果技术已经到达 L1,它将被广泛采用,每个人都能受益。如果 L2 可以实现,但需要大量投资和时间,可能只有大公司或国家支持的垄断企业才能收获果实。如果要实现 L3,那么人们可能只会重新考虑这项技术。

AJNRnub.png!web

MziqMj3.png!web

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?还是两种模式共存?


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK