终于有人对语音技术来了次彻头彻尾的批判!

点击上方“Python大本营”,选择“置顶公众号”

Python大本营  IT人的职业提升平台


作者 | Alexander Veysov

译者 | 孙薇

ImageNet的出现带来计算机视觉领域的突破发展,掀起了一股预训练之风,这就是所谓的ImageNet时刻。但与计算机视觉同样重要的语音领域,却是迟迟不见“ImageNet时刻”的到来。而作为NLP研究中最重要的方向之一——语音转文本(Speech-to-Text,STT)更是如此,虽然这项技术几乎已经渗透进我们日常生活的方方面面,但是研究上却也未有历史性的突破。这是为什么?终于,有专家站了出来,对语音领域研究做了一次彻头彻尾的批判,从学术界到工业界都没放过。

本文中,这位专家将从构建STT模型的实践过程中,回答下面的几个问题:

 

  1. 什么是所谓的ImageNet时刻,它为什么重要?

  2. 为什么语音行业的ImageNet时刻尚未到来,学术界和工业界为此需负什么责任? 

01

ImageNet时刻是什么?

 

在我们看来,在特定机器学习子领域中的ImageNet时刻指的是:

 

  1. 解决95%的标准“有用”任务所需的框架和模型组件,作为标准和经过测试的开源框架模块获得广泛的可用性;

  2. 大多数流行的模型都可以使用来自大型数据集的预训练权重,使得通过较少数据对下游任务进行微调成为可能;

  3. 解决了从使用预训练模型的标准任务,到不同日常任务的这类微调(即很可能效果良好);

  4. 与之前在论文中报告的计算需求(在STT领域是100-1000GPU日)相比,训练日常任务模型所需的计算量(例如在STT领域是1-10GPU日)很小;

  5. 小型独立公司和研究小组可以使用大型模型的预训练计算。

 

如果满足上述条件,全新实用的应用就能以合理的成本进行开发。此外,行业民主化也会随之而来——人们不必再依赖诸如谷歌这样的大公司作为行业中的唯一真相来源。

 

02

为什么STT的ImageNet时刻尚未到来?

 

要了解这一点,我们先试着理解有哪些事件和趋势代表着计算机视觉(CV)领域进入了ImageNet时刻。

          可视化图表:引领计算机视觉领域进入ImageNet时刻的关键趋势和事件

 

简单来说:

 

  1. 数十年来,NVIDIA公司一直在制造和优化消费类GPU,众所周知,现在只需将4-8个顶级GPU放在一起,便可以构建一台“超级计算机”;

  2. 据传言称,2000年代后期,NVIDIA设想GPU性能足以满足机器学习的需求,就在那时他们开始投资CUDA技术(首个版本发布于2007年),这是一个基于大多数GPU加速的机器学习应用而构建的低级矩阵乘法框架;

  3. 2009年,一支由李飞飞教授领导的团队发布了ImageNet数据集,之后在2011年发起了现称ImageNet大规模视觉识别挑战赛(ILSVRC)的竞赛。在2012年,Alex Krizhevsky等人也使用了NVIDIA GPU和CUDA来训练现在著名的AlexNet神经网络,并实现了远超之前的性能表现;

  4. 自此之后,深度学习框架一直在发展,并在2017-2018年左右逐渐成熟。本文发表之际,PyTorch和TensorFlow已是首选的解决方案,除了图像分类之外,它们还针对许多任务提供了海量的预训练模型;

  5. 同一时期,在ImageNet上实现SOTA性能的模型框架也在一直不断完善,随着发展,训练和评估这些模型的代码也随着在相同流行框架中的预训练权重一并发布。

 

因此,到2018年左右,“ImageNet时刻”在视觉界已完全实现:

 

在计算机视觉(CV)领域,不再将ImageNet图片分类本身作为目的,而是将其作为训练深度卷积神经网络(CNNs)的“前置任务”,以了解其良好通用功能的做法愈发普遍。这种预先训练CNN在ImageNet上执行图片分类(即预训练),然后将这些功能用于新目标任务(即微调)的做法已成为解决大量计算机视觉问题的事实标准。使用ImageNet预训练的CNN功能,在一些图片分类数据集、对象检测、动作识别、人体姿势评估、图片分割、光流(optical flow)、图像自然语言描述(image captioning)等任务上都获得了令人印象深刻的成果。

 

为了简化此论据,我们假设STT共享了硬件加速选项、框架及关于CV神经网络架构的一些成果。另一方面,与CV相比,STT的预训练模型、迁移学习和数据集明显落后。此外,计算需求(如研究论文中所述)仍旧过高。

 

让我们更详细地了解这种情况背后的原因。关于语音的大部分研究是由工业界/公司所赞助的学者发表的,因此我们将对其研究与学术界和工业界相关的部分提出批评。公平起见,我们也会批评自己的解决方案,也欢迎读者向我们(aveysov@gmail.com)提出反馈和批评。

03

对工业界的批评

 

通常来讲,我们读过的大多数STT论文都是由工业界(如谷歌、百度和脸书)的研究者所撰写的,大多数针对STT论文和解决方案的批评都可以归咎于研究者的“学术界”或“工业界”背景。

 

