导读
随着神经机器翻译的兴起,基于Attention的Seq2Seq模型由于其强大的建模变长序列直接转换问题的能力,也在其他领域获得了极大的关注。语音识别问题本质上也是两个变长序列直接转换的问题,Seq2Seq模型的提出为解决语音识别问题开辟了另一条道路,其优雅的模型结构和强大的性能使得语音识别问题有希望彻底摆脱语言模型和发音词典,真正的进行端到端的联合优化。
1. Introduction
1.1 Background
最近几年神经机器翻译(NMT)取代了传统统计机器翻译(SMT)方法成为了主流。神经机器翻译的核心方法就是Sequence-to-Sequence(Seq2Seq)模型[1], Seq2Seq模型取得这么多的关注,得益于其强大的序列建模能力以及建模两个变长序列之间转换的能力。语音识别(Automation SpeechRecognition, ASR)与机器翻译一样,实际上也可以看成两个序列之间转换的问题。语音识别实际上的目标就是把输入的音频序列转录为对应的文本序列,音频序列可以描述为
O=\mathrm{o}_{1}, \mathrm{o}_{2}, \mathrm{o}_{3}, \ldots, \mathrm{O}_{t}
其中oi表示每一帧语音特征,t表示音频序列的时间步(通常情况下,每秒语音会被分为100帧,每帧可以提取39维或者120维的特征),同样的,文本序列可以描述为
W=\mathrm{w}_{1}, \mathrm{w}_{2}, \mathrm{w}_{3}, \ldots, \mathrm{w}_{t}
其中n表示语音中对应的词数(不一定是词,也可能是音素等其他建模单元)。由此可见,语音识别问题也可以用序列到序列的模型建模。
1.2 Related Works
传统的语音识别问题是DNN-HMM的混合结构[3],并且还需要语言模型、发音词典和解码器等多个部件共同建模。其中发音词典的构建需要大量的专家知识,多个模型组件之间也需要单独训练不能进行联合优化。Seq2Seq模型给语音识别建模提供了一种新的解决思路[ 3, 4]。将Seq2Seq模型应用于语音识别问题有很多明显的优势。
1.2.1 可以进行端到端联合优化。
1.2.2 彻底摆脱了马尔科夫假设
1.2.3 不需要发音词典(发音词典很昂贵)
2. Methods
2.1 Seq2Seq模型与Attention机制简介
图1 Sequence-to-Sequence Model
Seq2Seq模型通常包含两部分,一部分是Encoder, 另一部分是Decoder。Encoder和Decoder通常都采用RNN及其变体作为基本结构。采用Seq2Seq模型建模语音识别问题的思路很简单,首先,通过模型的Encoder结构将语音序列编码成固定长度的向量(这个向量最后一个时间步的RNN的输出),然后Decoder根据Encoder的输入的句子表示以及上一时刻解码逐步输出生成下一时刻的标记。用公式描述就是下面的结构,红框中标出的就是源序列的编码表示。
注意力机制[1]带给Seq2Seq模型一个极大的性能提升。与纯Seq2Seq模型的差异是,基于注意力机制的序列到序列模型在每一步解码时都会计算一个上下文向量ci,它是从Encoder每一步编码输出的加权和,表示解码当前标记需要注意源序列中的信息。权重表示当时解码状态与Encoder每一时刻编码输出的相关性。实际上可以解读为一个查询机智,根据Decoder当前时刻状态去Encoder输出中查找最匹配的信息。对应的是生成公式中的c被上下文向量ci代替。
图2 Attention-based Sequence-to-SequenceModel
注意力机制计算方法如下:
针对Decoder输出状态Si-1(有时也用Si)与第j时刻Encoder输入hj计算相似度,然后针对所有相似度进行Softmax归一化
上下文向量表示为Encoder总计T个时刻输入的加权和
c_{i}=\sum_{j=1}^{T_{x}} \alpha_{i j} h_{j}
2.1 A Review of Attention-based Seq2seq Model
注意力模型在机器翻译等领域取得了重大进展,也出现了多个变体,但是其整体的发展方向可以概括为不同的Encoder结构,不同Attention机制(不同计算相似度方法,不同结构)。Decoder结构是自回归模型,相对变化比较少。
2.1.1 不同的Encoder结构
• 采用卷积结构代替RNN结构。
其中最经典的方法是Facebook的ConvS2S[5]。整个模型采用CNN代替了RNN,模型解决了RNN不能充分利用GPU性能的问题,同时提高了模型的精度。利用CNN代替RNN结构对序列建模会是序列丢失掉时序信息,因此最关键的一步是对源序列进行位置编码扩充的原有的特征中。
图3 ConvS2S Model
• 更加深的Encoder结构
采用更深层的Encoder结构的基本假设就是在深度学习中,通常增加网络的层数能够获得更好的模型精度和泛化性能。例如[6]中就采用了8层以上的网络进行语音序列编码。
• 减少源序列时间步的探索
对于语音任务,实际上源序列通常长度为几百步,目标序列通常几十步,源序列与目标序列之间的巨大的长度差异限制了序列编码能力和Attention的查找能力。LAS[4]采用了金字塔结构的Encoder,每经过一层编码,时间步就会缩小一倍,时间步缩小会大大减少注意力机制的计算量,同时更容易在源序列中查找出有效的信息。
图4 Pyramidal Encoder
2.1.2 不同的注意力机制
• 不同的计算相似度方法
a. Dot(两个向量直接点乘)
\operatorname{score}\left(h_{t}, \bar{h}_{s}\right)=h_{t}^{T} \bar{h}_{s}
b. General(解码状态需要进行线性变换)
\operatorname{score}\left(h_{t}, \bar{h}_{s}\right)=h_{t}^{T} W_{a} \bar{h}_{s}
c. Concat (两个向量拼接在一起后进行间接计算相似度)
\operatorname{score}\left(h_{t}, \bar{h}_{s}\right)=v_{a}^{T} \tanh \left(W_{a}\left[h_{t} ; \bar{h}_{s}\right]\right)
d.Location-aware Attention[7](计算注意力机制是也考虑上一解码时刻注意力权重,相当于进行Soft-alignment,这种方法被应用于语音领域)
• 不同的注意力结构
注意力有好多结构,包括Soft-Atttention[8], Hard-Attention[9], Global-Attetion[10], Local-Attention[10], Multihead-Attention[11], Self-Attetion[11]等,限于篇幅,这里主要描述一下最后两种,其余的请看一下最后的补充文档。
a. MultiHead-Attention
每个注意力机制实际上能够注意到的信息是有限的,那么可以通过增加多个注意力机制来使得模型能够注意到源序列的不同信息。每个注意力头的计算方法是一样的。
图5 Multi-Head-Attention
但是在实际中怎么能确保每个注意力头都能学习到不一样的方面,而避免每个注意机制都注意到同一个地方呢?[12]提出对多头注意力权重A增加惩罚。描述如下:
P=\left\|\left(A A^{T}-I\right)\right\|_{F}^{2}
增加惩罚项约束了注意力学习的过程,强迫每个注意力权重注意不同的内容,注意力权重直接尽量不相关。
b. Self-Attention
Self-attention因为Attention Is All You Need这篇文章而大火,Self-attention实际上提供了一个快速使得每个序列单元都快速获得序列全局信息的方法,极大的利用了GPU的性能,同时摆脱了RNN结构。关于Self-Attention的详细介绍,建议大家参考阅读以下这个博客The Annotated Transformer
(http://nlp.seas.harvard.edu/2018/04/03/attention.html),它提供了一对于这篇论文详细的解读以及代码实现。
3. Take Home Message
语音识别问题与机器翻译问题还是有着很大的区别的。
3.1 语音识别问题中两种序列来自于同一种语言,源序列与目标序列的语序是一致的,但是机器翻译的源序列与目标序列来自于两种语言,他们之前存在着语序的差异。
3.2 相对于机器翻译来讲,语音识别是一个高噪声且差异大的序列。高噪声指的是同一个人在不同环境下发出同一个声音是不一样的。差异大描述的是不同人对于同一个声音的表达也存在着很大的差异。这两个问题都增加了建模难度。
3.3 语音识别中源序列没有办法对词单元建模,因为目前没有办法在一段连续的声音里面获取一个完整词的语义表示。而机器翻译建模单元是词的Embedding信息,其中包含大量的语义信息,能够辅助建模。
3.4 最后一个问题就是序列长度差异,对于语音识别任务来说,源序列是声音序列,假如一句话5秒钟,那么源序列长度为500。而翻译一句话也就十几个词。更长的源序列长度带给模型的序列建模能力以及Attention机制的检索能力极大的考验。
即使存在着这么大的差别,但是目前应用于语音识别的Attention-based Seq2Seq方法与机器翻译中的方法差别不是很大,个人倾向于针对Seq2Seq方法在语音识别领域做更多特定的优化。另外有些工作将其他语音识别方法与Seq2Seq模型进行组合[13,14],也获得了很好的效果,同时给我们极大的启发。
如果你想了解关于Seq2Seq模型在语音识别建模中的发展或者对序列建模感兴趣的话,请看我之前写的文档(链接:https://github.com/ZhengkunTian/An-Review-of-Attention-based-Seq2Seq-Model-For-ASR)或者联系我(zhengkuncasia@163.com)。
4. Reference
[1] Bahdanau, Dzmitry, K. Cho, and Y. Bengio.“Neural Machine Translation by Jointly Learning to Align andTranslate.” Computer Science (2014)
[2] Luong, Minh Thang, H. Pham, and C. D.Manning. “Effective Approaches to Attention-based Neural MachineTranslation.” Computer Science (2015).
[3] Yu, Dong, and J. Li. “RecentProgresses in Deep Learning Based Acoustic Models.” IEEE/CAA Journal ofAutomatica Sinica 4.3(2017):396-409.
[4] Chan, William, et al. “Listen, Attendand Spell.” Computer Science (2015).
[5] MLAGehring, Jonas, et al.“Convolutional Sequence to Sequence Learning.” (2017).
[6] Zhang, Yu, W. Chan, and N. Jaitly.“Very Deep Convolutional Networks for End-to-End Speech Recognition.”(2017):4845-4849.
[7] Chorowski J, Bahdanau D, Serdyuk D, et al.Attention-Based Models for Speech Recognition[J]. Computer Science, 2015,10(4):429-439.
[8] Chiu, Chung Cheng, et al.“State-of-the-art Speech Recognition With Sequence-to-SequenceModels.” (2017).
[9] Xu, Kelvin, et al. “Show, Attend andTell: Neural Image Caption Generation with Visual Attention.” ComputerScience (2015):2048-2057.
[10] Luong, Minh Thang, H. Pham, and C. D.Manning. “Effective Approaches to Attention-based Neural MachineTranslation.” Computer Science (2015).
[11]Vaswani, Ashish, et al. “Attention IsAll You Need.” (2017).
[12] Lin, Zhouhan, et al. “A STRUCTURED SELF-ATTENTIVESENTENCE EMBEDDING.” international conference on learning representations(2017).
[13] Sei Ueno et al.,acoustic-to-wordattention-based model complemented with character-level ctc-based model,ICASSP2018, http://sap.ist.i.kyoto-u.ac.jp/lab/bib/intl/UEN-ICASSP18.pdf
[14] Shiyu Zhou, et al. “Syllable-BasedSequence-to-Sequence Speech Recognition with the Transformer in MandarinChinese.” (2018).
版权声明