Streaming ASR
整理流式ASR (Streaming ASR)相关文献
《TRANSFORMER-BASED ONLINE SPEECH RECOGNITION WITH DECODER-END ADAPTIVE COMPUTATION STEPS》
Mohan Li, Ca ̆ta ̆lin Zorila ̆ and Rama Doddipatla
作者提出了 Decoder- end Adaptive Computation Steps, DACS 算法
1. INTRODUCTION
作者说明目前 End-to-End 模型普遍使用的都是 Transformer 结构,但是该结构在面对 online speech recognition 时存在以下问题:
- 需要整个语句输入来计算全局的注意力
- 每次都会对全部编码器输出执行 normalisation,随着输出语句长度的增加,其计算成本和内存消耗越来越高
因此需要一种新的方式来计算,以往尝试的方法有 MoChA,sMoChA,MTA,这些方法都是基于 Bernoulli 分布。 但是在 Transformer 中由于使用的是多头注意力机制会出现,不同 head 注意的时间点不同或者直到语音结束才触发的情况。
作者提出的 DACS 算法则可以解决上述问题
2. TRANSFORMER FOR ONLINE ASR
首先作者介绍了 baseline Transformer 结构,随后介绍了几种基础的在线注意力计算方法包括 HMA,MoChA,sMoChA,MTA
其中 sMoChA,MTA 都是在之前的模型上进一步简化
3. ONLINE TRANSFORMER ASR WITH DECODER-END ADAPTIVE COMPUTATION STEPS
作者指出在线注意力机制的主要挑战在于延迟的控制,作者将解码的权重改为累积式的,达到阈值后触发,如过长时间未触发,则强制执行以控制延迟。
作者是在 ACS 算法的基础上改进而来,作者将其应用到编码器和解码器之间的相互注意力计算上
对第 \(l\) 解码层中的 \(head_h\) 来说,energy 的计算如下,在每个解码器时间步 \(i\) 对每个编码器时间步 \(j\) 计算 \[ e_{i,j}=\frac{q_{i-1}k_j^T}{\sqrt{d_k}} \] 随后计算概率 \(p_{i,j}\) \[ p_{i,j}=Sigmoid(e_{i,j}) \] 从 \(j=1\) 开始,一直计算 \(P_{i,j}\) 的累积和直到其和大于1,但是也有可能出现 \(p_{i,:}\) 一直很小,此时就需要设置最大等待值 \(M\),以此来控制延迟
因此总的来说区间长度 \(N_i\) 的计算为: \[ N_i=min\{min\{n:\sum_{j=1}^n p_{i,j}>1\},M\} \] 此时 \(c_i\) 的计算变为: \[ c_i=\sum_{j=1}^{N_i}p_{i,j}v_j \] 对于多头注意力机制来说,必须强制每个头的 \(N_i\) 相等,此处作者设置为全部头中的最大值
接下来给出 Infernece 期间的伪代码:

可以看到在infernece中每次计算的范围是 \(t_{i-1}\) 到 \(t_{i-1}+M\)
在训练过程中的计算则需要一个 MASK 矩阵来屏蔽剩余信息: \[ P=sigmod(\frac{QK^T}{\sqrt{d_k}}) \\ M=ShiftRight(cumsum(P)>1) \\ DACS(Q,K,V)=M⊙PV \] 其中 \(M\) 就是 MASK 矩阵
4. EXPERIMENTS
文章主体采用的是 chunk 形式,通过设置 \(N_c,N_l,N_r\) 三个参数来控制 chunk 大小,其中训练时只取中间 \(N_c\) 部分