简而言之,这是我们针对STT工业界部分主要关注的问题:

 

  • 构建基于私有数据的解决方案,并且在报告中不够明确;

  • 复杂的框架及工具包;

  • 解决并不存在的问题;

  • 在论文中混淆结果。

 

构建基于私有数据的解决方案,并且在报告中不够明确

 

著名的《Deep Speech 2》(深度语音2)论文(2015年发表)中包含以下图表:

       

基本上,论文中表达了这样的观点:需要大量数据才能拥有高质量的模型。这是几篇明确报告此问题并执行数据集之外验证的论文之一。大多数现代STT的论文通常都在用愈来愈奢侈的方法对LibriSpeech ASR corpus (LibriSpeech)语料库进行过度拟合。

 

很可能谷歌、脸书和百度公司都有1万-10万小时的私有数据集用于训练其模型。这很好,但问题在于:他们使用这些数据来提升自己的性能,却没有报告出来。由于标注语音需要很长时间,问题就愈加复杂。因此,由于成本过高,该领域的小型参与者无法构建自己的数据集。即便他们采用了类似我们的方法来获取标注,也需要大量资源、时间和精力,来生成标签并进行大规模验证。

 

1个小时的语音,标注起来可能需要2-10个小时,具体取决于数据集的挑战性以及是否附加了某些形式的自动标签(即以其他STT系统输出的形式存在)。STT与CV不同,后者中有用的数据集可以通过标注一小部分来实现,而前者——即语音标注非常昂贵,从而导致目前的情况:每个人都在一个备受尊敬的公共数据集(LibriSpeech)上宣称获得了最高成果,但对于这些模型如何在真实情况下执行,以及哪些模型在生产环境下针对什么进行了训练的报告几乎没有动力。谷歌、脸书或百度等大公司缺乏明显的经济诱因来开源其大型专有数据集。总而言之,这为意图构建自己STT系统的从业者设置了极富挑战性的准入壁垒。类似*Common Voice*这样的项目会让情况简单一些,但它们的数据还不够多。

 

复杂的框架和工具包

 

工具包**        

COMMITS

CONTRIBUTORS

语言

评论                        

Wav2Letter++

256

21

C++

提交的版本与发行版可能更相似

FairSeq

956

111

PyTorch


OpenNMT

2,401

138

PyTorch


EspNet

5,441

51

PyTorch


Typical Project

100-500

1 - 10

PyTorch


 

依靠框架或工具包,而不是从头写起的情况非常常见。人们会希望有为STT设计的专用框架和工具包,然后基于这些框架所提供的模型进行构建,而不是在基础的PyTorch或TensorFlow上从头写自己的模型。不幸的是:对于语音识别来说,情况并非如此。使用这些解决方案来开启自己的STT项目并不合理,原因很多:

 

  • 代码是为了大型运算而优化过的;

  • 只有小型学术数据集中存在引导方案(端对端案例表明如何使用这些框架),无法在未经大型运算的情况下扩展到大型数据集中;

  • 这些引导方案的样本效率极低(我们最喜欢的样本在数据集中训练10GB的LMs,文本足有数百兆字节);

  • 即便在LibriSpeech上对模型进行了预训练,很可能也无法转移到真实环境中;

  • 如果想要构建一个内部的STT解决方案,将其内部化并正确理解优化,你可能需要一个大型团队或者相当可观的时间来将这个工具包内部化;

  • 上述工具包或是已经发布的内部解决方案,或是PR版、抢先上市版或生态系统构建工具。这意味着大多数情况下,这款工具包会作为恰当的MVP或基准出现,但如若不投入大量资源,你无法轻易优化此类管道(对于公司来说,无论如何都会编写自己的工具包)。

 

从更加个人化的角度来看,我们多次尝试对FairSeq 以及 EspNet管道进行某些程度的内部化,但无法在合理的时间和精力范围内完成。也许我们的机器学习工程技能还有很大改进空间,但就算工程技能更优的人也表达过类似的看法(即专职的C++机器学习编程者)。

 

解决并不存在的问题

 

构建一个更新更好、可用于8个价值1万美元的GPU上运行的工具包,对于真实世界的应用来说并无帮助。

 

基于真实生活中的数据,创建并发布一个免费、开放及公共领域的数据集,然后发布对其进行预训练的模型(这就是CV中发生的情况)才是真正的解决方案。然而,除了Mozilla的Common Voice项目之外,我们还没看到任何有价值的计划。

 

无法再现的结果

 

在机器学习中有一个常见的模式,即每周都有人声称获得了最前沿的结果,但这类结果很少是可重现的,或者附有可简单运行的代码。

 

考虑到与加速后的硬件,以及大型数据集的集成问题,其困难度及训练模型所耗费的时间使得可重现性更难实现。

 

与“最为前沿”的口号相反,我们相信,应当将更多注意力转向“优秀到足以在真实生活中使用的”解决方案和公共数据集上。

 

04

对学术界的批评

 

