长-短期记忆网络的最大池损失训练用于低资源关键词识别
摘要
我们介绍了我们训练一个低资源LSTM的工作,以便在远场条件下发现关键词“Alexa”。关键词识别性能是使用未命中率和错误接收率来衡量的。
LSTM训练采用了两种损失函数:一种是交叉熵损失,另一种是本文提出的最大池损失。
采用平滑的后验阈值法进行评估。
此外,与交叉熵损失训练的LSTM相比,具有随机初始化网络的最大池损失训练的LSTM性能更好。
我们发现,LSTM总体上比DNN性能更好。最佳LSTM系统使用最大池损失和交叉熵损失预训练进行训练,在低未命中率范围内,AUC数减少了67.6%。即与曲线下面积(AUC)测量中的基线前馈DNN相比,其相对减少67.6%。
研究内容
占用空间小的关键词识别系统越来越受到关注。在CPU和内存较低的情况下准确地在设备上运行关键字识别至关重要[5]。它需要以高召回率运行,使设备易于使用,同时具有低错误接收率,以缓解隐私问题。延迟也必须很低。
传统方法采用隐马尔可夫模型(HMM)对关键字和背景进行建模[6,7,8]。背景包括非关键字语音、或非语音噪声等。这种背景模型在一些文献中也称为填充模型。
近年来,有一些关键词识别系统直接建立在DNN或卷积神经网络(CNN)上,没有HMM参与该系统[10,11,12,13]。上下文信息通过堆叠帧作为输入来处理。一些关键词识别系统直接建立在递归神经网络(RNN)上。但低延迟限制使得双向LSTM原则上不适合。在解码期间,逐帧关键字后验将被平滑。当平滑后的关键字后验值超过预定义阈值时,系统将被触发。通过调整阈值,可以实现平衡错误拒绝和错误接收之间的权衡。
我们专注于使用两种不同的损失函数来训练单向LSTM模型:交叉熵损失和基于最大池的损失[18]。将最大池损失函数应用于关键字识别的LSTM训练是本文的主要贡献。在解码期间,当通过滑动窗口的平均输出平滑的关键字后验值高于阈值时,系统被触发。考虑到实际使用情况,我们设计的关键词识别系统在每次检测后都会锁定一段时间,以避免不必要的错误接收,并降低解码计算成本。
提出的方法&模型架构
如图1所示,Log Mel滤波器组能量(LFBEs)被用作我们的关键词识别系统的输入声学特征。我们在25ms帧上提取20维LFBE,并进行10ms帧移位。LSTM模型用于处理输入的LFBE。我们的系统在输出层有两个目标:非关键字和关键字。关键词识别系统的输出被传递给评估模块(evaluation)进行决策。
Fig. 1. 关键字识别系统
损失函数
对于我们的实验,我们考虑两种不同类型的损失函数:交叉熵损失和最大池损失。
交叉熵损失
交叉熵(xent)已被广泛用作DNN和RNN训练的损失函数[22]。
设K为类的总数。给定一个 T帧序列X = (x1, . . . , xT ),其中Xt是第t个帧的特征向量,第t个帧的交叉熵损失计算如下:
yt = (yt1 , . . . , ytK) 表示用于Xt网络的K维输出,并且设zt = (zt1 , . . . , ztK) 表示相应的目标向量。
目标向量Zt通常使用1-of-K编码。也就是说,如果第t个帧向量Xt与类k对齐,则Zt对于第k个元素具有值1,而所有其他元素为0。让kt†表示第t个帧的对齐类。第t个帧的交叉熵损失可以表示为
那么整个T帧序列的交叉熵损失为:
最大池化损失
我们建议使用基于最大池的损失函数来训练LSTM进行关键字识别。
鉴于LSTM有能力建模长上下文信息,我们假设不需要教LSTM触发关键字段中的每一帧。一种简单的方法是仅从最后一帧或最后几帧反向传播损耗,以更新权重。
但我们的初步实验表明,LSTM并没有从这个方案中学到太多东西。因此,我们采用了一个基于最大池的损失函数,让LSTM选择信息量最大的关键字帧来自学。最大池损失可以看作是在关键字识别模型训练中从帧级损失到段级损失的过渡。可供选择的段级损失函数包括,例如几何平均值等。
LSTM被添加到CNN层的顶部,其中具有池化的CNN层用于提取特征作为LSTM输入,LSTM的输出用于预测。
对于T输入帧X = (x1, . . . , xT ),输入序列X的最大池损可计算为
如果内部有P个关键字实例,我们使用lp表示一个连续的帧索引范围,其帧与第p个关键字对齐。因此,对于lp中的所有帧,K维目标向量zp 是相同的。
设L = (l1, . . . , lP )表示X中所有P关键字实例的帧索引范围的集合,而表示未与任何关键字对齐的剩余帧的所有索引的集合(即背景帧索引)。我们使用kp†表示lp内帧的目标标签,lp†表示lp内特定的一帧,其kp†的后验值为最大值。
第一项说明,我们计算未与任何关键字对齐的输入帧的交叉熵损失。第二项显示了我们如何为关键字对齐的帧进行最大池化。更详细地说,对于第p段(索引范围lp)的帧,它们与关键字kp†对齐。我们只对单个帧(索引lp†)进行反向传播,该帧的目标kp†的后验值在当前段lp中的所有帧中最大,并丢弃当前段中的所有其他帧。
最大池化损失的概念如图3所示,其中填充帧与关键字对齐,空帧用于背景。给定一个帧的输入序列,在每个关键字段内,只保留对应关键字目标具有最大后验值的帧,而丢弃同一关键字段内的所有其他帧。并保留了所有的背景帧。
Fig. 3. 关于最大池化损失的想法
我们考虑了基于最大池损失的LSTM训练的两种情况:一个从随机初始化模型开始,另一个使用交叉熵损失预训练模型。
在随机初始化的模型中,基于LSTM训练的最大池损失在最初的几个阶段可能无法很好地学习,因为最初的几个阶段具有相当随机的触发关键字。
想法是利用交叉熵和最大池损失训练的优点。以交叉熵训练的LSTM作为初始模型开始最大池训练,它已经学习了一些关于目标关键字的基本知识。这可以提供更好的初始化点,更快地收敛到更好的局部最优。
评估方法
我们考虑了一种基于后验平滑的评价方案。
为了检测关键字,给定输入音频,系统基于包含Nctx帧的滑动上下文窗口计算平滑后验概率。当关键字的平滑后验值超过预定义阈值时,这被视为触发峰值。
该系统被设计Nlck帧用于关闭。这种长度Nlck的锁定周期是为了减少同一关键字段中不必要的重复检测,以降低解码计算成本。
对于我们的用例,我们允许在每个关键字段之后使用Nlat帧进行一个短的延迟。也就是说,如果系统在关键字段之后的nlat帧窗口内触发,我们仍然认为触发与相应的关键字对齐。此延迟窗口不会在感知上引入显著延迟,并且可以缓解评估中关键字对齐边界不准确的可能问题。
最后,在每个关键字段加上延迟窗口内的第一个触发峰值被视为有效检测。
在同一关键字段加上延迟窗口内,或任何关键字段加延迟窗口外,的任何其他触发峰值都被视为错误接收。
有两个指标用于衡量系统性能:未命中率(1减去召回率)和错误接收率(错误接收率是错误接收的标准化值)。
Fig. 4. 评价方法的说明
图4展示了我们评估方法的想法。例如,有两个输入音频流。关键字段的长度取决于关键字的发音方式。每个关键字段后面都有一个固定长度的延迟窗口。关键字段由具有垂直线填充的块进行标记,而后续延迟窗口由具有水平线填充的块进行标记。根据设计,每次触发后都有一个系统锁定期。
对于第一个音频,有两个错误接收(FAs),均为:系统在任何关键字段加延迟窗口之外的区域触发。正确接收(TAs)发生作为每个关键字段的第一个检测加上延迟窗口。正确接收可以发生在关键字段中,也可以发生在下面的延迟窗口中。
对于第二个音频,错误接收会在同一个关键字段加上延迟窗口内出现额外的触发峰值,该窗口已经有了正确接收。
对于我们的系统,我们使用30帧(Nctx=30)进行后验平滑,40帧(Nlck=40)作为锁定周期,20帧(Nlat=20)作为每个对齐唤醒字段后允许的延迟窗口长度。
文章贡献
我们提出了一种基于最大池的损失函数,用于训练长短时记忆(LSTM)网络,以实现占用空间小的关键字识别(KWS),并具有较低的CPU、内存和延迟要求。
通过(具有交叉熵损失训练网络的)初始化,可以进一步指导最大池损失训练。
采用基于后验平滑的评价方法来衡量关键词识别性能。
我们的实验结果表明,使用交叉熵损失或最大池损失训练的LSTM模型优于交叉熵损失训练的基线前馈深度神经网络(DNN)。
数据集
在我们的实验中,选择单词“Alexa”作为关键词。我们使用一个内部的远场语料库,它包含在不同条件下收集的远场数据。该数据集包含的关键词和背景语音实例比之前最大的训练和测试研究[10,12]多出一个数量级。我们的数据是在远场环境中收集的,本质上这是一项更具挑战性的任务。考虑到我们语料库的巨大规模,开发集(development set)划分足以调整参数,测试集划分足够大,足以显示强大的统计差异。
结果
因为我们只针对一个关键字“Alexa”,所以我们的实验使用了一个二进制目标集。背景帧的目标标签为0,而与关键字对齐的帧的目标标签为1。基于[10]中描述的模型结构和训练,我们训练前馈DNN模型作为基线,并对我们的实验设置和用例进行了一些调整。我们将其与用交叉熵损失和最大池损失训练的LSTM模型进行了比较。
模型训练
我们的实验使用了[26]中描述的基于GPU的分布式训练器。我们的模型训练采用了一个基于性能的学习率计划。更详细地说,对于每个训练epoch,如果开发集上的损失与上一个epoch相比下降,则学习率减半,重复当前epoch来降低学习率。当达到最小的学习率(对于我们的案例,初始学习率的系数为0.58)或达到了epochs的最大数(我们将训练限制为20个epoch)时,训练过程终止。初始学习速率和批量大小根据开发集进行调整。
基线前馈DNN有四个隐藏层,每个隐藏层有128个节点。Sigmoid函数用作激活函数。左侧20帧和右侧10帧的堆栈被用来形成一个输入特征向量。请注意,正确的上下文不能太大,因为它会引入延迟。 DNN模型总共有∼129K个参数。DNN采用分层预训练。DNN训练的初始学习率为0.0005,批量大小为256。
对于具有不同损失函数的LSTM训练,我们使用一层具有64个存储块的单向LSTM和一个32维的投影层。这是为了实现低CPU和内存,以及低延迟。对于输入上下文,我们考虑左边的10个帧和右边的10个帧。注意,我们仍然使用10帧作为LSTM输入的左上下文,尽管LSTM根据定义学习过去帧的信息。通过这样做,我们的DNN和LSTM训练设置可以更好地对齐以进行比较,并且过去的信息进一步强加于LSTM训练。我们的LSTM有~118K个参数。对于随机初始化,权重为LSTM参数以均匀分布U[−0.2,0.2]进行初始化,偏差为常数0.1。对于交叉熵损失、随机初始化模型的最大池损失和交叉熵预训练模型初始化的最大池损失的情况,初始学习率选择为0.00001、0.00005和0.00005。
系统性能
我们在测试数据集上使用第2.3节中描述的评估方法。DNN和LSTM模型的性能如图5所示。
Fig. 5. DNN和LSTM模型的性能
我们在低未命中率范围内绘制检测(DET)曲线,例如,≤ 20%的这种情况。在这里,错误接收率是通过标准化(具有测试数据话语的总数的)错误接收计数。x轴标记错误接收率和y轴标记未命中率。数字越低,性能越好。
由于保密原因,本文模糊了虚假接收的绝对数量。相反,我们绘制了一个乘法常数的错误接收率。在我们的实验中考虑的错误接收范围与可考虑用于生产部署目的的低值范围一致。
在选定的低未命中率范围内,LSTM模型的性能优于基线前馈的DNN。就LSTM训练的不同损失函数而言,随机初始化的最大池损失优于交叉熵损失。使用最大池损失和交叉熵损失预训练的LSTM得到最好的结果。
我们计算曲线下面积(AUC)数,用于不同模型的定量比较。AUC是根据DET曲线计算的,因此越低越好。
表1。与基线前馈DNN相比,LSTM模型的AUC相对变化。AUC越低,性能越好。
表1总结了LSTM模型与基线DNN相比的AUC相对变化。我们的实验结果表明,在≤ 20%的低未命中率范围内,与交叉熵损失训练的基线DNN相比,交叉熵损失训练的LSTM导致AUC相对降低34.4%。使用随机初始化的最大池损训练的LSTM模型进一步显示AUC相对减少48.2%。最佳性能来自使用最大池损失和交叉熵预训练的LSTM,与基线DNN相比,其AUC降低67.6%。