其他
一次对语音技术的彻底批判
什么是所谓的ImageNet时刻,它为什么重要? 为什么语音行业的ImageNet时刻尚未到来,学术界和工业界为此需负什么责任?
ImageNet时刻是什么?
解决95%的标准“有用”任务所需的框架和模型组件,作为标准和经过测试的开源框架模块获得广泛的可用性; 大多数流行的模型都可以使用来自大型数据集的预训练权重,使得通过较少数据对下游任务进行微调成为可能; 解决了从使用预训练模型的标准任务,到不同日常任务的这类微调(即很可能效果良好); 与之前在论文中报告的计算需求(在STT领域是100-1000GPU日)相比,训练日常任务模型所需的计算量(例如在STT领域是1-10GPU日)很小; 小型独立公司和研究小组可以使用大型模型的预训练计算。
为什么STT的ImageNet时刻尚未到来?
数十年来,NVIDIA公司一直在制造和优化消费类GPU,众所周知,现在只需将4-8个顶级GPU放在一起,便可以构建一台“超级计算机”; 据传言称,2000年代后期,NVIDIA设想GPU性能足以满足机器学习的需求,就在那时他们开始投资CUDA技术(首个版本发布于2007年),这是一个基于大多数GPU加速的机器学习应用而构建的低级矩阵乘法框架; 2009年,一支由李飞飞教授领导的团队发布了ImageNet数据集,之后在2011年发起了现称ImageNet大规模视觉识别挑战赛(ILSVRC)的竞赛。在2012年,Alex Krizhevsky等人也使用了NVIDIA GPU和CUDA来训练现在著名的AlexNet神经网络,并实现了远超之前的性能表现; 自此之后,深度学习框架一直在发展,并在2017-2018年左右逐渐成熟。本文发表之际,PyTorch和TensorFlow已是首选的解决方案,除了图像分类之外,它们还针对许多任务提供了海量的预训练模型; 同一时期,在ImageNet上实现SOTA性能的模型框架也在一直不断完善,随着发展,训练和评估这些模型的代码也随着在相同流行框架中的预训练权重一并发布。
在计算机视觉(CV)领域,不再将ImageNet图片分类本身作为目的,而是将其作为训练深度卷积神经网络(CNNs)的“前置任务”,以了解其良好通用功能的做法愈发普遍。这种预先训练CNN在ImageNet上执行图片分类(即预训练),然后将这些功能用于新目标任务(即微调)的做法已成为解决大量计算机视觉问题的事实标准。使用ImageNet预训练的CNN功能,在一些图片分类数据集、对象检测、动作识别、人体姿势评估、图片分割、光流(optical flow)、图像自然语言描述(image captioning)等任务上都获得了令人印象深刻的成果。
构建基于私有数据的解决方案,并且在报告中不够明确; 复杂的框架及工具包; 解决并不存在的问题; 在论文中混淆结果。
构建基于私有数据的解决方案,并且在报告中不够明确
复杂的框架和工具包
代码是为了大型运算而优化过的; 只有小型学术数据集中存在引导方案(端对端案例表明如何使用这些框架),无法在未经大型运算的情况下扩展到大型数据集中; 这些引导方案的样本效率极低(我们最喜欢的样本在数据集中训练10GB的LMs,文本足有数百兆字节); 即便在LibriSpeech上对模型进行了预训练,很可能也无法转移到真实环境中; 如果想要构建一个内部的STT解决方案,将其内部化并正确理解优化,你可能需要一个大型团队或者相当可观的时间来将这个工具包内部化; 上述工具包或是已经发布的内部解决方案,或是PR版、抢先上市版或生态系统构建工具。这意味着大多数情况下,这款工具包会作为恰当的MVP或基准出现,但如若不投入大量资源,你无法轻易优化此类管道(对于公司来说,无论如何都会编写自己的工具包)。
解决并不存在的问题
无法再现的结果
对学术界的批评
如果一大群人都在关注追求某种标准上的顶尖成果,则这项指标会失去其意义(可参考见古德哈特定律:当一个政策变成目标,它将不再是一个好的政策)。如果不能快速迭代,学术数据集将成为各大公司用以炫耀的“排行榜”。为了达到最先进的水平,在大型计算中使用庞大而样本低效的网络已经成为默认规则,尽管较小型的从业者无法参与;
理想情况下,论文应当有足够的细节信息,从而令独立研究人员也能获得95%以上的论文信息;
在实际情况下,论文内容和结构通常会因其实际目的和真实生活中的应用而受到质疑,即其发表时以“不发表就完蛋”的心态来发布,其中以复杂的数学来解释新概念,尽管事实上这些研究者自身也许与所列举的数学信息并无关联,只是借用现成的工具罢了。
在方法的一般化(即域外测试)上含糊其辞,如果看一下论文,似乎神经网络在自动语音识别(ASR)上打败了人类,但那只是“排行榜”问题的另一个症状,并非事实;
他们通常不会说明所花费的计算量;
他们几乎不会发布收敛曲线(即达成最先进成果的一部分所需要耗费的时间和计算量是多少)。通常在机器学习中,95%甚至99%的结果只需要总计算量的很小一部分即可达成。
被SOTA bug咬住
即使最好最先进的模型对于手上的任务理解也很有限(毕竟机器学习属于模式匹配); 由于计算所耗费量可能会相差几个数量级,最近的最先进成果也越来越难比较了; 难以再现的性质限制了其在真实世界中的使用; 更多数据&计算量 = SOTA不是研究新闻; 排行榜指标被过度高估。
这些数据集大多是英文的; 就研究可能性方面,这些数据集很棒,但与CV不同,在实际管道中它们很难合并; 尽管在构建类似SQUAD这样的数据集上所花费的努力和精力都很可观,但在生产模型中想要使用还无法真正做到; 稳定的生产级NLP模型通常基于大出若干个数量级的数据来构建,或者就是手上的任务相当简单。举个例子:假设某个神经网络可以可靠地完成命名实体识别(Named Entity Recognition,NER)很安全,但在回答问题或维持对话方面,目前还只是科幻小说级别。我喜欢这个恰当的比喻:用transformer来构建AGI,就像是通过建设高塔来登月。
论文内容和结构
每3个月,我会将warp-ctc与PyTorch原生的CTC损失相比较,使用真实数据时后者无法正常运作; 与标准损失相比,CTC损失相当“激进”; 通常需要某种形式的修剪或预热,CTC损失“喜欢”爆炸; 对于在第一阶段向你的网络展示哪些数据,你应当非常小心。
使用这些工具包、实现和想法; 进行这些主要的改动; 运行这些试验,这是我们的结论。
在“小型”学术数据集上训练样本低效率的过度参数化网络
较新的论文很少使用较小的模型来执行消融试验(ablation tests); 声称包含最先进性能的ASR论文很少会出现收敛曲线; 这些论文很少报告用于超参数搜索和模型收敛的计算量; 在我们读过的论文中,仅有Deep Speech 2对较小型数据集上的性能如何转化到实际生活的数据方面有所关注(即域外验证); 没有针对真实数据集的样本效率和可伸缩性做过优化。2019年的几篇论文与(Time-Depth Separable Convolutions, QuartzNet)讲述的内容大致相似,但更关注减少模型大小,而不是训练时间。
如果你阅读了在PyTorch上预训练的深度语音的发布通知,并看到“不要指望这些模型能够在你自己的数据上执行良好”这样的话,可能会很惊讶——经过了1千小时语音的训练之后,CER和WER都很低。但在实践中,配有某些1万小时的理想数据集的系统,其WER趋近25-30%(而不是像广告中那样,清晰语音5%和嘈杂语音10%); 在CV相关的研究中,更好的Imagenet性能实际上转移到了数据集更小的真实任务上,与之不同,在语音中,LibriSpeech上的更佳性能并没有转移到真实世界的数据上。你无法像在CV中用1千张图像训练你的网络那样,仅通过1千小时的语音来“快速调整”你的网络; 所有这些意味着学术界和企业界已经有越来越多的复杂方法针对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试验和递归模型包括在内。
几乎到处都在使用大型计算,并且没有明显的硬件需求趋势(尽管论文中声称计算负担已经减轻); 网络的范围从紧凑到庞大,但终归大多数网络都在过度拟合LibriSpeech的假定是很安全的,无论使用什么计算; 如果跳至“已取得的总体进步”,查看我们的收敛曲线和下面的收敛曲线,你会发现90%的融合发生在最初2-3天内,与整个行业一致(但我们使用的总体计算要少得多)。
其他常见的批评
通常,论文在方法的一般化方面(即域外测试)含糊其辞; 对于超参数的稳定性很少关注; 全新的半监督及无监督学习方法(wav2vec, cyclic STT-TTS training)并没有对样本效率、鲁棒性或一般化进行任何清晰或简便的检查,而且大多关注新颖性的元素; 对所有情况执行端对端标准。学术论文通常会过度拟合其LMs,并在一个小型的理想化数据集中(LibriSpeech)执行后期处理,其方法声称:由于文本域中可用数据量至少要高出1千倍,顶级的端对端结果极其次优(比如:将Wiki的大小与LibriSpeech的所有文本相比); 对梅尔频率倒谱系数(Mel Frequency Cepstral Coefficients)过度依赖。我们尚未看到对短时傅里叶变换(STFT)、梅尔频率倒谱系数、梅尔滤波器组(Mel-filter banks)以及小波(wavelets)等数据进行合适的比对。在我们试验的较小数据集中,最终使用什么并没有区别,但在实际生活中对于嘈杂的数据结果是不同的; 短时傅里叶变换是最好的。此外,我们无法提供更新的网络过滤器SincNet)来执行有意义的试验。
我们的解决方案也有缺陷
我们使用了私有数据来训练模型,尽管与整个数据集的大小相比,私有数据集的大小要小得多,有着数量级的差异,即大约500小时(其中100小时经过手动标注)的“高质量基准”,而公共数据集的大小则是2万小时; 此外,本文所报告的主要结果仅通过极少量的手动标注就可达成(即,我们仅手动标注了验证集)。我们使用了这些少量的私有数据主要是因为我们需要在主域里获得生产结果; 与我们的数据集不同,由于所有这些研究都是针对自筹资金的商业项目完成的,因此我们不共享训练管道、特殊的超参数、模型设置与预训练模型。我们本可以通过非商业许可的方式进行共享,但基于普遍共识,除非政府支持的垄断企业,否则在俄罗斯知识产权法并不起作用。我们正在寻求资金支持,以开源所有内容,包括将来在其他语言上的工作。
结论
“关系数据库是一个新的基本支持层,能够改变计算所能做的事。在1970年代晚期关系数据库出现之前,如果你希望数据库显示“所有购买此产品并居住在该城市的顾客”信息,则通常需要一个客户工程项目。数据库的结构限定:并非任意交叉引用查询都很容易也很常规。如果想要提问,则需要有人建立。数据库是保存记录的系统,关系数据库则将其转化为商业智能系统。
这使得数据库在重要的应用方面有所改变,因此创建了新的用例,并导致全新价值数十亿的公司出现。关系数据库给了我们Oracle,也给了我们SAP公司,而SAP公司及其同侪让我们拥有了全球化的即时供应链,他们又给了我们苹果和星巴克。到了1990年代,几乎所有企业的软件都是关系数据库了,PeopleSoft和CRM,还有SuccessFactors以及数十家公司几乎都在使用关系数据库。没有人会认为SuccessFactors或Salesforce这样的公司会因为数据库都归属于Oracle而无法运行。相反,这项技术成为了所有一切的支持层。
因此,借助这种思考方式来衡量如今的机器学习会是很好的办法。这是我们对计算机所能应用方式变化的一步进展,也会成为很多不同公司许多不同产品的一部分。最终,几乎所有一切都会包含机器学习了,而且没有人会在意。这里有一个重要的相似之处便是,尽管关系数据库具有规模效应经济,还存在有限网络或“庄家通吃”效应。假如B公司从同一家供应商处采购了相同的数据库软件,则A公司所使用的数据库不会变得更好:如果Caterpillar公司也买了相同的数据库,那么Safeway公司的数据库也不会变得更好。机器学习在实际中的应用与之相似:机器学习是关于数据的,但数据与特定应用高度关联。更多的笔迹数据会使得手写识别器效果更好,而更多燃气涡轮数据会令预测燃气涡轮故障的系统效果更佳,但彼此之间无法协助作用。数据是不可替代的。”
推荐阅读
CycleGan人脸转为漫画脸,牛掰的知识又增加了 | 附代码 干货 | 时间序列预测类问题下的建模方案探索实践 360金融首席科学家张家兴:别指望AI Lab做成中台 十六位顶尖专家齐聚,解密阿里云最新核心技术竞争力!
利用 Docker 在不同宿主机做 CentOS 系统容器 | 原力计划
从技术原理解析区块链为何列入新基建
你点的每个“在看”,我都认真当成了AI