会议:2016 IEEE口语技术研讨会(SLT)
论文:Max-pooling loss training of long short-term memory networks for small-footprint keyword spotting
作者: Ming Ming,Anirudh Raju,George Tucker,Sankaran Panchapagesan,Gengshen Fu,Arindam Mandal,Spyros Matsoukas,Nikko Strom,Shiv Vitaladevuni

Abstract

我们提出了一种基于最大池的损失函数,用于训练长短期内存(LSTM)网络以实现占用空间少的关键字发现(KWS),低CPU,内存和延迟要求。可以通过使用交叉熵损失训练网络进行初始化来进一步指导最大池损失训练。采用基于后验平滑的评估方法来衡量关键字发现效果。我们的实验结果表明,使用交叉熵损失或最大池损失训练的LSTM模型优于交叉熵损失训练的基线前馈深度神经网络(DNN)。此外,与经过交叉熵损失训练的LSTM相比,具有随机初始化网络的最大池损失训练的LSTM性能更好。最后,通过交叉熵预训练网络初始化的经过最大池损耗训练的LSTM显示了最佳性能,

Introduction

数十年来,关键字搜寻一直是活跃的研究领域。已经提出了不同的方法来检测语音中感兴趣的单词。一种解决方案是,使用通用的大词汇量连续语音识别(LVCSR)系统对音频信号进行解码,然后在生成的网格或混淆网络中进行关键字搜索[1] – [2] [3] [4]。这些方法需要相对较高的计算资源用于LVCSR解码,并且还会引入延迟。

小巧的关键词发现系统已日益引起人们的关注。语音助手系统(例如Amazon Echo上的Alexa)在设备上部署了关键字查找系统,并且仅在设备上检测到关键字时才将音频流传输到云以进行LVCSR。对于此类应用程序,在CPU和内存较低的情况下准确运行设备上的关键字发现至关重要[5]。它需要以较高的召回率运行,以使设备易于使用,同时具有较低的错误接受率,以缓解隐私问题。延迟也必须低。传统方法采用隐马尔可夫模型(HMM)对关键字和背景进行建模[6] – [7] [8]。背景包括非关键字语音或非语音噪声等。在某些文献中,该背景模型也称为填充模型。它可能涉及到简单的语音/非语音电话的循环,对于更复杂的情况,可能涉及普通电话机或令人困惑的单词集。维特比解码用于在解码图中搜索最佳路径。可以基于关键词模型和背景模型的似然比较来做出关键词发现决策。过去通常使用高斯混合模型(GMM)对观察到的声学特征进行建模。随着DNN成为声学建模的主流,通过合并混合DNN-HMM解码框架,该方法可以扩展为包含判别信息[9]。

近年来,有直接建立在DNN或卷积神经网络(CNN)上的关键词发现系统,而系统中没有HMM参与[10] – [11] [12] [13]。在解码期间,将平滑逐帧关键字后验。当平滑的关键字后验超过预定义的阈值时,将触发系统。平衡错误拒绝和错误接受之间的权衡可以通过调整阈值来执行。通过堆叠帧作为输入来处理上下文信息。一些关键字查找系统直接建立在递归神经网络(RNN)上。特别是,当延迟不是硬约束时,双向LSTM用于在音频流中搜索关键字[14] – [15] [16][17]。

我们对运行在低CPU和内存利用率,低延迟下的小尺寸关键字发现系统感兴趣。这种低等待时间的限制使双向LSTM原则上不适合。相反,我们专注于使用两个不同的损失函数训练单向LSTM模型:交叉熵损失和基于最大池的损失[18]。将最大池损失函数应用于LSTM训练中以进行关键字识别是本文的主要贡献。

在解码期间,通过平均滑动窗口的输出而使关键字后验平滑的阈值以上时,将触发系统。考虑到实际使用情况,我们的关键字识别系统设计为在每次检测后锁定一段时间,以避免不必要的错误接受并减少解码的计算成本。

本文的其余部分安排如下:第2节介绍了基于LSTM的关键字发现系统,其中包括LSTM模型,训练损失函数和性能评估细节。实验设置和结果包含在第3节中。第四部分是结论和未来的工作。

System Overview

如图一所示,对数梅尔滤波器组能量(LFBE)用作我们的关键字搜索系统的输入声学特征。我们在25ms的帧中提取20维LFBE,并以10ms的帧偏移。LSTM模型用于处理输入LFBE。我们的系统在输出层中有两个目标:非关键字和关键字。关键字发现系统的输出将传递到评估模块以进行决策。