下面是我们观点的简单总结:

 

  • 如果一大群人都在关注追求某种标准上的顶尖成果,则这项指标会失去其意义(可参考见古德哈特定律:当一个政策变成目标,它将不再是一个好的政策)。如果不能快速迭代,学术数据集将成为各大公司用以炫耀的“排行榜”。为了达到最先进的水平,在大型计算中使用庞大而样本低效的网络已经成为默认规则,尽管较小型的从业者无法参与;

 

  • 理想情况下,论文应当有足够的细节信息,从而令独立研究人员也能获得95%以上的论文信息;

 

  • 在实际情况下,论文内容和结构通常会因其实际目的和真实生活中的应用而受到质疑,即其发表时以“不发表就完蛋”的心态来发布,其中以复杂的数学来解释新概念,尽管事实上这些研究者自身也许与所列举的数学信息并无关联,只是借用现成的工具罢了。

 

 除了可重现性之外,论文常见的问题还包括:

 

  • 在方法的一般化(即域外测试)上含糊其辞,如果看一下论文,似乎神经网络在自动语音识别(ASR)上打败了人类,但那只是“排行榜”问题的另一个症状,并非事实;

 

  • 他们通常不会说明所花费的计算量;

 

  • 他们几乎不会发布收敛曲线(即达成最先进成果的一部分所需要耗费的时间和计算量是多少)。通常在机器学习中,95%甚至99%的结果只需要总计算量的很小一部分即可达成。

 

被SOTA bug咬住

 

我真的很喜欢“被SOTA bug咬住”这样的表达。简而言之,如果一大群人都专注于追求某个抽象指标的顶尖成果,则该指标就失去了意义(这也是古德哈特定律的经典体现)。这类情况发生的具体原因不一而足,而且可能非常技术性,但在机器学习中,通常是由于模型与用于指标计算的数据集中某些隐藏的内在特质过度拟合所导致的,例如,在计算机视觉领域,这类模式通常是视觉上类似的一组图像。

 

相对于较为大型、更热门的社区来说,追求学术或科学目标的小型理想主义的低调社区更不容易成为古德哈特定律的受害者。一旦达到一定的知名度,社区就会开始追求指标或道德信标(释放道德信号,以某种言论显示自己站在道义一方;单为炫耀而炫耀自己的道德价值观,无需付出任何实际努力),不再追求真正的进步,除非某些危机来临。这就是被SOTA bug咬住的意思。

 

举个例子:在自然语言处理(NLP)领域,这种态度导致人们对根据公共学术基准而优化的大型模型的非理性过度投资,但是这样的“进步”实用性非常有限,原因很多:

 

  • 即使最好最先进的模型对于手上的任务理解也很有限(毕竟机器学习属于模式匹配);

  • 由于计算所耗费量可能会相差几个数量级,最近的最先进成果也越来越难比较了;

  • 难以再现的性质限制了其在真实世界中的使用;

  • 更多数据&计算量 = SOTA不是研究新闻;

  • 排行榜指标被过度高估。

 

最近,NLP领域的学术数据集大量出现,但通常其真实情况下的适用性受限于多种因素:

 

  • 这些数据集大多是英文的;

  • 就研究可能性方面,这些数据集很棒,但与CV不同,在实际管道中它们很难合并;

  • 尽管在构建类似SQUAD这样的数据集上所花费的努力和精力都很可观,但在生产模型中想要使用还无法真正做到;

  • 稳定的生产级NLP模型通常基于大出若干个数量级的数据来构建,或者就是手上的任务相当简单。举个例子:假设某个神经网络可以可靠地完成命名实体识别(Named Entity Recognition,NER)很安全,但在回答问题或维持对话方面,目前还只是科幻小说级别。我喜欢这个恰当的比喻:用transformer来构建AGI,就像是通过建设高塔来登月。

 

关于机器学习的验证和指标,(相对于与“越高越好”的标准)存在一种竞争性的观点,我们赞同这样的说法:一个机器学习管道应当被视为一种压缩算法,即你的管道将现实世界压缩成一组具有内存、计算和硬件需求的计算图与模型。如果你有办法将与一个性能大致相似的模型放入权重尺寸或计算大小上要小10倍的模型,则在排行榜上获得额外0.5%的进步会是一个更好的成绩。

 

另一方面,好消息是工业界的人士开始考虑方法的效率,甚至谷歌也开始发表关于有效训练Transformer模型库的论文了。

 

论文内容和结构

        

传统意义上,在机器学习中,新的想法已经以数学公式的形式共享了。这种做法历史悠久,也容易理解,但存在缺陷。由于如今开源工具的广泛采用,在构建应用解决方案、优化现有方案、解释事物运行方式(这是一项单独的艰苦工作)、构建基本模块或框架(如果百度构建的warp-ctc,或者脸书构建的PyTorch)和创建新的数学方法存在着明显的分界线。

 

机器学习的研究人员通常都同意这个看法:论文中存在很多为方程式而方程式的内容。但它们是否真的有助于我们理解事物的真正运行方式呢?我们以CTC(Connectionist Temporal Classification)损失为例来说明这个观点。几乎每篇用到这个损失的STT论文中都有专门的章节来描述,你可能会在其中找到一些公式,但是否能帮助你理解呢?

 

