前言

本文是阅读论文《Listen, Attend and Spell(LAS)》的笔记,LAS 是一种端到端基于注意力机制的编码器-解码器(Attention-based Encoder Decoder, AED) 结构。在 2015 年,传统 DNN-HMM 模块复杂,各模块单独训练优化,有误差累积和存储占用大等问题;CTC 有输出标签条件独立的不合理假设;RNN-T 训练内存占用高,在当时算力资源不富裕的条件下,效果并不惊艳。AED 方法提出后,迅速成为语音识别(ASR)领域富有前景的技术方向。LAS 与 [2] [3] 一起是 AED ASR 的开创性工作。我们从模型结构、训练、解码和重打分、实验结果 4 个方面介绍 LAS。

一、模型结构

LAS 是将 Fbank 特征映射到英文字母集合 y = ( ⟨ sos ⟩ , y 1 , … , y S , ⟨ eos ⟩ ) , y i ∈ { a , b , c , … , z , 0 , … , 9 , ⟨ space ⟩ , ⟨ comma ⟩ , ⟨ period ⟩ , ⟨ apostrophe ⟩ , ⟨ unk ⟩ } \mathbf{y} = (\langle\text{sos}\rangle ,y_1,\dots,y_S,\langle\text{eos}\rangle), y_i \in \{a,b,c,\dots,z,0,\dots,9,\langle\text{space}\rangle,\langle\text{comma}\rangle,\langle\text{period}\rangle,\langle\text{apostrophe}\rangle,\langle\text{unk}\rangle\} y=(⟨sos,y1,,yS,eos⟩),yi{a,b,c,,z,0,,9,space,comma,period,apostrophe,unk⟩} ⟨ sos ⟩ \langle\text{sos}\rangle sos 是 start-of-sentence token, ⟨ eos ⟩ \langle\text{eos}\rangle eos 是 end-of-sentence token。输出字符除了字母和数字,还有空格、逗号、句点、省略号和 Unknown。
如图 1 所示,编码器是一个双向的 LSTM,输入是 Fbank 特征 x = ( x 1 , … , x T ) \mathbf{x} = (x_1,\dots,x_T) x=(x1,,xT),输出是高级特征表示 h = ( h 1 , … , h U ) , U ≤ T \mathbf{h} = (h_1,\dots,h_U), U≤T h=(h1,,hU),UT,如下
h = L i s t e n ( x ) (1) \mathbf{h} = Listen(\mathbf{x}) \tag{1} h=Listen(x)(1)

这里的 Listener 采用了金字塔结构,是一个降采样过程,本文实验表明,编码器对输入特征进行降采样可以更快地收敛到更好的结果,是本文相较其参考文献的一个创新点。每一层 pyramid BLSTM (pBLSTM) 将时间分辨率缩小 2 倍,共有 3 层 pBLSTM,故时间分辨率缩小了 8 倍,并且降采样操作可以降低计算复杂度。
请添加图片描述

图1 LAS 结构图

解码器由 Attend 和 Speller 组成,本质上是一个基于注意力机制的 LSTM 换能器(Transducer),它利用编码器的输出和之前解码的字符,生成下一个字符的概率分布 P ( y i ∣ h , y < i ) \mathbb{P}(y_i | \mathbf{h}, y_{<i}) P(yih,y<i)。具体计算如下
c i = A t t e n t i o n C o n t e x t ( s i , h ) (2) c_i = AttentionContext(s_i, \mathbf{h}) \tag{2} ci=AttentionContext(si,h)(2)
s i = R N N ( s i − 1 , y i − 1 , c i − 1 ) (3) s_i = RNN(s_{i-1}, y_{i-1}, c_{i-1}) \tag{3} si=RNN(si1,yi1,ci1)(3)
P ( y i ∣ x , y < i ) = C h a r a c t e r D i s t r i b u t i o n ( s i , c i ) (4) \mathbb{P}(y_i | \mathbf{x}, y_{<i}) = CharacterDistribution(s_i, c_i) \tag{4} P(yix,y<i)=CharacterDistribution(si,ci)(4)