2.1. LSTM
与前馈DNN网络不同,RNN包含循环连接,可用于对顺序数据进行建模。这使得RNN很自然地适合对连续语音帧中的时间信息进行建模。但是,传统的RNN结构遭受梯度消失的困扰,这使它们无法有效地对数据中的长上下文进行建模。为了克服这个问题,LSTM包含存储块[19]和[20]。每个块包含一个或多个存储单元,以及输入,输出和忘记门。这三个门控制相关存储块内的信息流。有时,在LSTM输出的顶部会添加一个投影层,以降低模型的复杂性[21]。图中显示了带有投影层的典型LSTM组件图2。为了清楚起见,此处显示了一个LSTM块。

细节略~

2.2. Loss Functions
对于我们的实验,我们考虑两种不同类型的损耗函数:交叉熵损耗(Cross-Entropy)最大池损耗(Max-Pooling)。细节略~

最大池损耗的概念如图3所示,其中实心框与关键字对齐,而空框用于背景。给定帧的输入序列,在每个关键词片段内,仅保留具有对应关键词目标的最大后验的帧,而丢弃相同关键词片段内的所有其他帧。保留所有背景框。

我们考虑基于LSTM训练的最大池损失的两种情况:一种是从随机初始化的模型开始,另一种是使用交叉熵损失的预训练模型。使用随机初始化的模型,基于最大池损耗的LSTM训练在前几个时期可能会因关键字触发而学习得不好。这个想法是要利用交叉熵和最大池损耗训练的优势。通过交叉熵训练的LSTM作为开始最大池训练的初始模型,它已经学习了有关目标关键字的一些基本知识。这样可以提供更好的初始化点,并更快地收敛到更好的局部最优值。

2.3. Evaluation Method
我们考虑基于后验平滑的评估方案。为了检测给定输入音频的关键字,系统基于包含Nctx帧的滑动上下文窗口计算平滑后验。当关键字的平滑后验超过预定义阈值时,这被视为触发峰值。该系统旨在关闭以下Nlck帧。长度为Nlck的该锁定时段是为了减少在相同关键词段期间不必要的重复检测以及减少解码计算成本的目的。

对于我们的用例,我们在每个关键字段之后允许Nlat帧的较短延迟时间。也就是说,如果系统在关键字段之后立即在Nlat-frame窗口内触发,我们仍会认为触发与相应的关键字对齐。此等待时间窗口不会在感知中引入明显的延迟,并且可以缓解评估中关键字对齐边界不准确的可能问题。

最后,每个关键字段加上等待时间窗口内的第一个触发峰值被视为有效检测。同一关键字段加上延迟时间窗口内或任何关键字段加上延迟时间窗口之外的任何其他触发峰值都被视为错误接受。有两个指标可用来衡量系统性能:未命中率(即一个微小的召回率)和错误接受率(是错误接受的归一化值)。

图4说明了我们评估方法的想法。例如,有两个输入音频流。关键字段的长度随关键字的发音方式而变化。每个关键字段后面都有一个固定长度的等待时间窗口。关键字句段用垂直线填充的块标记,而后续等待时间窗用水平线填充的块标记。根据设计,每个点火峰值后都有系统锁定期。对于第一个音频,在任何关键字段之外的区域中都有两个错误接受(FA),并且系统在任何关键字段外加延迟窗口。真正接受(TA)发生在每个关键字细分加上等待时间窗口中的第一次检测。真正的接受可能发生在关键字段中,也可能出现在以下延迟窗口中。对于第二个音频。

对于我们的系统,在每个对齐的唤醒字段之后,我们使用30帧(Nctx = 30)进行后平滑处理,使用40帧(Nlck = 40)作为锁定周期,并使用20帧(Nlat = 20)作为允许的等待时间窗口长度。

Experimental Results

对于我们的实验,选择单词“ Alexa”作为关键字。我们使用内部的远场语料库,其中包含在不同条件下收集的远场数据。该数据集包含的关键词和背景语音发声实例比培训和测试方面最大的先前研究[10],[12]多一个数量级。我们的数据是在远场环境中收集的,这本质上是一项更具挑战性的任务。考虑到我们的语料库很大,开发集分区足以调整参数,而测试集分区足够大以显示出很强的统计差异。

由于我们仅针对一个关键字“ Alexa”定位,因此我们的实验使用了二进制目标集。背景框架的目标标签为0,而与关键字对齐的框架的目标标签为1。我们根据模型结构和[10]中所述的训练,将前馈DNN模型作为基线进行训练,并对我们的实验设置和使用进行了一些调整案件。我们将其与经过交叉熵损失和最大池损失训练的LSTM模型进行比较。

