Abatract
当前系统严重依赖围绕传统技术发展起来的复杂遗留架构的脚手架。存在的问题有:
- 目前的HMM+GMM+DNN方法,训练声学模型(语音[/latex]gt;音素)、语言模型(音素[/latex]gt;单词)、词典模型(单词[/latex]gt;句子),由于上述模块是单独优化的,因此这种因式分解形式也产生局部最优
- 为了很好地分解声学模型和语言模型,系统需要基于词典模型的语言知识,而词典模型通常基于手工制作的语音词典来映射单词和音素序列
- 除了发音词典问题之外,一些没有明确的词边界的语言(中文、日文)还需要语言特定的标记模块(分词功能)来建模语言
- 必须通过集成所有模块来执行推理/解码,导致复杂的解码。因此,对于非专家来说使用/开发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是由解码网络产生的,会产生两个问题:
- 即使它没有关注所有的encoder帧结果,也可能提前输出结束符号,使得输出结果过短。
- 它在预测下一个字符时,有很高的几率关注之前帧注意的位置,导致输出重复字符,使得输出结果过长。
如附录C所示:
Conventional decoding techniques
目前已有一些解决方法:
- 加入惩罚项缓解长度对齐问题,Loss=Loss+γ|C|,其中|C|为句子长度
- 为防止循环,我们使用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)