CTC损失是个复杂的问题,而且很可能是STT研究最大的推动力,但很少有论文提到它们使用了哪种实现。在我读过的论文中,还没看到下列看法。该怪我的无知,或者实现时的怪癖,还是他们故意忽略了这些内容呢?

 

  • 每3个月,我会将warp-ctc与PyTorch原生的CTC损失相比较,使用真实数据时后者无法正常运作;

  • 与标准损失相比,CTC损失相当“激进”;

  • 通常需要某种形式的修剪或预热,CTC损失“喜欢”爆炸;

  • 对于在第一阶段向你的网络展示哪些数据,你应当非常小心。

 

当然,你可以参考原论文(由一名数学家撰写),或者参考stellar piece on Distill on CTC,后者更易读懂。但老实说,我能找到的最佳解释是一个俄语视频:obscure YouTube video,其中有两个人坐在那里通过样例来解释其运作原理,并借助幻灯片逐步详析。因此,论文中的所有空间都被公式占用了,虽然在技术上来说很可能是正确的,但什么也没解决。事实上,完成一个类似视频3Blue1Brown的人所做的工作非常困难,但很可能引用恰当的解释会是个解决方案?

 

试想一下,如果机器学习论文和出版物遵循以下模板,传递结果的难度要降低多少:

 

  • 使用这些工具包、实现和想法;

  • 进行这些主要的改动;

  • 运行这些试验,这是我们的结论。

 

在“小型”学术数据集上训练样本低效率的过度参数化网络

 

我们来看看从推广ASR的原始论文Deep Speech 2开始,到现在进步了多少。

     从这篇论文改编,《Deep Speech 2》的论文中所报告的人类结果。

 

是否似乎字符错误率(CER)和词组错误率(WER)的指标实际上降低了60%,并超过了人类水平?因此,如果运行效果如此之好,为什么我们不能在每台设备上看到理想的STT弹出?为什么语音接口仍被认为是一项很酷的功能,特别是在商业应用中?

 

尽管根据下表的数据,在转到音频时,人类通常会有5-10%的错误率,但这个表格具有误导性。我们阅读了一些论文,并发现了一些情况:

 

  • 较新的论文很少使用较小的模型来执行消融试验(ablation tests);

  • 声称包含最先进性能的ASR论文很少会出现收敛曲线;

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

  • 在我们读过的论文中,仅有Deep Speech 2对较小型数据集上的性能如何转化到实际生活的数据方面有所关注(即域外验证);

  • 没有针对真实数据集的样本效率和可伸缩性做过优化。2019年的几篇论文与(Time-Depth Separable Convolutions, QuartzNet)讲述的内容大致相似,但更关注减少模型大小,而不是训练时间。

        原始的研究报告请在这里查看(https://blog.timbunce.org/2019/02/11/a-comparison-of-automatic-speech-recognition-asr-systems-part-2/),关于ASR系统在真实世界中的情况,将野外表现与人类基准相对比的案例极少。即便在清晰的英文语音中,人类也有4-11的WER(取决于域)!

 

我理解研究是遵循周期性的(新的尝试效率低下,优化后再取得新的进展),但似乎ASR研究是古德哈特定律在实践中的一个很好的例子。

 

  • 如果你阅读了在PyTorch上预训练的深度语音的发布通知,并看到“不要指望这些模型能够在你自己的数据上执行良好”这样的话,可能会很惊讶——经过了1千小时语音的训练之后,CER和WER都很低。但在实践中,配有某些1万小时的理想数据集的系统,其WER趋近25-30%(而不是像广告中那样,清晰语音5%和嘈杂语音10%);

  • 在CV相关的研究中,更好的Imagenet性能实际上转移到了数据集更小的真实任务上,与之不同,在语音中,LibriSpeech上的更佳性能并没有转移到真实世界的数据上。你无法像在CV中用1千张图像训练你的网络那样,仅通过1千小时的语音来“快速调整”你的网络;

  • 所有这些意味着学术界和企业界已经有越来越多的复杂方法针对LibriSpeech进行过度拟合。

 

尽管可以理解:研究人员想要在自己的问题上取得进展,并使用可用的数据;但最终事实证明:首先将类似ImageNet这样的项目用于创建真正大型且具有挑战性的数据集会更加有用。

 

过度依赖大型计算

        

过度参数化的案例。谷歌在实验中显示:其大型和中型网络之间没有显著的质量差异,即在实践中我们可以放弃中型网络,使用其他技巧来提高质量。

 

下面是我们对著名或近期ASR论文中所使用计算的分析:

 

因为变形更多,俄语比英语更难,尽管我们的数据集包含很多域,因此无法直接与LibriSpeech相比较,不过LibriSpeech同质化更严重,噪音也更小。

 

查看下表,我们可以发现以下信息:

 

  • 大多数在LibriSpeech上训练的模型都以周期性的方法来完成,即N次显示完整数据集。成本非常低效,因此我们使用课程学习方法;

  • QuartzNet. 这篇论文较为关注效率,但似乎用于训练的计算量与其他论文相当;

  • TDS. 尽管他们没有明确报告训练其网络所需要的时间(我们尝试复制其网络,但失败了),但他们有许多很合理的理念——使用字节对编码(byte pair encoder,BPE),使用strides超过2或3的模型,使用简单来说算是可分离卷积的东西;

  • JasperNet. 他们报告中说道:对其网络进行了或50个或500个时期的训练,但没有明确提到训练时间或使用的硬盘量;

  • Wav2Letter. 在回顾中,Wav2Letter的论文实际上并没有报告任何指标,这令人惊讶。我们尝试了类似Wav2Letter的网络,有大约20-30M的参数,但没有提供俄语;

  • Deep Speech 2. 很难将原始的Deep Speech论文包括在本列表中,主要是因为他们尝试、推广和开创了很多不同的东西。我们只能把他们最常被引用的LibriSpeech试验和递归模型包括在内。

            模型大小 vs 最终结果, Deep Speech 2.        数据量 vs 最终结果, Deep Speech 2.

 

查看下表,我们还可以发现以下趋势:

 

  • 几乎到处都在使用大型计算,并且没有明显的硬件需求趋势(尽管论文中声称计算负担已经减轻);

  • 网络的范围从紧凑到庞大,但终归大多数网络都在过度拟合LibriSpeech的假定是很安全的,无论使用什么计算;

  • 如果跳至“已取得的总体进步”,查看我们的收敛曲线和下面的收敛曲线,你会发现90%的融合发生在最初2-3天内,与整个行业一致(但我们使用的总体计算要少得多)。

       Deep Speech 2的收敛曲线

 

05

其他常见的批评

 

在处理机器学习或语音转文本方面的常见批评:

 

  • 通常,论文在方法的一般化方面(即域外测试)含糊其辞;

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

  • 全新的半监督及无监督学习方法(wav2vec, cyclic STT-TTS training)并没有对样本效率、鲁棒性或一般化进行任何清晰或简便的检查,而且大多关注新颖性的元素;

  • 对所有情况执行端对端标准。学术论文通常会过度拟合其LMs,并在一个小型的理想化数据集中(LibriSpeech)执行后期处理,其方法声称:由于文本域中可用数据量至少要高出1千倍,顶级的端对端结果极其次优(比如:将Wiki的大小与LibriSpeech的所有文本相比);

  • 对梅尔频率倒谱系数(Mel Frequency Cepstral Coefficients)过度依赖。我们尚未看到对短时傅里叶变换(STFT)、梅尔频率倒谱系数、梅尔滤波器组(Mel-filter banks)以及小波(wavelets)等数据进行合适的比对。在我们试验的较小数据集中,最终使用什么并没有区别,但在实际生活中对于嘈杂的数据结果是不同的;

  • 短时傅里叶变换是最好的。此外,我们无法提供更新的网络过滤器SincNet)来执行有意义的试验。

 

