目录

  • 摘要
  • 介绍
  • 相关工作
    • Self Supervised Speech Recognition
    • Intermediate Transformer Layers Information
  • 方法
    • 解码策略
    • 置信度水平
    • 层聚合
  • 实验设置
    • 语音识别表现
  • 实验结果
    • Librispeech上的表现
    • 计算代价
    • 置信度平缓
    • 其他
  • 思考

本文将对论文进行一个简单的介绍,主要介绍文章提出的方法。

摘要

背景: Beam Search方法虽然在取得了很好的效果,但是当encoder的预测分布集中在某一个或者某几个类别时,计算的效率和效果会有一些折扣。作者发现现有的SSL方法会倾向于产生异常自信的预测从而影响beam search从更多不同的备选中进行搜索。

作者进行了encoder 层分析揭示并可视化了预测是如何演进的,并且提出了一个解码方法可以提升finetune之后的ASR模型的效果。作者提出的方法不需要额外的训练,也没有增加模型参数量。事实上,作者提出的方法相比目前的方法只需要很少的推理计算。(这是因为实验证明,可以减小beam search达到相同的效果,因此可以认为这个方法减少了计算量)

具体内容:作者提出了将encoder的top M层进行整合,这样可以利用中间层编码的有效信息,使模型预测置信度降低。

实验:作者展示了他们的方法的有效性,使用了不同大小的模型和不同大小的标注数据,在这些上面都展示了效果的提升,尤其在资源较少时效果更加明显。

介绍

SSL方法使用大量的无标注信息学习和产生上下文相关的表示,然后基于SSL寻训练出来的模型使用少量的标注数据进行下游任务finetune。SSL方法在语音识别领域也非常广泛,通常选择transformer作为encoder。基于SSL的ASR模型通常会进行搜索,比如使用beam search方法,尤其会结合LM。但是当encoder的预测分布集中在某一个或者某几个类别时,会影响beam search从不同的备选中进行搜索,反而被异常自信的类别主导。

前面的工作表明,encoder不同层表示了训练数据不同层面的信息,比如语义和声学信息。因此只根据最顶层进行推理搜索可能忽略了有效的特征,给了其他特征过度的权重。

作者在实验中使用了Wav2Vec 2.0 和 HuBERT模型,发现高置信度出现在顶部的transformer层中,然而中间层置信度相对低一些,更具有多样性。进一步,作者对这个发现在beam search解码上的不利作用进行了分析。

最近的研究表明对transformer层进行融合的优点,融合层编码了不同的特征创造了更佳丰富的表示因此提升了模型效果。和之前的融合工作的不同在于,作者的方法没有引入额外的训练或者训练参数。除此之外,作者发现,通过融合方法平缓预测分布可以使用更小的beam size但是并不带来效果的损失,因此可以减小beam search的计算代价。

作者的贡献总结如下:

  1. 当前最好的SSL ASR模型生成高置信度的预测,并且展示了置信度如何通过层逐渐进行聚集的。
  2. 作者展示了高置信度在ASR中使用beam search解码时的负面作用。
  3. 作者提出了层聚合方法,平缓了预测置信度,利用了中间层的信息,减小了计算代价。作者展示了在不同大小模型和不同数量级模型上取得的一致提升。

相关工作

Self Supervised Speech Recognition

主要讲了wav2vec 2.0和HuBERT。

Intermediate Transformer Layers Information

一部分研究关注像BERT一样的基于transformer的Encoder模型的机制,以及中间层携带的信息,这些研究也被戏称为BERT生态。一个重要的发现是,某些特征在特定的层具有很好的表达, 不同的层编码了输入的不同信息。基于上述的发现,前面的研究工作指出了合并底层的层的特征的优势,以及对不同的层进行融合替代传统的只使用最上层的信息。为了随着层累积编码的信息,前人提出了将他们按照序列逐步送入到递归神经网络中例如LSTM网络中,并且使用最终的状态作为一个全局特征表示。在前人的工作中,机器翻译领域提出了使用融合和池化方法。他们是用了类似作者的聚合方法,但是是将层的表示进行聚合,而并非是层的逻辑输出,并且是将层的融合信息应用在了tansformer的decoder模块。

和前面的工作不同,作者的模型不需要引入训练,也不需要增加额外的参数,直接可以应用于已经finetune好的模型智商。就目前所言,这是第一个是用聚合层解决语音识别领域置信度相关问题的研究工作,并且展示了在效果已经计算代价上的优势。

方法

