LAS识别框架发展简述
LAS模型
模型综述
工作流程:
- 将语音信号的特征输入到双向RNN中(encoder部分,即Listen)
- 做attention,在不同的时刻关注输入的不同部分(decoder部分)
- 解码
Listener通过对声学特征编码为较短的高级声音特征序列h。
speller包含attend和spell,计算h到y的概率分布。
LAS模型如下:
其中注意的细节是:encoder是树形的,这是因为对于较长的语音来讲,每个时刻都要计算出softmax,效率不高、模型注意力被分散。因此把相邻的一些输入合并一下,提高了效率和效果。
Listener部分
listen使用双向LSTM金字塔结构。将上百万长度的初始声音序列转化为高级别的短的声音序列,即抽取声音特征。一方面,相对直接输入原始声音序列,可以大大加快训练时间,另一方面spller很难从特别长的序列提取有用的声音特征。
该金字塔结构包含三层,每层递减2倍。该结构第j层第i时刻的BLSTM单元要接收本层上一时刻的和上一层第2i时刻与第2i+1时刻的输入。具体公式如下。或者参考结构图很好理解。
attend-spell
- 计算decoder当前时刻的状态s_i。由上一时刻的状态si-1,上一时刻的输出yi-1,上一时刻的上下文(context)ci-1计算得出。
- 计算当前时刻的上下文向量(context)Ci,由当前时刻的状态由当前时刻的 状态和高级声音特征h计算得出:
该向量是基于attention机制计算来的,所以遵循attention的计算过程。 - 计算概率分布
通过两层RNN网络,经过softmax计算每一时刻某个字符的分布概率:
learning
训练时,目标函数为最大对数似然估计:第i时刻的预测依赖于前面所有时刻的预测输出。
test时,由于没有label,所以没有前面时刻的正确输出,这导致有的时候预测的结果很差。为了改善这种情况,作者采用了一个trick, 训练的时候,前面时刻并不全部使用label数据,采用10%的采样率从训练的结果进行采样,用于预测下一时刻的输出。
作者通过研究发现,该结构不需要使用预训练,预训练不能提高本模型的识别结果。
decoding and rescoring
语音识别即得到给的属于语音序列,输出最大可能性字符序列:
所以decoding为一种从左到右的beam search。保持束宽不变,从< SOS >标记开始搜索,直到遇到< EOS >标记搜索结束。
实际上,我们拥有大量的文本数据,语音数据有限,所以可以使用语言模型对搜索束进行rescore。作者发现该模型对于短语音欠拟合,所以通过字符长度进行正则化,同时加入语言模型的对数概率。最终的概率计算结果如下:权重系数λ由验证集决定。
LAS模型的缺点即改进方法
缺点
- 必须要整个语音文本才能转换,attention机制
- attention机制需要巨大的计算量
- 输入的长度对模型效果影响较大
改进方法
-
在线化seq2seq模型
在线化,就是希望能够即使产生输出,而不依赖于整个语音信号特征。
其实就是将输入截成定长的几段,每一段产生一些输出,这样就可以做到及时输出。输出完了以后需要进行分配,即哪几个字母属于一个单词。又回到了‘分词’问题上来。 -
encoder中加入卷积层
LAS模型中,我们采用树形encoder的时候,把相邻的一些输入合并一下,提高了效率和效果。
而此处的思路,不是简单的将输入合并,而是将其进行卷积,然后再输入到encoder,模型图如下: -
目标颗粒度:
其实就是语音识别文本,识别后的粒度大小,有如下几种:
但对于语音识别,更有用的是字符的n-gram:
对于end-to-end模型,常用的手法是由模型自动决定n-gram的分割: -
处理词语分界处的错误自信导致搜索时的错误
如果在开头困惑度不是很高,那么后面搜索起来就会比较顺利,但是如果刚开始模型就比较困惑,不确定,那么后面的搜索就可能出现搜索错误。解决办法是通过惩罚softmax输出概率1来Entropy Regularization正则化模型。 -
处理提前终止现象
模型偏向于惩罚生成很长的输出,这对很长的输入来讲会出现提前终止的情况:
解决方法是在预测时惩罚那些不看输入的情况,未处理的输入越多,惩罚越大。
相关论文进展
- LAS论文的提出
W. Chan, N. Jaitly, Q. Le, and O. Vinyals, “Listen, attend and spell: A neural network for large vocabulary conversational speech recognition,” in ICASSP 2016.
LAS模型是一个完整的神经网络系统,其可以实现完整的语音序列到对应的文本序列的转换过程,因此其训练及使用相比于传统模型来说要简单的多。训练时,不需要像传统模型那样把系统区分为单独的模块进行训练。同时,由于不需要对齐信息,可以直接使用句子的语音特征序列及其对应的文字标注序列来进行整个模型的训练。
2. 2018 Google
State-of-the-Art Speech Recognition with Sequence-to-Sequence Models
在本研究中,探索了多种优化和提升LAS模型的方法,其中的一些提升显著。在结构上,证明了词块模型可以用来代替字素。引入了新型的多头注意力架构,它比常用的单头注意力架构有所提升。在优化方面,探索了同步训练、定期采样、平滑标签,也应用了最小误码率优化,这些方法都提升了准确度。我们使用一个单向LSTM编码器进行
- 滴滴中文LAS
A comparable study of modeling units for end-to-end Mandarin speech recognition
使用了5000个左右的常用汉字为建模单元。由于汉字较传统常用的音素建模单元尺度更大,其对训练数量的需求也会很大。
滴滴团队指出:在滴滴非实时语音识别任务上,基于注意力机制的LAS模型,能够得到25%的相对性能提升;基于Neural Transducer的实时识别任务方案在滴滴实时识别任务上,得到了15%的相对性能提升。另一方面,滴滴的attention模型大小只有传统CTC模型的1/5大小,而且在解码端弱化了甚至脱离了语言模型的依赖。
- 2019Google
Specaugment: A simple data augmentation method for automatic speech recognition
在SpecAugment不再直接使用传统的数据扩增方法,而是在音频的光谱图上施加扩增策略。