06

我们的解决方案也有缺陷

 

公平起见,我们也涵盖了一些针对自己的批评:

 

  • 我们使用了私有数据来训练模型,尽管与整个数据集的大小相比,私有数据集的大小要小得多,有着数量级的差异,即大约500小时(其中100小时经过手动标注)的“高质量基准”,而公共数据集的大小则是2万小时;

  • 此外,本文所报告的主要结果仅通过极少量的手动标注就可达成(即,我们仅手动标注了验证集)。我们使用了这些少量的私有数据主要是因为我们需要在主域里获得生产结果;

  • 与我们的数据集不同,由于所有这些研究都是针对自筹资金的商业项目完成的,因此我们不共享训练管道、特殊的超参数、模型设置与预训练模型。我们本可以通过非商业许可的方式进行共享,但基于普遍共识,除非政府支持的垄断企业,否则在俄罗斯知识产权法并不起作用。我们正在寻求资金支持,以开源所有内容,包括将来在其他语言上的工作。

 

07

结论

 

近来在大众媒体眼里,有监督的机器学习泛滥起来。这种情况是由于无法兑现的承诺被人为炒作,从而针对该领域出现了不合理的繁荣和过度投资。

 

这很糟糕,因为这种情况可能会导致对整个社会有利的领域无法获得投资。例如无人驾驶卡车公司Starsky的故事就完美证明了这个观点。他们发布了可用的产品,但市场由于“AI泛滥”而没有准备好迎接。借用那篇文章里的概念和图像,你可以直观地通过以下曲线看到社会对于新技术的反应。如果技术达到L1,则会获得广泛采用,人人受益。如果可以达到L2,但需要大量的投资和时间,可能只有大型公司或有政府支持的垄断企业才能收获其成果。如果是L3的情况,则很可能人们只会在将来才重新启用这项技术。

     

Andrej Karpathy在他的技术讲座中解释:为什么在自动驾驶汽车行业,获得最后1%的质量很困难

 

但是我们应当从中学到什么?为什么我们应当关心和参与这些?作为一项科技,语音有很大的潜力将无聊的任务自动化,让人们可以将精力花在重要的事情上。这些以前也发生过。20年前,这样的“奇迹”技术是关系数据库。请阅读Benedict Evans关于这个主题的文章。