标记是用SSL方法预训练,然后使用特定数据finetune之后的模型为G。模型G的每一层Encoder的输出用 H n t H_n^t Hnt​表示,其中n为层id,t为时间。映射层用 H N H_N HN​表示,将最上层的transformer的输出映射到C个类别,C为词汇表大小。C包含CTC的特殊标记blank,同时包含分隔符 |。

解码策略

greedy search方法得不到最优解,使用beam search方法,同时会结合LM。最大化的目标函数如下所示:
P G ( Y ∣ X ) + α 1 P L M ( Y ) + α 2 ∣ Y ∣ P_G(Y|X) + \alpha_1P_{LM}(Y) + \alpha_2|Y| PG​(Y∣X)+α1​PLM​(Y)+α2​∣Y∣
其中,Y是预测的转写序列, α 1 \alpha_1 α1​是语言模型的概率权重, α 2 \alpha_2 α2​是转写文本权重, ∣ Y ∣ |Y| ∣Y∣是序列的长度。

置信度水平

如果概率分布集中在某一个或者某几个类别时,一个网络是高置信度的。换句话说,高置信度预测发生在输入映射层的softmax概率分布的熵非常低的时候。
为了观察置信度随着层的演进,作者使用相同的映射层进行分类,并接上Softmax进行概率预测。 虽然最后一层的映射层是在最后一层encoder layer上训练的,但是研究表明也可以用于其他的中间层。

如上图所示,可以看到层数越高,置信度越高。


如上图所示,展示了四个高置信度的预测结果。上图的第一部分显示,在第五个时间步,很高的置信度给到了“E”上。但其实这个地方正确的应该是“A”。上图的第二部分就可以正确预测“A”。因此高置信度引入了错误,而且无法纠正。


如上图说是,第24层的预测输出是break,这个并非正确答案,正确的预测答案是brake,在中间19 18 17层都可以预测正确。说明中间层包含着有效信息。

层聚合

**基于以上的观察,作者提出了聚合topM层的逻辑预测,构成宽松的、更佳富有信息的逻辑预测,并用于beam search解码策略。**针对逻辑输出的聚合,可以看作是在M层的求和上的一个映射。因为这符合乘法分配律: A ∗ B + A ∗ C = A ∗ ( B + C ) A*B + A*C = A*(B+C) A∗B+A∗C=A∗(B+C)
**因为随着层数,置信度水平逐渐升高,因此需要对每层的概率进行scale,防止最高层的置信度占主导地位。**作者在每一层的逻辑输出上使用了L2归一化,对过度置信的层进行归一。形式上,层聚合逻辑输出如下 l o g i t s ^ ( x ) = ∑ n = N − M N p r o j e c t i o n _ h e a d ( H n ∥ H n ∥ 2 ) \widehat{logits}(x) = \sum_{n=N-M}^{N}projection\_head(\frac{H_n}{\left\|H_n\right \|_2}) logits ​(x)=n=N−M∑N​projection_head(∥Hn​∥2​Hn​​)

疑问:这么做能让后面的层的权重更小吗? 或者说后面层的 ∥ H n ∥ 2 \left\|H_n\right \|_2 ∥Hn​∥2​就一定更大吗?
最后,聚合逻辑输出和最高层的逻辑输出进行插值,组成了最后的逻辑输出,用于beam search。
β ⋅ l o g i t s ( X ) + ( 1 − β ) ⋅ l o g i t s ^ ( X ) \beta\cdot logits(X) + (1-\beta)\cdot \widehat{logits}(X) β⋅logits(X)+(1−β)⋅logits ​(X)
其中 β \beta β是权衡聚合权重因子。

重点: 聚合 + 归一化 + 差值, 参数M和 β \beta β

实验设置

实验使用了Wav2Vec 2.0和HuBert,使用了不同大小的模型以及不同大小规模的标注数据。小模型参数0.95亿,大模型参数9.6亿,数据使用了960h的librispeech数据和6w小时的librilight数据。

预训练模型下载地址:HuggingFace平台,https://huggingface.co/models,然后使用10min、1h10h100h360h和960h的librispeech数据finetune。

所有的实验结果都是使用beam decoder结合4-gram的LM得到的,使用的代码是pyctcdecode:https://github.com/kenshotechnologies/pyctcdecode。beam search的参数 α 1 \alpha_1 α1​和 α 2 \alpha_2 α2​都是通过在Ax toolkit上搜索和优化得到的。网址:https://github.com/facebook/Ax. 作者在所有实验中选择了4-gramLM模型,也可以用任何其他类型的LM模型。