3.1. Model Training
在我们的实验中使用了[26]中描述的基于GPU的分布式训练器。基于性能的学习率时间表用于我们的模型训练。详细地讲,对于每个训练时期,如果开发集合的损失与前一个时期相比降低,则学习率减半,并且以降低的学习率重复当前时期。当达到最低学习率(对于我们的情况,是初始学习率的0.5的8次方倍)或达到最大纪元数(我们将培训限制为20个纪元)时,训练过程就会终止。初始学习率和batch大小根据开发集进行调整。

基线前馈DNN具有四个隐藏层,每个隐藏层具有128个节点。乙状结肠功能用作激活。左侧20帧和右侧10帧的堆栈用于形成输入特征向量。请注意,正确的上下文不能太大,因为它会引入延迟。 DNN模型总共有约12.9万个参数。 DNN使用分层预训练。 DNN训练的初始学习率为0.0005,batch为256。

对于具有不同损失函数的LSTM训练,我们使用具有64个内存块和尺寸为32的投影层的单向LSTM的单层。这样做的目的是降低CPU和内存的消耗以及降低延迟。对于输入上下文,我们考虑左侧10帧,右侧10帧。请注意,尽管LSTM通过定义学习过去的帧信息,但我们仍将10帧用作LSTM输入的左上下文。通过这样做,我们的DNN和LSTM培训设置可以更好地进行比较,从而为LSTM培训提供了更多信息。我们的LSTM具有〜118K参数。对于随机初始化,LSTM参数使用权重的均匀分布U [-0.2,0.2]初始化,而偏置使用常数0.1初始化。对于交叉熵损失,使用随机初始化模型的最大池损失和使用交叉熵预训练模型初始化的最大池损失的情况,初始学习率选择为0.00001、0.00005和0.00005。

3.2. System Performance
我们在测试数据集上使用第2.3节中描述的评估方法。DNN和LSTM模型的性能如图5所示。

我们在低失误率范围内绘制检测(DET)曲线,即 ≤ 20 %对于这种情况。在这里,错误接受率是通过将错误接受计数与测试数据发音总数进行标准化来计算的。x轴标记错误接受率,y轴标记未命中率。较低的数字表示性能较好。蓝色实线代表使用交叉熵损失训练的基线前馈DNN。使用交叉熵损失,随机初始化的最大池损失和交叉熵预训练的最大池损失训练的LSTM模型分别用绿色虚线,红色虚线和青色虚线表示。由于保密原因,本文掩盖了错误接受的绝对数量。取而代之的是,我们将错误接受率绘制为一个乘法常数。

在选定的低未命中率范围内,LSTM模型的性能优于基线前馈DNN。就LSTM训练的不同损失函数而言,随机初始化的最大池损失优于交叉熵损失。使用最大池损耗和交叉熵损耗预训练对LSTM进行训练可获得最佳结果。我们计算曲线下面积(AUC)数以进行不同模型的定量比较。根据DET曲线计算AUC,因此越低越好。表1总结了LSTM模型相对于基准DNN的AUC的相对变化。我们的实验结果表明,≤ 20 %与交叉熵损失训练的基准DNN相比,错失率范围低,交叉熵损失训练的LSTM导致AUC相对减少34.4%。使用最大池损耗和随机初始化训练的LSTM模型进一步显示AUC相对降低了48.2%。最佳性能来自使用最大池损耗和交叉熵预训练进行训练的LSTM,与基准DNN相比,AUC降低了67.6%。

Conclusion and Future Work

我们介绍了训练小型LSTM以便在远场条件下发现关键字“ Alexa”的工作。LSTM训练使用两种损失函数:一种是交叉熵损失,另一种是本文提出的最大池损失。平滑后阈值方法用于评估。关键字发现效果是使用未命中率和错误接受率来衡量的。我们证明LSTM通常比DNN表现更好。最好的LSTM系统是使用最大池损耗和交叉熵损耗预训练来训练的,在低丢失率范围内,AUC值减少了67.6%。

为了将来的工作,我们计划在基于最大池损耗的LSTM训练中增加权重,即缩放所选关键字帧的反向传播损耗。有趣的是,看看是否可以通过更改模型结构来进一步提高LSTM性能,例如,在LSTM组件的顶部添加其他前馈层。我们还计划将最大合并损失性能与其他分段级别损失函数进行基准比较,例如,在我们的关键词发现实验中,每个关键词片段内的逐帧关键词后验,CTC等的几何均值。

