虽然连接主义时间分类 (CTC) 提供了一种无需明确对齐即可训练声学模型的方法,但其输出预测之间条件独立的核心假设是一个主要限制。语音本身有结构;“apple”中“p”的发音受到前面的“a”和后面的“l”的影响。为了捕捉这些关联,我们需要一个直接对输出序列进行建模的架构。听觉、注意与拼写 (LAS) 模型正是一个开创性的端到端架构,实现了这一点。由谷歌研究人员开发,LAS 将语音识别视为一个序列到序列 (Seq2Seq) 问题,这与机器翻译非常相似。它直接将音频特征序列转换为字符或单词序列。其名称本身简洁地描述了三个主要组成部分:“听者”负责处理音频,“注意力”机制负责关注音频的相关部分,“拼写者”负责生成文本记录。LAS 的三个组成部分LAS 架构由编码器、解码器和一个连接它们的注意力机制精巧构成。听者 (编码器): 该组件的作用是接收输入音频特征,例如对数梅尔频谱图,并将其转换为更高层级的表示。它“听取”整个语音片段。注意力机制: 这是听者和拼写者之间的桥梁。在生成输出的每一步,它决定编码音频的哪个部分最相关。拼写者 (解码器): 该组件接收编码表示,并在注意力机制的引导下,一次生成一个标记(例如,一个字符或词块)的输出文本记录。它“拼写出”文本记录。接下来,让我们详细了解一下这些部分。听者:一个声学编码器听者充当声学模型的编码器。其主要目标是学习输入语音的丰富、紧凑表示。通常,听者实现为循环神经网络的堆叠,最常见的是双向长短期记忆网络 (BLSTM)。听者的输入是特征向量序列,$X = (x_1, x_2, ..., x_T)$,其中 $T$ 是音频中的时间步数。BLSTM 处理这个序列,并生成一组高级特征向量或编码器隐藏状态,$H = (h_1, h_2, ..., h_T')$。由于 LSTM 处理序列,它们非常适合捕捉语音中的时间模式。使用双向LSTM 尤其有效,因为它在前向和后向两个方向上处理音频,使得每个隐藏状态 $h_i$ 能够包含关于整个语音片段的信息,而不仅仅是过去的信息。通常,听者包含一个金字塔结构 (pBLSTM),其中连续的时间步在更高层中合并。这逐步缩短了序列的时间长度 ($T' < T$),从而创建了更紧凑的表示,并降低了注意力机制的计算负担。digraph G { rankdir=TB; node [shape=box, style="filled,rounded", fontname="sans-serif"]; // 为主输入标签创建一个不可见节点 input_label [label="输入音频特征 (x₁...xT)", shape=none, fontname="sans-serif", fontsize=10]; subgraph cluster_encoder { label="听者 (编码器)"; bgcolor="#e9ecef"; style="filled,rounded"; node [fillcolor="#a5d8ff"]; x1 [label="x₁"]; x2 [label="x₂"]; xT [label="xT"]; node [fillcolor="#74c0fc"]; blstm1 [label="pBLSTM 层 1"]; blstm2 [label="pBLSTM 层 2"]; node [fillcolor="#4dabf7"]; h1 [label="h₁"]; h2 [label="h₂"]; hT_prime [label="hT'"]; x1 -> blstm1; x2 -> blstm1; xT -> blstm1; blstm1 -> blstm2; blstm2 -> h1; blstm2 -> h2; blstm2 -> hT_prime; } // 连接不可见的标签节点到编码器 input_label -> x1 [style=invis]; // 为输出标签创建另一个不可见节点并连接 output_label [label="编码器隐藏状态 (h₁...hT')", shape=none, fontname="sans-serif", fontsize=10]; hT_prime -> output_label [style=invis]; }听者通过堆叠的 pBLSTM 层处理输入特征,以生成高级隐藏状态。拼写者:一个注意力解码器拼写者是一个自回归解码器,这意味着它一次生成一个标记的输出序列,并且每个新的预测都取决于先前生成的标记。LAS 在此处明确建模了 CTC 所忽略的输出关联。拼写者通常是一个单向 LSTM 或 GRU。在每个解码步骤 $i$,它执行两个动作:它使用注意力机制计算一个上下文向量,$c_i$。该向量是听者输出状态的汇总,根据每个状态与生成当前输出标记 $y_i$ 的相关性进行加权。它将其自身的先前隐藏状态 ($s_{i-1}$)、先前生成的标记 ($y_{i-1}$) 和新的上下文向量 ($c_i$) 作为其 RNN 单元的输入。然后它更新其隐藏状态至 $s_i$,并预测当前标记的概率分布,$P(y_i | y_{<i}, X)$。该过程从一个特殊的序列开始标记 <SOS> 开始,并持续进行,直到生成序列结束标记 <EOS> 为止。注意力机制是该过程的核心。对于每个解码步骤 $i$,它将当前解码器状态 $s_{i-1}$ 与所有编码器隐藏状态 $H = (h_1, h_2, ..., h_T')$ 进行比较。这种比较产生一组注意力分数或权重,然后用于计算编码器状态的加权平均。这个平均值就是上下文向量 $c_i$。$$ \alpha_{ij} = \frac{\exp(\text{score}(s_{i-1}, h_j))}{\sum_{k=1}^{T'} \exp(\text{score}(s_{i-1}, h_k))} $$$$ c_i = \sum_{j=1}^{T'} \alpha_{ij} h_j $$这使得拼写者能够“关注”当前正在转录音素对应的特定音频片段。例如,当生成“apple”中的字符“p”时,注意力权重对于原始音频中 /p/ 音对应的编码器隐藏状态将是最高的。完整的 LAS 架构综合来看,LAS 模型在推理过程中以循环方式运行。听: 整个音频输入一次性通过听者(编码器),以获取完整的隐藏状态集合 $H$。注意与拼写: 拼写者(解码器)开始其生成过程。在步骤 $i$,解码器的状态 $s_{i-1}$ 用于查询编码器状态 $H$。注意力机制计算权重并生成一个上下文向量 $c_i$。解码器 RNN 接收 $c_i$ 和前一个标记 $y_{i-1}$ 来预测下一个标记 $y_i$。这个过程重复,直到生成一个 <EOS> 标记。digraph G { rankdir=TB; fontname="sans-serif"; node [shape=box, style="filled,rounded", fontname="sans-serif"]; subgraph cluster_main { bgcolor="#f8f9fa"; label="听觉、注意与拼写 (LAS) 架构"; subgraph cluster_encoder { label="听者 (编码器)"; bgcolor="#e9ecef"; node [fillcolor="#74c0fc"]; encoder [label="pBLSTM 堆叠"]; input_features [label="音频特征\n(梅尔频谱图)", shape=invhouse, fillcolor="#ced4da"]; encoder_outputs [label="编码器状态 (H)", shape=cylinder, fillcolor="#a5d8ff"]; input_features -> encoder; encoder -> encoder_outputs; } subgraph cluster_decoder { label="拼写者 (解码器)"; bgcolor="#e9ecef"; node [fillcolor="#d0bfff"]; decoder_rnn [label="解码器 RNN\n(LSTM/GRU)"]; softmax [label="Softmax", fillcolor="#b197fc"]; output_char [label="输出 'c'", shape=invhouse, fillcolor="#ced4da"]; prev_char [label="上一个字符 'a'", shape=house, fillcolor="#ced4da"]; decoder_rnn -> softmax; softmax -> output_char; prev_char -> decoder_rnn [lhead=cluster_decoder, label=" yᵢ₋₁"]; } subgraph cluster_attention { label="注意力"; bgcolor="#e9ecef"; node [fillcolor="#96f2d7"]; attn_mech [label="注意力\n机制"]; context_vec [label="上下文向量 (cᵢ)", shape=cylinder, fillcolor="#63e6be"]; attn_mech -> context_vec; } encoder_outputs -> attn_mech [label=" H"]; decoder_rnn -> attn_mech [label=" sᵢ₋₁", dir=back]; context_vec -> decoder_rnn [label=" cᵢ"]; } }完整的 LAS 架构。听者编码音频,对于每个输出步骤,拼写者使用注意力机制从编码器状态生成一个上下文向量,以预测下一个字符。训练与局限LAS 模型使用预测标记概率与真实文本记录之间的标准交叉熵损失进行端到端训练。训练期间常用一种名为教师强制的技术,即解码器在每一步都被输入来自真实文本记录的正确前一个标记,而非其自身(可能不正确的)预测。这有助于稳定训练,并帮助模型更快地学习。对于推理,由于真实数据不可用,会使用像束搜索这样的算法来考虑多个候选转录,并找到最有可能的那个。虽然 LAS 是一大进步,但它存在局限。拼写者严格从左到右的自回归性质在推理时可能速度较慢,并且在处理非常长的语音片段时可能表现不佳,此时注意力机制可能失去聚焦。这些挑战促使人们转向像 Transformer 这样的完全基于注意力的模型,我们将在后面讨论。