作者调试了聚合超参数,也就是M和 β \beta β. 使用的是在dev集上的网格搜索。


如上表所示,体现了在每种模型中,超参数的变化情况。

上表格结论:(前提 β \beta β越大,说明中间信息需要的越少 )

  1. 数据量小的时候,更加依赖中间信息,随着数据的增多,依赖减少。
  2. 当数据量较少时,依赖的层数较少,当数据量较多时,依赖的层数增多。
  3. 最终当finetune的数据量为960h时,M大约为模型的一半左右。
  4. 最终当finetune的数据量为960h时, β \beta β大约为0.75左右。
  5. 模型越大, β \beta β越大,M越大,说明需要的信息少,但比较杂。

语音识别表现

作者实验了Baseline模型和Layer Aggregation模型。解码都是用的beam search + 4-gram LM。
作者在test-clean test-other dev-clean dev-other,评价指标有WER和CER。

实验结果

Librispeech上的表现

如上表格所示:

  1. 提出的融合方法在所有测试集和模型大小下和Baseline要么一样,要么更优。尤其在地资源模型上效果更优,比如不超过10h。
  2. 最优M和 β \beta β根据模型大小以及finetune的数据量大小有所变化。
  3. 和表格一结论一致,更少数据finetune的模型,更加依赖中间层。
  4. 数据量大时,Hubert效果比Wav2Vec 2.0好;数据量小时,Wav2Vec2.0效果好;
  5. 在other上,Hubert效果更好。

如上图所示,展示了两种Wav2Vec 2.0模型,在不同大小finetune数据之下,聚合层和聚合因子对WER的影响。WER用图中的颜色代表,颜色越深,说明WER越高,越不好,颜色越浅,说明WER越好。因此上图中的白色地方是最优的M和 β \beta β取值。

1.模型变大,依赖的中间层信息减少,也就是 β \beta β变大。
2. 数据量大时,依赖的中间层信息减少,也就是 β \beta β变大。
3. 聚合层个数,跟模型大小无关,与数据有关,数据少时M大概为N的1/3,数据大时,M大概为N的1/2.

计算代价


如上图所示,可以看到聚合方法可以使用很小的beamsize达到和baseline同样的效果,因此可以减小计算代价。 例如在dev-other测试集上,baseline使用1500的beamsize,聚合方法使用400就可以达到和其类似的效果。

疑问:这里的beamsize咋都这么大,平时用的不都是5/10这种的嘛~~

置信度平缓

如上图所示,作者对比了在Softmax中添加温度系数去平缓置信度方法。具体来讲,就是在计算Softmax时, e x i e^{x_i} exi​增加一个温度系数,变成 e x i T \frac{e^{x_i}}{T} Texi​​,当T大于1时,softmax之后的结果会变得平缓,当T小于1时,softmax的结果会变得更加尖锐,尖锐的极端函数就是argmax函数。从上表可以看出,聚合方法优于温度方法。

其他

低资源模型的错误(<10h)主要是一些拼写错误,尤其是发音是什么转录就是什么。高资源模型的错误主要是稀有词错误。聚合方法对这两种错误都有帮助。

从图5可以看到,当标注数据增多时,高层权重增大,这和之前的研究结果一致。之前的研究结果认为

  1. 当finetune数据量比较大时,语音和声学信息在高层得到了很好的表示;
  2. 低资源finetune对于语音识别来讲利用这些高层的表示是不足够的。
    后者也告诉作者去使用中间层的信息,也进一步解释了为什么聚合方法有效。
    另外,最优聚合层数信息结论如下:
  3. 低资源模型大约需要聚合1/3,高资源模型大约需要聚合约1/2.

思考

  1. 作者对transformer层进行了聚合。与前人的方法不同,前人会把层的输出聚合,然后送入decoder;作者聚合是对层的逻辑输出进行聚合(对层的输出进行线性映射到C类别,并且每一层使用的都是最后一层的线性映射层),不用重新训练,不用增加参数,直接在decoder的时候,对多个层进行线性映射然后聚合,再送给beam search即可。
  2. 作者除了使用聚合,同时加入了L2正则,给层逻辑输出加了权重。
  3. 除了加了权重,作者还进行了插值。聚合逻辑输出和最高层的逻辑输出进行差值。
  4. 作者解码使用beam search ,结合了4-gram LM模型,提供了一堆工具,同时也考虑了解码文本的长度。
  5. 作者说的beam size可以减小,但是看论文中的beam size都很大啊,400, 1200这种的,实际使用的都是5/10这种的。实际应用中能不能有这个好处不一定。
  6. 作者最大的数据是960h这个和实际应用不符合。我们的数据大约上万小时,是否还需要中间信息,能带来多大的提升,有待考虑,不过可以尝试。
  7. 根据作者的结论,数据量大时,M大约为模型层数的1/2, β \beta β大约为0.75/0.8或者更大。也就是依赖的层数较多,但是依赖程度较低。 可以在实际应用中尝试。

