用深度循环神经网络做语音识别
论文地址:[PDF] Speech recognition with deep recurrent neural networks | Semantic Scholar
摘要
Recurrent Neural Network RNNs 是处理序列数据的强大模型。端到端训练模型,如 Connectionist Temporal Classification CTC,使在输入输出对齐未知的情况下基于序列标签数据训练 RNNs 有了可能。这些方法的组合 Long Short Term Memory LSTM 架构已被证明卓有成效,在解决手写识别问题上得到最先进的效果。然而,目前 RNN 在语音识别任务上的性能,与深度前向网络相比,还不尽人意。本文提出深度 RNN ,组合 RNN 中可灵活使用长范围上下文的各级表示。当基于合适正则化训练端到端模型时,我们发现深度 LSTM 在 TIMIT 音素识别基准测试集上的误差有 17.7%,该成绩据我们所知是目前最佳的。
简介
在语音识别中使用神经网络已有很长的历史,通常与隐马尔可夫 Hidden Markov Models HMM 结合使用。这几年由于深度前向网络在原声建模方面的重大提升,用神经网络处理语音识别又重新引起了人们的研究。考虑到对话本质上是动态过程,自然想到用 RNN 来建模。HMM-RNN 系统最佳也重新兴起,但其效果不如深度网络。
不用组合 RNNs 与 HMMs,也可训练 RNNs 端到端语音识别模型。这些方法与 HMMs 相比,利用更大的状态空间,更丰富的 RNNs 动态性,避免使用潜在的不正确对齐作为训练目标的问题。组合 LSTM 来训练端到端模型已被证实在手写识别问题上尤其有效。然而其在语音识别方面的影响目前还很小。
RNNs 天生具有时间深度,其隐藏层状态是所有隐藏层状态的函数。启发本文的问题是,通过堆叠多个循环隐藏层,就像在卷积神经网络中堆叠多个前向卷积层,RNNs 能否从空间深度中获益?为了回答该问题,我们引入深度 LSTM RNNs,然后评估其语音识别潜力。我们也展示一种最近提出的端到端学习模型的强化版本,其同时训练两个 RNNs ,分别建模原声与语素。
第 2、3 节介绍模型架构与训练方法,第 4 节提供实验结果,第 5 节总结。
循环神经网络
给定输入序列 ,标准 RNN 从按照 t 从 1 到 N 的顺序迭代计算隐藏向量序列 和输出向量序列 。
其中 W 表示权重矩阵,b 表示其偏置向量,H 表示隐藏层函数。
H 通常是元素级 sigmoid 函数。然而我们发现 LSTM 架构,通过特殊记忆单元存储信息,共容易发现与利用长距离上下文。对于本文使用的 LSTM 版本,H 为以下函数的组合。
其中 是逻辑 sigmoid 函数, 分别是输入门、遗忘门、输出门、记忆单元激活向量,它们的规模与隐藏向量 h 相同。从记忆单元到门向量的权重矩阵是对角的,因此门向量的第 m 个元素只接受记忆单元第 m 个元素的输入。
传统 RNNs 的一个缺点是它只能使用之前上下文。在语音识别中,整个话语被一次性转录,没有理由不使用未来上下文。双向 RNN BRNNs 通过两个隐藏层分布处理两个方向的数据上下文实现上述目标,这两个隐藏层信息同时参与构建输出向量。
如图所示,BRNNs 按时间 t 从 0 到 T 的顺序迭代计算前向隐藏层 ,按时间 t 从 T 到 0 的顺序计算后向隐藏层 ,然后更新输出层 y。
使用 LSTM 组合 BRNN 得到 BiLSTM,可处理输入数据两个方向的长距离依赖。
最近成功的混合 HMM 系统的关键要素是使用了深度结构,能够逐渐构建输入数据的更高层级表示。深度 RNN 可通过堆叠多个 RNN 隐藏层构建,每一层的输出序列作为下一层的输入序列。假设所有 N 层使用同样的隐藏层函数,隐藏层向量序列 可迭代地从 t = 1 到 T 与 n = 1 到 N 计算得到。
其中 ,输出 。
深度双向 RNNs 可通过使用前向后向隐藏层 替换隐藏层 h 实现,确保每个隐藏层接收下层前向与后向隐藏层的输入。如果使用 LSTM 做隐藏层,我们得到深度 BiLSTM 模型,即本文主要使用的架构。目前为止,我们注意到这是深度 BiLSTM 第一次用于语音识别,发现与单层 LSTM 相比,其效果提升了相当多。
网络训练
我们集中于端到端训练,RNN 直接学习原声到音素序列的映射关系。这种方法的一个优点是不需要创建训练目标的与定义对齐。第一步是使用网络的输出来参数化差距分布 表示输入原声序列 x 得到可能的音素序列 y 的概率。然后使用目标输出 来优化模型参数。整个系统可用基于随机梯度下降的反向传播方法优化。接下来介绍两种方法定义输出分布并训练网络。我们指 x 的长度为 T,z 的长度为 U,所有可能音素数量为 K。
Connectionist Temporal Classification
第一种方法为联结主义时序分类 Connectionist Temporal Classification CTC,使用 softmax 层定义输出分布 ,表示每个时间步 t 上输出因素 k 的概率。该分布覆盖 K 个因素和一个空符号表示无输出,共 K+1 个输出类型。直观地讲,该网络在每个时间步上决定是否输出某个标签或不输出标签。将所有标签组合起来构成输入数据的标签对齐序列分布。CTC 使用前向算法求和所有可能的对其序列概率,然后基于给定输入序列的目标序列计算归一化概率 。相似的处理过程用于语音或手写识别,聚合所有可能的数据分段。然而 CTC 忽视分段整体结构,只聚合单时间步标签。
训练带 CTC 的 RNNs 通常是双向的,确保每个 依赖整个输入序列,而不只是先于 t 的部分序列。本文关注深度双向网络,其概率 定义为。
其中 是未归一化的输出向量的第 k 个元素,输出向量长度为 K+1。
RNN 传感器
CTC 定义了音素序列的分布,仅依赖输入原声序列 x,因此仅是原声模型。最近有种增强模型为 RNN 传感器,组合类似 CTC 网络和一个分离的 RNN ,用于给定之前位置的音素预测当前位置音素,因此可联合训练原声与语言模型。联合 LM 原声训练在过去的语音识别任务中已证明其有益性能。
由于 CTC 在每个输入时间步上决定一个输出分布,RNN 传感器对每个输入时间步 t 和输出时间步 u 的组合决定一个分离分布 。像 CTC 一样,每个分布覆盖 K 个音素和一个空元素。直观地讲,模型决策其最终输出时,依赖输入序列和意见获得的输出序列。对于长度 U 的目标序列 z,完全集 TU 一起决定所有 x 与 z 的对齐分布,然后可用一种正反向算法决定 logPr(z|x)。
原始公式 的值来自 CTC 网络的原声概率 与预测网络的语言概率 的乘积,并归一化。本文介绍的一种提升思路是,将两个网络的隐藏激活向量输入给分离的前向输出网络,该网络输出用 softmax 函数归一化后得到 。这种方法组合语言和音素信息,带来更丰富的可能性集合,通常具有更强的泛化性。实际上,我们发现解码时遇到的删除误差数量减少了。
使用 表示 CTC 网络最上层的前向、反向隐藏序列,使用 p 表示预测网络隐藏序列。对于每个 t 和 u,输出网络将 喂给线性层生成向量 ,然后将 喂给 tanh 隐藏层生成 ,最后将其输入给 softmax 层得到概率 。
RNN 传感器可用随机初始化的权重训练。然而,其效果在使用 CTC 网络和预测网络的预训练权重时往往更好。网络在预训练时使用的输出层,在训练时被移除。本文在音频训练数据的音素音标上预训练预测网络,而在大规模数据应用上,直接在文本预料上预训练更有意义。
解码
RNN 传感器可用束搜索 Beam Search 来解码,产生 n 个最优的候选音标列表。在过去 CTC 的解码方式有:通过前缀搜索 Prefix Search 的方式解码,或直接通过选择每步最活跃输出解码。然而,本文使用与传感器一样的束搜索 Beam Search,输出标签概率 的修改不依赖之前的输出。我们发现,在 CTC 中与 Prefix Search 相比,Beam Search 即快又效果好。要注意原始传感器的 n 个最好序列是通过长度归一化的对数概率排序的,而本文免除了归一化处理,直接使用对数概率排序。
正则化
正则化对 RNNs 的好性能至关重要,其灵活性能够使模型避免过拟合。本文使用两种正则化方法:提前终止与权重噪声。权重噪声每次在序列上增加,而不是单个时间步。权重噪声通常会简化神经网络,通过减少拟合参数所需的信息量,从而提升泛化性能。
实验
略
总结
本文展示了组合深度双向 LSTM RNNs 模型做端到端训练,并添加权重噪声。该模型在 MITIM 数据集上做音素识别后,得到目前最先进的效果。下一步,一方面要扩展该系统做大词汇量语音识别任务,另一方面要组合频域卷积神经网络和深度 LSTM。