李宏毅NLP-5-RNNTNeural TransducerMoChA
RNN Transducer(RNN-T)
循环神经对齐器(RNA,Recurrent Neural Aligner)对CTC解码器的改进,具体内容如下:
- “RNA”,全称 “Recurrent Neural Aligner”,引用来自 [Sak, et al., INTERSPEECH’17]。
- CTC 解码器特性:左侧文字说明 “CTC Decoder: take one vector as input, output one token”,即 CTC 解码器每次取一个向量作为输入,独立输出一个 token(如 ( c, \phi, a ) 等),不考虑前后依赖。
- RNA 的改进:图中黄色模块代表解码器单元,RNA 通过箭头连接这些单元,使输出之间产生依赖关系(“RNA adds dependency”)。例如,后续输出会参考之前的输出信息,而非独立生成。这种机制让模型在生成 token 时能够利用序列的历史信息,避免 CTC 解码器独立决策导致的问题(如重复输出或忽略前文约束)。
综上,RNA 通过引入循环依赖,增强了解码器对序列上下文的感知,优化了 CTC 框架下的序列生成过程。
RNN - T(RNN Transducer) 模型的工作机制,主要用于处理序列到序列的任务(如语音识别),具体分析如下:
-
模型结构与流程:
- 图中绿色的 h t h^t ht 代表编码器输出的隐藏状态,通过 “copy” 传递到蓝色模块,再输入到黄色模块(解码器单元)。
- 左侧:黄色模块输出 t t t 和 h h h,体现 RNN - T 常规的解码过程,解码器基于当前和前序信息生成输出。
- 右侧:增加了空白符 ϕ \phi ϕ 的输出。当输出 ϕ \phi ϕ 时,箭头 “Give me the next frame” 表示模型请求获取下一个输入帧,以便继续处理后续的输入数据。这种机制适用于流式场景(如实时语音识别),允许模型在处理过程中动态请求新的输入帧,增强了对变长序列的处理能力。
-
RNN - T 的核心:
- 通过引入空白符 ϕ \phi ϕ,RNN - T 能够灵活处理输入与输出的对齐问题,结合编码器和解码器的信息,在联合模块中计算输出概率。输出 ϕ \phi ϕ时请求新帧,体现了模型在流式输入下的自适应处理能力,平衡了输入序列与输出标签的对齐需求。
- 通过引入空白符 ϕ \phi ϕ,RNN - T 能够灵活处理输入与输出的对齐问题,结合编码器和解码器的信息,在联合模块中计算输出概率。输出 ϕ \phi ϕ时请求新帧,体现了模型在流式输入下的自适应处理能力,平衡了输入序列与输出标签的对齐需求。
-
模型组件与输入:
- 绿色的 h t , h t + 1 , h t + 2 , h t + 3 h^t, h^{t+1}, h^{t+2}, h^{t+3} ht,ht+1,ht+2,ht+3是编码器输出的隐藏状态,通过“copy”传递至蓝色模块,再输入到黄色的解码器单元。
- 黄色解码器单元处理输入并生成橙色的输出(如 t , h , e , ϕ t, h, e, \phi t,h,e,ϕ等),其中 ϕ \phi ϕ 为空白符。
-
流式处理机制:
- 每当输出 ϕ \phi ϕ时,箭头指向 “next frame”,表示模型请求获取下一个输入帧。这种机制使 RNN - T 能够逐帧处理流式数据(如实时语音),动态适应输入序列长度。
- 不同的编码器隐藏状态 h t , h t + 1 h^t, h^{t+1} ht,ht+1 等对应不同的解码器步骤,表明模型在不同时间步利用相应输入信息进行解码。
-
输出含义:
- 带蓝色框的 t , h , e t, h, e t,h,e 等为实际输出标签,而 ϕ \phi ϕ用于控制输入帧的请求,平衡输入序列与输出标签的对齐。例如,连续输出 ϕ \phi ϕ时,模型持续请求新帧,直到输出非 ϕ \phi ϕ标签(如 e e e)。
综上,图中体现了 RNN - T 通过空白符 ( \phi ) 动态请求输入帧的特性,适用于语音识别等流式序列处理任务,实现输入与输出的灵活对齐。
这张图展示了 RNN - T(RNN Transducer) 模型在处理流式序列数据时,对空白符 ϕ \phi ϕ 的处理机制:
- 组件与流程:
- 绿色的 h t , h t + 1 , h t + 2 , h t + 3 h^t, h^{t+1}, h^{t+2}, h^{t+3} ht,ht+1,ht+2,ht+3是编码器输出的隐藏状态,通过黑色线传递至蓝色模块,再输入黄色的解码器单元。
- 黄色解码器单元生成橙色输出(如 t , h , e , ϕ t, h, e, \phi t,h,e,ϕ 等),红色线表示解码器状态传递路径。
- 空白符处理:
- 当输出 ϕ \phi ϕ 时,红色线旁标注 “ignore”,表示此时忽略部分状态传递路径。这意味着模型在输出 ϕ \phi ϕ 时,不依赖于常规的状态更新逻辑,而是专注于请求并处理下一个输入帧(如 “next frame”),确保流式输入下的动态适应。
- 模型意图:
- 通过忽略 ϕ \phi ϕ输出时的部分状态传递,RNN - T 能在流式场景中避免无效状态干扰,维持关键状态的有效更新,从而准确生成非空白输出标签(如 t , h , e t, h, e t,h,e 等),实现输入与输出的灵活对齐。
**语言模型在处理时,会忽略语音本身的声学特征等信息,仅关注文本标记(如单词、子词等符号化的单元)进行处理。**例如在语音识别或自然语言处理中,语言模型专注于学习标记之间的统计规律、语法结构和语义关系,而非语音的音频特性,以此来预测或生成合理的文本序列。
- 通过忽略 ϕ \phi ϕ输出时的部分状态传递,RNN - T 能在流式场景中避免无效状态干扰,维持关键状态的有效更新,从而准确生成非空白输出标签(如 t , h , e t, h, e t,h,e 等),实现输入与输出的灵活对齐。
Neural Transducer
Neural Transducer:
- 绿色的 h t h^t ht 到 h t + w h^{t + w} ht+w 表示多个连续的编码器隐藏状态。
- 采用 “attention” 机制,允许解码器在生成输出(如 c c c、 a a a、 ϕ \phi ϕ )时,综合考虑多个连续的隐藏状态信息,动态聚焦相关输入,增强对输入序列上下文的感知和利用能力,相比传统模型能更灵活有效地处理序列信息。
神经转换器(Neural Transducer)在处理序列数据时基于注意力机制(attention)的工作原理:
整体架构 - 黄色模块代表解码器单元,蓝色模块接收来自编码器的隐藏状态 h i h^i hi(绿色方块)。
- 解码器通过注意力机制,动态聚焦不同的编码器隐藏状态来生成输出(橙色方块,如 c , a , ϕ , t c, a, \phi, t c,a,ϕ,t等)。
窗口机制
- window 1:包含编码器隐藏状态 h 1 h^1 h1 到 h 4 h^4 h4。解码器在生成 c , a , ϕ c, a, \phi c,a,ϕ等输出时,利用注意力机制从这个窗口内选取相关隐藏状态信息。
- window 2:包含 h 5 h^5 h5到 h 8 h^8 h8。当处理后续输出(如 t , ϕ t, \phi t,ϕ )时,注意力机制切换到这个新窗口获取信息。
空白符与数据块请求
- 输出 ϕ \phi ϕ 时,标注 “next chunk”,表示模型请求下一个数据块(新的隐藏状态窗口),以继续处理后续输入序列,体现了模型在流式数据处理中的动态适应性。
展示了不同注意力机制在语音识别任务中,随着窗口大小(window size,W)变化时的音素错误率(Phone Error Rate,PER),具体内容如下:
不同的注意力机制
- no - attention(蓝色线):代表没有使用注意力机制的模型。
- DOT - ATTENTION(绿色线):使用点积注意力机制的模型。
- MLP - ATTENTION(红色线):采用多层感知机注意力机制的模型。
- LSTM - ATTENTION(青色线):使用长短期记忆网络注意力机制的模型。
数据趋势
- no - attention:随着窗口大小从 5 增加到 30,音素错误率呈明显上升趋势,说明无注意力机制时,模型在处理更大窗口数据时性能下降。
- DOT - ATTENTION:错误率先有小幅度下降,在窗口大小约为 15 后开始缓慢上升,整体波动相对较小。
- MLP - ATTENTION:错误率先下降,在窗口大小约为 15 时达到最低值,之后随着窗口增大缓慢上升。
- LSTM - ATTENTION:错误率整体较为平稳,有轻微波动,始终保持在较低水平,表现出较好的稳定性。
Monotonic Chunkwise Attention(MoChA)
MoChA(Monotonic Chunkwise Attention,单调分块注意力)机制,具体如下:
机制原理
- 输入与判断:黄色方块 z 0 z^0 z0作为输入,进入蓝色判断模块 “here?”。该模块类似注意力机制,判断是否在当前位置放置窗口。
- 决策分支:
- “yes” 情况:若判断结果为 “yes”,则在当前位置放置窗口,利用该窗口内的编码器隐藏状态(如 h 1 h^1 h1等绿色方块)进行后续处理。
- “no” 情况:若判断结果为 “no”,则将窗口向右移动,继续对后续隐藏状态进行评估和处理。
- 动态窗口调整:整个过程中,窗口根据判断结果动态移动,即 “dynamically shift the window”,确保模型能自适应地关注输入序列的不同部分,有效处理序列数据。
进一步阐释了 MoChA(单调分块注意力)机制的工作流程:
整体流程
- 输入与传递:黄色方块 z 0 z^0 z0作为初始输入,传递到 z 1 z^1 z1,再到 z 2 z^2 z2等后续模块。
- 窗口与隐藏状态:蓝色区域代表窗口,涵盖编码器隐藏状态 h 3 h^3 h3到 h 6 h^6 h6 等。窗口内的隐藏状态信息参与处理过程。
输出规则
- token 输出:每个窗口对应输出一个 token(如橙色方块 c c c、 a a a),且不会输出空白符 ϕ \phi ϕ。这与其他一些注意力机制(如 RNN - T 中会输出 ϕ \phi ϕ 来控制输入处理)不同,MoChA 通过这种方式更直接地生成序列输出。
总结
对几种序列到序列(seq2seq)模型的总结:
LAS(Listen, Attend and Spell)
- 说明:就是普通的 seq2seq 模型。通过编码器(Encoder)处理输入序列 h 1 − h 4 h^1 - h^4 h1−h4 等隐藏状态),解码器利用注意力机制(attention)生成输出 c 0 − c 4 c^0- c^4 c0−c4 等)。
CTC(Connectionist Temporal Classification)
- 说明:解码器是线性分类器的 seq2seq 模型。通过引入空白符 ϕ \phi ϕ 解决输入输出不对齐问题,每个时间步独立输出 token,后处理合并重复 token 并去除 ϕ \phi ϕ。
RNA(Recurrent Neural Aligner)
- 说明:输入一个元素就要输出一个元素的 seq2seq 模型。在 CTC 解码器基础上引入循环依赖,使输出间产生关联,避免独立输出导致的问题。
RNN - T(RNN Transducer)
- 说明:输入一个元素可输出多个元素的 seq2seq 模型。具备处理流式数据能力,通过空白符 ϕ \phi ϕ 控制输入帧请求,灵活处理输入输出对齐。
Neural Transducer
- 说明:每次输入一个窗口数据的 RNN - T 模型。利用注意力机制,综合多个连续的编码器隐藏状态生成输出,能更好捕捉上下文信息。
MoChA(Monotonic Chunkwise Attention)
- 说明:窗口可灵活移动伸缩的 Neural Transducer。每个窗口对应输出一个 token,不输出空白符 ϕ \phi ϕ,动态调整窗口关注输入序列不同部分。