2020-10-09 10:21

[翻译]Joint CTC/attention decoding for end-to-end speech recognition

Abatract

当前系统严重依赖围绕传统技术发展起来的复杂遗留架构的脚手架。存在的问题有:

  1. 目前的HMM+GMM+DNN方法,训练声学模型(语音->音素)、语言模型(音素->单词)、词典模型(单词->句子),由于上述模块是单独优化的,因此这种因式分解形式也产生局部最优
  2. 为了很好地分解声学模型和语言模型,系统需要基于词典模型的语言知识,而词典模型通常基于手工制作的语音词典来映射单词和音素序列
  3. 除了发音词典问题之外,一些没有明确的词边界的语言(中文、日文)还需要语言特定的标记模块(分词功能)来建模语言
  4. 必须通过集成所有模块来执行推理/解码,导致复杂的解码。因此,对于非专家来说使用/开发ASR系统相当困难

端到端系统使用深度学习尝试解决上述问题,目前有两种主流方法:基于attention的方法使用attention生成语音帧和识别符号的映射,基于CTC的方法使用Markov假设和动态规划解决序列问题。我们提出CTC/attention混合架构,该方法将网络结构扩展,执行单通/重打分的联合解码,即基于attention的ASR预测结果使用CTC输出的评估进行增强。

From DNN/HMM to end-to-end ASR

(略)

Joint CTC/attention decoding

Attention-based decoding in general

基于attention的ASR由于其灵活的对齐特性,可以关注编码器状态序列的任何部分来预测下一个标签,因此容易包括删除和插入错误。由于attention是由解码网络产生的,会产生两个问题:

  1. 即使它没有关注所有的encoder帧结果,也可能提前输出结束符号,使得输出结果过短。
  2. 它在预测下一个字符时,有很高的几率关注之前帧注意的位置,导致输出重复字符,使得输出结果过长。
    如附录C所示:

Conventional decoding techniques

目前已有一些解决方法:

  1. 加入惩罚项缓解长度对齐问题,Loss=Loss+γ|C|,其中|C|为句子长度
  2. 为防止循环,我们使用coverage(术语:覆盖期限)来计算已收到累积attention大于η的帧数,Loss=Loss+γ|C|+η·coverage(C|X)。在编程中,每次beam search后,使用所有注意力权重计算coverage。参考文献《Towards better decoding and language model integration in sequence to sequence models》

但对于不同ASR任务来说,很难找到合适的超参数γ,η,τ,以及min/max长度。

Joint decoding

CTC概率强制执行单调对齐,不允许相同帧进行大的跳变或循环。可以不依赖覆盖期限、长度惩罚或最小/最大长度,来产生具有更好对齐的假设,并排除不相关的假设。
attention decoder产生输出与标签的同步,CTC产生帧同步。

Resocring

训练时使用两步方法,首先仅使用基于attention得到的概率序列进行beam search,然后混合两种方式得到概率序列。

One-pass decoding

推理时使用单步方法解码,α(h,X)=λα{ctc}(h,X)+(1−λ)α{att}(h,X)

Experiments

volica

原创文章,欢迎转载。转载请注明:转载自 我家Ai智障,谢谢!
原文链接:http://www.mclover.cn/blog/index.php/archives/648.html

你可能还喜欢...

添加新评论

icon_question.gificon_razz.gificon_sad.gificon_evil.gificon_exclaim.gificon_smile.gificon_redface.gificon_biggrin.gificon_surprised.gificon_eek.gificon_confused.gificon_cool.gificon_lol.gificon_mad.gificon_twisted.gificon_rolleyes.gificon_wink.gificon_idea.gificon_arrow.gificon_neutral.gificon_cry.gificon_mrgreen.gif

captcha
请输入验证码