“关系数据库是一个新的基本支持层,能够改变计算所能做的事。在1970年代晚期关系数据库出现之前,如果你希望数据库显示“所有购买此产品并居住在该城市的顾客”信息,则通常需要一个客户工程项目。数据库的结构限定:并非任意交叉引用查询都很容易也很常规。如果想要提问,则需要有人建立。数据库是保存记录的系统,关系数据库则将其转化为商业智能系统。

这使得数据库在重要的应用方面有所改变,因此创建了新的用例,并导致全新价值数十亿的公司出现。关系数据库给了我们Oracle,也给了我们SAP公司,而SAP公司及其同侪让我们拥有了全球化的即时供应链,他们又给了我们苹果和星巴克。到了1990年代,几乎所有企业的软件都是关系数据库了,PeopleSoft和CRM,还有SuccessFactors以及数十家公司几乎都在使用关系数据库。没有人会认为SuccessFactors或Salesforce这样的公司会因为数据库都归属于Oracle而无法运行。相反,这项技术成为了所有一切的支持层。

因此,借助这种思考方式来衡量如今的机器学习会是很好的办法。这是我们对计算机所能应用方式变化的一步进展,也会成为很多不同公司许多不同产品的一部分。最终,几乎所有一切都会包含机器学习了,而且没有人会在意。这里有一个重要的相似之处便是,尽管关系数据库具有规模效应经济,还存在有限网络或“庄家通吃”效应。假如B公司从同一家供应商处采购了相同的数据库软件,则A公司所使用的数据库不会变得更好:如果Caterpillar公司也买了相同的数据库,那么Safeway公司的数据库也不会变得更好。机器学习在实际中的应用与之相似:机器学习是关于数据的,但数据与特定应用高度关联。更多的笔迹数据会使得手写识别器效果更好,而更多燃气涡轮数据会令预测燃气涡轮故障的系统效果更佳,但彼此之间无法协助作用。数据是不可替代的。”

 

根据他的概念:“机器学习 = 只是个能回答些问题的堆栈,就像无处不在的关系数据库”,语音技术的命运只能取决于我们来决定。其利益会由少数选择后的人群,还是整个社会,尚且不得而知。我们坚定地相信,毫无疑问语音技术会在2-3年之内成为商品。唯一的问题在于,它们会更像是PostgreSQL还是Oracle,或者两者并存?

原文链接:

https://thegradient.pub/a-speech-to-text-practitioners-criticisms-of-industry-and-academia/

本文为CSDN翻译文章,转载请注明出处。




