LAS: Listen, Attend and Spell [Chorowski et al., NIPS'15]

基于Attention机制的end-to-end语音识别模型

模型介绍

  • Listen (Encoder): 

模型第一部分叫做Listener, 其input为常见的声学特征序列(mfcc/filterbank), output为经过提取后的高阶声学特征序列h = (h1,h2,h3,...)。

具体可以用各种RNN模型来实现。比如Pyramid RNN每几个timestep的input特征合并输出一个高阶特征;Pooling Over Time 的方法每过几个timestep输出一个特征;Time-delay的DNN在多个input feature里选择相关的输出高阶特征; 这些都起到了类似特征降维的效果(down sampling)。更先进的有用self-attention layer代替rnn layer的模型,truncated self-attention模型就是对input feature有选择地做self-attention. (self-attention可参照:https://www.youtube.com/watch?v=ugWDIIOHtPA)

  • Attend (Attention)

至此encoder的部分结束了,然后就是LAS特殊的attention的机制。Attention机制可以理解为计算两个input vector的相似度(作为score)。

两种Attention的计算方法:

这里 z^{0} 可以看作一个关键词,encoder输出的feature就是资料库。

而做attention的过程就是在决定(match)每一个feature和关键词的相似度。

  • dot-product 

 \alpha = (W_{h}\cdot h) \cdot (W_{z}\cdot z)

  • additive

\alpha =W\cdot tanh(W_{h}\cdot h+W_{z}\cdot z)

这里还有非常多的attention机制,比如location-aware的attention机制(参考[Chorowski et al., NIPS'15]原文)

对每一个encoder输出的feature vector通过attention机制后得到\alpha,然后通过softmax得到一组weight值。然后以weighted sum的方式得到一个general的结果c,也就是attention机制最终得到的东西,被叫做context vector。这也是之后spell encoder的输入向量。

  • Spell (Decoder)

最后的部分spell也就是decoder,一般用RNN实现。

首先attention得到的向量c作为输入,通过隐藏层输出之后经过一个softmax会得到一个所有可能token的distribution向量,取最大的(可以通过beam search改进)作为这一个timestep的输出。这样在下一个hidden layer计算的时候输入还会包含上一个time step得到的输出值。同时,隐藏层输出的结果z也不断在和h做attention为下一个time step的rnn提供输入。(注:也可将c在当前时间就作输入的,或是在当前时刻和下一时刻都作为输入的)

模型训练 

训练的过程如下:

模型通过encoder得到h的序列,做attention后得到encoder的输入。这里因为encoder的输出是一个token的distribution vector,我们把训练数据也表示为类似的形式(one-hot vector),比如 (0,0,1,0,....),这样就可以用cross-entropy的损失函数来进行训练了。要注意的是,之前有提到上一个timestep的encoder输出会作为下一个timestep的输入之一,但由于这里是在训练模型,上一个输出并不一定正确,所以会人为的根据训练数据设定好这个输入(Teacher Forcing)。至此就是模型训练的步骤。

 模型总结

首先是end-to-end模型的特点,因为结合了多个传统模型可以大量节省空间。另外LAS可以学习很复杂的声学信号与输出文字的关系(例如可以自动的翻译一些地方语言)

缺点方面,LAS没办法实现online的recognition。因为它必须处理过完整的声学信号才能输出第一个token,所以没法达到online的效果。借此后面会介绍可以进行online效果的CTC和RNN-T模型。

cover source: https://www.debugger.wiki/article/html/1554296402661769

ref: DLHLP 2020 Spring

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