其中 R N N ( ) RNN() RNN() 是 2 层的 LSTM,所以在每个时间步需要传递解码器状态(decoder state) s i s_i si C h a r a c t e r D i s t r i b u t i o n ( ) CharacterDistribution() CharacterDistribution() 是 MLP,通过最后的 softmax 得到概率分布。这里我们主要关注上下文向量(context vector) c i c_i ci 的计算和使用。
A t t e n t i o n C o n t e x t ( ) AttentionContext() AttentionContext() 计算如下,
e i , u = ⟨ ϕ ( s i ) , ψ ( h u ) ⟩ (5) e_{i,u} = \langle \phi(s_i), \psi(h_u) \rangle \tag{5} ei,u=ϕ(si),ψ(hu)⟩(5)
α i , u = e x p ( e i , u ) ∑ u e x p ( e i , u ) (6) \alpha_{i,u} = \frac{exp(e_{i,u})}{\sum_u exp(e_{i,u})} \tag{6} αi,u=uexp(ei,u)exp(ei,u)(6)
c i = ∑ u α i , u h u (7) c_i = \sum_u \alpha_{i,u} h_u \tag{7} ci=uαi,uhu(7)
其中 ϕ ( ) \phi() ϕ() ψ ( ) \psi() ψ() 是 MLP,将 s i s_i si h u h_u hu 映射到同一个语义空间,具有相同维度。如果 s i s_i si h u h_u hu 分布差异太大,算内积差异大,注意力向量 α i , u \alpha_{i,u} αi,u 也会有影响。式 (7) 对 h u h_u hu 加权求和,利用注意力机制,判断 h \mathbf{h} h 中哪些向量对正确解码起作用。论文中训练收敛时, α i , u \alpha_{i,u} αi,u 的分布很尖锐,证明 h \mathbf{h} h 中只有个别向量对最终解码起关键作用。

二、训练

训练使得
max ⁡ θ ∑ i log ⁡ P ( y i ∣ x , y < i ∗ ; θ ) (8) \max\limits_{\theta} \sum_i \log \mathbb{P}(y_i | \mathbf{x}, y^*_{<i}; \theta) \tag{8} θmaxilogP(yix,y<i;θ)(8)
最大,其中 y < i ∗ y^*_{<i} y<i 是 ground truth 标签。
但是在推理的时候,模型参数随机初始化,前一个解码字符往往是错的,这对于一直照着标准答案训练的模型来说,推理效果会变差。所以作者提出 Sampling 策略,在训练过程中,90% 的训练给模型送 ground truth 标签,10% 从上一步解码出的字符分布中抽样一个字符,进行接下来的解码。目的是在训练中加入噪声,让模型具有抗干扰能力。

三、解码和重打分

解码是送入声学信号后,得到对应信号概率最大的字符
y ^ = arg ⁡ max ⁡ y log ⁡ P ( y ∣ x ) (9) \hat{y} = \arg \max_y \log \mathbb{P}(\mathbf{y}|\mathbf{x}) \tag{9} y^=argymaxlogP(yx)(9)
解码采用的是 Beam Search ,从 ⟨ sos ⟩ \langle\text{sos}\rangle sos 开始解码,波束搜索宽度为 β \beta β, 每一时间步,当前波束中的每个假设再多解一个字符,从中保留概率最大的 β \beta β 条路径。如果遇到 ⟨ eos ⟩ \langle\text{eos}\rangle eos,则此路径从波束中去除,作为一条最终解码路径。
作者还实验了加入语言模型信息,利用大量纯文本数据训练语言模型 P L M ( y ) \mathbb{P}_{LM}(\mathbf{y}) PLM(y):
s ( y ∣ x ) = log ⁡ P ( y ∣ x ) ∣ y ∣ c + λ log ⁡ P L M ( y ) (10) s(\mathbf{y}|\mathbf{x}) = \frac{\log \mathbb{P}(\mathbf{y}|\mathbf{x})}{|\mathbf{y}|_c} + \lambda \log \mathbb{P}_{LM}(\mathbf{y}) \tag{10} s(yx)=yclogP(yx)+λlogPLM(y)(10)
其中除以 ∣ y ∣ c |\mathbf{y}|_c yc 是对字符个数做正则化, λ \lambda λ 是超参数,通过在开发集上测试来确定。

四、实验结果

请添加图片描述

图2 LAS 实验结果

如图 2 所示,LAS 利用语言模型重打分,会有较大提升。同时,Sampling 策略也有小部分提升。但相比当时的 SOTA 模型、传统的 CLDNN-HMM 还有微小差距。

总结

AED 是近十年(当前2025.10)ASR 任务中很重要的技术,思想来源于手写生成和机器翻译,利用注意力机制,帮助编解码器定位到对应的字符。LAS 代码可以参考

参考文献

[1]: Chan W , Jaitly N , Le Q V ,et al.Listen, Attend and Spell[J].Computer Science, 2015.DOI:10.48550/arXiv.1508.01211.
[2]: Chorowski J , Bahdanau D , Cho K ,et al.End-to-end Continuous Speech Recognition using Attention-based Recurrent NN: First Results[J].Eprint Arxiv, 2014.DOI:10.48550/arXiv.1412.1602.
[3]: Bahdanau D , Chorowski J , Serdyuk D ,et al.End-to-end attention-based large vocabulary speech recognition[J].IEEE, 2016.DOI:10.1109/ICASSP.2016.7472618.
[4]: https://github.com/Alexander-H-Liu/End-to-end-ASR-Pytorch

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