(KWS-LSTM)Max-pooling loss training of long short-term memory networks for small-footprint keyword s相关推荐

  1. 有哪些LSTM(Long Short Term Memory)和RNN(Recurrent)网络的教程?

    知乎用户,阿里巴巴数据应用部门长期招聘「算法,分- 500 人赞同 刚好毕设相关,论文写完顺手就答了 先给出一个最快的了解+上手的教程: 直接看theano官网的LSTM教程+代码:LSTM Netw ...

  2. 递归神经网络变形之 (Long Short Term Memory,LSTM)

    1.长短期记忆网络LSTM简介 在RNN 计算中,讲到对于传统RNN水平方向进行长时刻序列依赖时可能会出现梯度消失或者梯度爆炸的问题.LSTM 特别适合解决这种需要长时间依赖的问题. LSTM(Lon ...

  3. HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法

    2019独角兽企业重金招聘Python工程师标准>>> HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法 在 ...

  4. 详细讲解RNN+LSTM+Tree_LSTM(Tree-Long Short Term Memory)基于树状长短期记忆网络

    14天阅读挑战赛 详细讲解RNN+LSTM+Tree_LSTM(Tree-Long Short Term Memory)基于树状长短期记忆网络 一.RNN 要讲解Tree_LSTM,这必须得从RNN开 ...

  5. python HTTPConnectionPool(host:XX)Max retries exceeded with url

    python 出现HTTPConnectionPool(host:XX)Max retries exceeded with url问题 在每次数据传输前客户端要和服务器建立TCP连接,为节省传输消耗, ...

  6. 简单聊聊Long Short Term Memory Network (LSTM)和 Gated Recurrent Unit (GRU)两种强大的RNN变体

    上一篇关于RNN的文章最后,我们提到过由于梯度消失和梯度爆炸问题,使得RNN很难处理长距离的依赖.本文我们介绍两种改进后的RNN:LSTM(Long Short Term Memory Network ...

  7. LSTM(long short term memory)长短期记忆网络

    bags of word(WOE) 它的基本思想是假定对于一个文本,忽略其词序和语法.句法,仅仅将其看做是一些词汇的集合,而文本中的每个词汇都是独立的 循环神经网络(recurrent neural ...

  8. Keras 之 LSTM 有状态模型(stateful LSTM)和无状态模型(stateless LSTM)

    目录 1. 区别 2. 例子 3. 疑问解答 4. 实战 1. 实例1:官方的example--lstm_stateful.py 2.  实例2:用Keras实现有状态LSTM--电量消费预测 3.  ...

  9. 损失函数与正则项(惩罚项),多loss间权重设计

    目录 正则项(惩罚项) 正则项(惩罚项)的本质 机器学习为什么需要正则项 常见惩罚项:参数范数惩罚.稀疏表征.噪声.早停.dropout等 参数范数惩罚 L0范数惩罚 L1范数惩罚(参数稀疏性惩罚) ...

  10. 人脸识别系列(十五):COCO Loss

    论文链接:Rethinking Feature Discrimination and Polymerization for Large-scale Recognition 这篇文章其实和NormFac ...

最新文章

  1. IRNet:弱监督实例分割 | 步步为营,隔山打牛
  2. OSChina 周三乱弹 —— 你是靠自己努力才失败的
  3. linux将一个文件的内容复制到另一个新的文件
  4. Android中添加自己的模块 【转】
  5. 哈工大期末考试java_哈尔滨工业大学2019算法设计期末试题
  6. php pack方法,php pack()函数详解与示例
  7. 多项目加载顺序修改_面试官:Java 类在 Tomcat 中是如何加载的?
  8. Mendeley如何设置某期刊对应的参考文献格式?
  9. 【计算机网络】信源编码——香农三大定理
  10. [python 学习笔记] openpyxl -- excel样式设置 冻结窗格
  11. android 屏幕自动滚动效果,Android滑动屏幕效果
  12. ibm3400服务器改win7系统,dell3578win10改win7系统bios如何设置_戴尔win10改win7系统bios设置步骤...
  13. 微信个人收款码于订单应用之解决方案
  14. 【机器学习】数值分析01——绪论及误差分析
  15. arduino与hcsr04_超声波传感器HC-SR04和Arduino进行距离计算
  16. SPARK Your Embedded Development Project with eBox-4300 Windows Embedded CE 6.0 R2 Jump Start Kit
  17. 英语单词之神祠aesthetic
  18. java SE 教程 10
  19. 如何构建一个成功的期权交易系统?
  20. XHCI注册过程和设备接入识别

热门文章

  1. MAC OS升级记录
  2. Data too long for column ‘xxxx‘ at row 1 解决办法
  3. 灵性图书馆:好书推荐-《荷欧波诺波诺的幸福奇迹》
  4. Sublime Merge中文版
  5. leetcode刷题方法
  6. 音频信号处理——DTW
  7. [Azure][Event hub]Kafka无法同时连接到同一个namespace下的两个Event hub
  8. React:开发者工具谷歌插件下载安装
  9. AttributeError: module ‘tensorflow_core._api.v2.config‘ has no attribute ‘run_functions_eagerly‘
  10. 朗道十卷《力学》笔记(更新中)