【论文阅读】Don‘t be so sure! Boosting ASR Decoding via Confidence Relaxation相关推荐

  1. 【语音】论文阅读笔记 Non-autoregressive Error Correction for CTC-based ASR with Phone-conditioned Masked LM

    目录 摘要 介绍 预备和相关工作 1. CTC-based ASR 2. Masked LM 3. ASR error correction 提出的方法 1. Phone-conditioned Ma ...

  2. 深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》

    深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1< You Only Look Once: Unified, Real-Time Object Detection> Abstra ...

  3. 深度学习论文阅读目标检测篇(一):R-CNN《Rich feature hierarchies for accurate object detection and semantic...》

    深度学习论文阅读目标检测篇(一):R-CNN<Rich feature hierarchies for accurate object detection and semantic segmen ...

  4. 视频人像抠图论文阅读

    视频人像抠图论文阅读 1.Prime Sample Attention in Object Detection 2.Mask RCNN 3.Background Matting: The World ...

  5. 人脸方向论文阅读(二)——Deep Face Representations for Differential Morphing Attack Detection

    人脸相关论文阅读(二)--Deep Face Representations for Differential Morphing Attack Detection 论文信息: 发表在Cryptogra ...

  6. 论文学习笔记 XGBoost: A Scalable Tree Boosting System

    今天分享一篇论文<XGBoost: A Scalable Tree Boosting System>,由陈天奇于2016年发表,该算法在Kaggle等比赛中大放异彩,现在在工业界也被广泛应 ...

  7. 论文阅读笔记(三)——从老虎到熊猫:动物头部检测

    论文阅读笔记(三)--从老虎到熊猫:动物头部检测 论文简介 论文中文翻译:<从老虎到熊猫:动物头部检测> 论文名称:<From Tiger to Panda: Animal Head ...

  8. 论文阅读(2)3D Human Body Reconstruction from a Single Image via Volumetric Regression

    3D Human Body Reconstruction from a Single Image via Volumetric Regression 论文阅读 Abstract 1 Introduct ...

  9. 论文阅读工具ReadPaper

    对于搞科研的同学们来说,看论文是要经历的第一关,尤其是要读好多篇论文的时候,更是着实令人头大. 这不,最近无意中发现了个在线论文阅读网站:readpaper.com,号称「论文阅读笔记神器,硕博科研学 ...

最新文章

  1. CF803C Maximal GCD
  2. 【 Vivado 】UCF到XDC之间的转换
  3. 第二讲、Linux的系统安装
  4. rapidJson输出时 保留小数位
  5. Jquery+CSS Input file 文本框轻美化
  6. XML与Web Service基础知识点
  7. django下创建多个app,如何设置每个app的urls
  8. mysql 内存性能优化
  9. Atitit. 项目文档目录大纲 总集合  v2
  10. springboot过滤器配置
  11. html点击自动复制文本代码,点击网页按钮复制指定代码JS源码
  12. Google野心勃勃,微软前程堪忧!(转)
  13. 九宫格拼图android代码,九宫格拼图代码
  14. 如何临时删除桌面右键菜单上的登录画面修改
  15. mysql面试题1313
  16. 今天做了freemaker 导出word文档 的bug修复,解决 \n换行 问题
  17. 基于jQuery上传文件插件
  18. 与python相关的考研专业-青岛大学2016年硕士研究生招生专业目录
  19. java 方法权限_Java控制访问权限的方法
  20. DjangoRestFramework【DRMBBasic认证】

热门文章

  1. 用JSTL实现JSP应用程序快速开发
  2. STM32项目设计:基于STM32指纹密码锁
  3. 保姆级Linux系统安装并使用libpng攻略
  4. 文档管理服务器脱机编辑,如何离线访问nicelabel文档管理系统
  5. 明解C语言入门篇_第6章_函数
  6. 数据仓库面试题——数据仓库分层
  7. 基于STM32对于光敏电阻传感器的光控应用
  8. 常见厂家贴片电容电感电阻命名规则
  9. 比较流行的几种区块链共识算法
  10. JDK9下载、安装和配置环境变量图解