END


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一部分 基本理论 第2章 听觉机理和汉语语音基础 2. 1 概述 2.2 听觉机理和心理 2.2.1 语音听觉器官的生理结构 2.2.2 语音听觉的心理 2.3 发音的生理机构与过程 2.4 汉语语音基本特性 2.4. 1 元音和辅音 2.4.2 声母和韵母 2.4.3 音调(字调) 2.4.4 音节(字)构成 2.4.5 汉语的波形特征 2.4.6 音的频谱特性 2.4.7 辅音的频谱特性 2.4.8 汉语语音的韵律特征 2.5 小结 参考文献 第3章 语音信号处理方法--时域处理 3.1 概述 3.2 语音信号的数字化和预处理 3.2.1 语音信号的数字化 3.2.2 语音信号的预处理 3.3 短时平均能量和短时平均幅度 3.3.1 短时平均能量 3.3.2 短时平均幅度 3.4 短时过零分析 3.4. 1 短时平均过零率 3.4.2 短时上升过零间隔 3.5 短时自相关函数和平均幅度差函数 3.5.1 短时自相关函数 3.5.2 短时平均幅度差函数 3. 6 高阶统计量 3.6.1 单个随机变量情况 3.6.2 多个随机变量及随机过程情况 3.6.3 高斯过程的高阶累积量 3.7 小结 参考文献 第4章 语音信号处理方法--时频处理 4. 1 概述 4.2 短时傅里叶变换 4.2.1 短时傅里叶变换的定义和物理意义 4.2.2 基于短时傅里叶变换的语谱图及其时频分辨率 4.2.3 短时傅里叶谱的采样 4. 3 小波变换 4.3.1 连续小波变换 4.3.2 二进小波变换 4.3.3 离散小波变换 4.3.4 多分辨分析 4.3.5 正交小波包 4.4 Wigner分布 4.4.1 Wigner分布的定义 4.4.2 Wigner分布的一般性质 4.4.3 两个信号和妁Wigner分布 4.4.4 Wigner分布的重建 4.4.5 Wigner分布的实现 4.5 小结 参考文献 第5章 语音信号处理方法--倒谱同态处理 5.1 概述 5.2 复倒谱和倒谱 5.2.1 定义 5.2.2 复倒谱的性质 5.3 语音信号的倒谱分析与同态解卷积 5.3.1 叠加原理和广义叠加原理 5.3.2 同态解卷特征系统和同态解卷反特征系统 5.3.3 同态解卷系统 5.3.4 语音的复倒谱及同态解卷 5.4 避免相位卷绕的算法 5.4.1 最小相位信号法 5.4.2 递归法 5.5 小结 参考文献 第二部分 语音识别系统 第6章 语料库 6.1 概述 6.2 语料库的基本特征 6.3 语料库的类型 6.4 语音语料库 6.4.1 语音语料库建立、收集和标注的意义 6.4.2 语音语料库的建立和收集要点 6.4.3 标准语音语音特性描述 6.5 语料库的设计举例--863汉语普通话语音合成语料库的设计 6.5.1 语料库设计原则 6.5.2 语音库的标注 6.5.3 与语音语料库相关的文字语料库标注 6.6 小结 参考文献 第7章 语音识别的预处理 7.1 概述 7.2 语音识别单元的选取 7.2.1 汉语音节 7.2.2 汉语的基本音素 7.2.3 汉语半音节 7.3 自动分段--端点检测技术 7.3.1 基于能量的端点检测 7.3.2 基于LPC-10声码器的端点检测 7.3. 3 基于信息熵的语音端点检测 7.3.4 基于频带方差的端点检测 7.3.5 基于倒谱特征的带噪语音信号端点检测 7.3.6 基于HMM的端点检测方法 7.3.7 基于分形技术的端点检测 7;3.8 基于自相关相似距离的端点检测 7.3.9 基于迟滞编码的端点检测 7.3.10 实时端点检测算法 7.4 小结 参考文献 第8章 语音信号特征参数 8.1 概述 8.2 基音周期 8.2.1 自相关法及其改进 8.2.2 并行处理法 8.2.3 倒谱法 8.2.4 简化逆滤波法 8.3 线性预测参数 8.3.1 线性预测信号模型 8.3.2 线性预测误差滤波 8.3.3 语音信号的线性预测分析 8.3.4 线性预测分析的解法 8.3.5 斜格法及其改进 8.4 线谱对(LSP)参数 8.4.1 线谱对分析原理 8.4.2 线谱对分析的求解 8.5 LPCC参数 8.6 MFCC参数 8.7 ASCC参数 8.8 感觉加权的线性预测(PLP)特征 8.8.1 PLP参数 8.8.2 RASTA-PLP参数 8.9 动态差分参数 8.10 高阶信号谱类特征 8.10.1 WV谱的定义及其主要性质 8.10.2 WV谱计算式的一些变形 8.11 小结 参考文献 第9章 特征变换 9.1 概述 9.2 线性判别分析(LDA) 9. 2.1 线性判别分析的概念 9.2.2 广义线性判别函数 9.2.3 Fisher线性判别 9.2.4 多类问题 9.3 主分量分析(PCA) 9.3.1 基于K-L变换的主分量分析 9.3. 2 随机向量的K-L展开 9.3. 3 基于K-L变换的降维 9. 4 独立分量分析(ICA) 9.4. 1 引言 9.4. 2 线性独立分量分析 9.4.3 线性独立分量分析算法 9.4.4 独立分量分析的预处理 9.4.5 非线性独立分量分析 9.5 小结 参考文献 第10章 语音识别的模型 10.1 概述 10.2 动态时间规整(DTW) 10.2.1 动态规划技术(DP) 10. 2.2 DTW算法的改进 10.3 隐马尔可夫模型(HMM) 10.3.1 隐马尔可夫模型的定义 10.3. 2 HMM中的3个基本问题及其解决方案 10. 3.3 隐马尔可夫模型的类型 10.3.4 HMM算法实现的问题 10.4 分类模型(SVM) 10.4.1 引言 10.4.2 学习问题 10.4.3 学习过程一致性的条件 10.4. 4 学习过程收敛速度的界 10.4. 5 结构风险最小归纳原理 10.4.6 支持向量机 10.5 人工神经网络 10.5.1 引言 10.5.2 神经元的基本模型 10.5.3 前向网络 10.5.4 反馈网络 10.6 高斯混合模型(GMM) 10.6.1 高斯混合模型的定义 10.6.2 参数调整算法--EM算法 10.7 小结 参考文献 第三部分 语音识别中关键处理技术 第11章 说话人自适应和说话人归一化技术 11.1 概述 11.2 自适应方式的分类 11.3 MLLR算法介绍 11.3.1 语音特征空间的划分 11.3.2 参数的估计 11.3.3 对均值矢量的变换 11. 4 MAP算法介绍 11.4.1 MAP算法准则 11.4.2 MAP算法公式推导 11.4.3 MAP算法讨论 11.5 说话人归一化技术 11.5.1 说话人归一化技术原理 11.5.2 声道长度归一化(VTLN) 11.6 小结 参考文献 第12章 噪声抑制 12.1 概述 12.2 基于小波变换的噪声抑制 12.2.1 利用小波变换去除周期性噪声 12.2.2 利用小波变换去除冲激噪声 12.2.3 利用小波变换去除宽带噪声 12.2.4 小波去噪方法的分析 12.3 基于EVRC编码的噪声抑制 12.4 基于HMM模型的噪声补偿 12.5 小结 参考文献 第13章 信道补偿 13.1 概述 13.2 稳健语音识别技术 13.2.1 稳健语音识别的提出 13.2.2 稳健语音识别的研究现状 13.3 信道补偿技术的主要方法 13.3.1 经验补偿技术 13.3.2 盲补偿 13.3.3 基于特征及模型的补偿 13.4 信道补偿技术语音识别中的应用 13.4.1 信道补偿技术在汽车内语音识别中的应用 13.4.2 基于信道补偿的电话语音识别 13.5 小结 参考文献 第四部分语音识别应用 第14章 说话人识别 14.1 概述 14.2 说话人识别的基本原理 14.2.1 说话人识别系统的典型结构 14.2.2 技术原理 14.3 说话人识别的特征选择 14.3.1 说话人识别系统中常用的特征 14.3.2 特征参数的统计评价 14.4 说话人识别的主要方法 14.4.1 模板匹配法 14.4.2 概率统计方法 14.4.3 辨别分类器方法 14.4.4.混合方法 14.5 判决规则与性能评价标准 14.5.1 说话人辨认 14.5.2 说话人确认(检测) 14.6 说话人识别中的稳健技术 14.7 系统举例 14.7.1 GMM说话人辨认算法 14.7.2 SVM-GMM混合模型 14.7.3 CMM-UBM说话人确认 14.8 小结 参考文献 第15章 关键词识别 15.1 概述 15.2 关键词识别及其与连续语音识别的关系 15.3 关键词识别原理 15.3.1 关键词识别系统组成 15.3.2 关键词识别的基本问题 15.3.3 关键词识别系统的主要技术难点 15.4 搜索策略 15.4.1 语音起始和结束点的粗判 15.4.2 帧同步的Viterbi解码算法 15.4.3 加入驻留惩罚的改进Viterbi解码算法 15.4.4 语法节点处的路径合并 15.4.5 回溯 15.5 识别结果的确认 15.5.1 置信度的原理 15.5.2 利用反词模型的拒识方法 15.5.3 利用识别结果本身信息的拒识方法 15.6 系统实现 15.6.1 训练和识别系统框图 15.6.2 训练系统的具体实现 15.6.3 识别系统的具体实现 15.7 小结 参考文献 第16章 语言辨识 16.1 概述 16.1.1 语言辨识的原理 16.1.2 语言辨识技术研究发展的历史 16.2 语言辨识所需要的有用信息 16.3 针对自动语言辨识的知觉研究 16.4 语言辨识的主要方法 16.4.1 频谱相似性方法 16.4.2 基于韵律信息的方法 16.4.3 基于音素识别的方法 16.4.4 基于多语言语音单元的方法 16.4.5 单词层方法 16.4.6 基于连续语音识别的方法 16.4.7 元音系统模型 16.5 语言辨识系统举例 16.5.1 基于GMM-UBM模型的语言辨识系统 16. 5.2 基于最小分类误差准则的语言辨识系统 16.5.3 基于说话人聚类和高斯混合模型的语言辨识系统 16.5.4 基于时频主分量分析和高斯混合模型的语言辨识系统 16.5.5 基于高斯混合二元模型的语言辨识系统 16.6 语言辨识系统评估 16.7 小结 参考文献 第17章 连续语音识别 17.1 概述 17.2 连续语音识别整体模型 17.3 声学模型 17.3.1 语音识别单元的选取 17.3.2 基于予词单元HMM的训练 17.4 连续语音识别中的搜索策略 17.4.1 传统的帧同步算法 17.4.2 基于统计知识的帧同步搜索算法原理 17.4.3 受词法约束的词搜索树 17.4.4 连续语音识别中的双层搜索网络 17.5 语言模型 17.5.1 基于规则的方法 17.5.2 基于统计的方法 17.5.3 N-gram模型的平滑 17.5.4 基于文法规则的方法和基于统计的方法相结合 17.6 小结 参考文献 附录 英汉名词对照
ConcurrentMap是Java中的一个接口,它是Map的子接口,用于支持并发访问。在ConcurrentMap的实现类中,最常用的是ConcurrentHashMap。ConcurrentHashMap的底层工作原理是通过使用分段锁(Segment)来实现并发访问。\[1\] ConcurrentHashMap内部被分为多个段(Segment),每个段都是一个独立的哈希表,拥有自己的锁。这样,不同的线程可以同时访问不同的段,从而提高并发性能。每个段的大小可以通过调整ConcurrentHashMap的并发级别来设置,默认为16。\[1\] 当进行插入、删除或更新操作时,只需要锁住对应的段,而不是整个ConcurrentHashMap。这样可以减小锁的粒度,提高并发性能。同时,读操作不需要加锁,可以并发进行,不会阻塞其他线程的读操作。\[1\] 另外,ConcurrentHashMap还使用了一种称为"分段锁"的机制,即每个段都有自己的锁。这样可以在并发访问时,只锁住需要修改的段,而不是整个ConcurrentHashMap,从而减小了锁的粒度,提高了并发性能。\[1\] 总结来说,ConcurrentHashMap通过使用分段锁和细粒度的锁机制,实现了高效的并发访问。这使得它成为了在多线程环境下安全且高效的Map实现。\[1\] #### 引用[.reference_title] - *1* *2* [ConcurrentMap 并发容器](https://blog.csdn.net/hk_CSDN/article/details/77848132)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [彻头彻尾的理解ConcurrentMap](https://blog.csdn.net/akunshouyoudou/article/details/83117994)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值