Convolutional Neural Networks for Small-footprint Keyword Spotting论文笔记

本文主要是介绍Convolutional Neural Networks for Small-footprint Keyword Spotting论文笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本人翻译得不是很好,有问题可以互相交流

CNN被证明优于DNN,因为参数少得多。在这里考虑两种限制,一种是限制乘法次数,另一种是限制参数数量。使用CNN框架时,发现相较DNN,在这些限制的情况下,false reject rate改进了27%至44%。

由于运行在移动设备上,因此必须具有较小的内存占用和较低的计算能力。目前谷歌的KWS系统使用DNN,优于HMM。而且DNN在设备上运行,可以通过改变网络中的参数数量,很容易地调整模型大小。CNN在过去几年里已经成为声学模型的热门,在各种语音相关的任务(索引中的任务4 5 6 )里比DNN也更好。

CNN表现比DNN好有几点原因。
1、DNN忽略了input topology(输入拓扑),输入可以按任意(固定)顺序程序,而不影响网络的性能[3],然而,语音的频谱表示在时间上和频率上有很强的相关性,并且通过输入空间的局部区域共享的权重,来用CNN建模局部相关性,已经证明在其他领域[7]有优势。
2.DNN并没有明确地设计成对语音信号中的translational variance(平移方差)进行建模,这种方差可能是由于说话风格[3]不同而存在的。更具体地说,不同的说话风格导致在频域中,formants被移动。这些说话风格要求我们应用各种说话人适应技术来减少特征的变化。虽然啊足够大的DNN确实可以捕获translational invariance,但需要有大量训练示例的大型网络。而CNN可以通过平均(average)隐藏单元在不同的局部时间和频率区域的输出,从而使用更少的参数来捕获。

在论文4 5 6中均证明CNN的KWS比DNN性能好、模型更小。这篇论文中,会看CNN应用到KWS的两种应用。1、我们考虑限制整体计算量的问题,即参数和乘法。这样的限制下,论文8中CNN只有频率的池化,这样的典型架构不能在此使用。因此,我们介绍一种新颖的CNN架构,不池化,但在频域strides the filter,来达到计算约束。2、我们考虑限制系统的整体参数数量。对于这个问题,我们可以通过在时域和频域上池化来提升性能,这是第一次被证明对语音有效,而不使用多个卷积块[5,9].

此论文中的KWS,有14个不同短语组成,来评估这个CNN架构。衡量性能的好坏是通过每小时1次false alarm(FA)操作阈值下观察false reject rate(FR)。这个任务限制乘法数,我们发现CNN在频率上stride filter,FR比在DNN上改善了27%。限制参数的条件下,在时域上池化时,CNN比DNN的FR改善了41%,只在频域上池化时,改善了6%。

如图1所示,DNN的系统由3个部分组成。1、特征提取。每25ms计算一次40维的梅尔滤波器组特征,帧移是10ms。接下来的每一帧中,向左叠加23帧,右叠加8帧,然后输入DNN网络。2、DNN网络。3个隐藏层,每层128个隐藏元,和一个softmax层。每层隐藏层都使用ReLU函数。输出目标是关键词的个数+1,1代表不属于任何一个关键词。对网络的权值进行训练,利用分布式异步梯度下降和交叉熵函数去优化。3、后验处理模块。将来自DNN的单个帧级后验分数组合成与关键词对应的单个分数。对于三部分想进一步了解,可读论文2.
在这里插入图片描述

使用CNN代替DNN,其他两个部分不变。典型的CNN结构如图2所示。1、输入信号V是t×f,t和f分别是在时域和频域各自的输入特征维数。权值矩阵W,是(m×r)×n,与full input V进行卷积。权重矩阵跨越大小为m×r的小的局部的时频块,其中m<=t,r<=f。这种权重共享有助于模拟输入信号中的局部相关性。权重矩阵有n个隐藏单元(即特征映射)。filter的步长在时域是非零的s和频域的p。因此,总体上,卷积运算产生n个大小为的特征映射。(t-m+1)/s × (f-r+1)/v.

卷积后,最大池化层有助于消除由于说话风格、信道失真等原因而存在的在时频空间上的可变性。给定池化大小为p×q,池化执行sub-sampling(次采样操作)去减少时频空间。为达到本文的目的,我们考虑non-overlapping pooling(不重叠层),因为在8中没有证明对于语音有帮助。经过池化后,时频空间有为数((t-m+1)/(s·p))×((f-r+1)/(v·q))。
在这里插入图片描述

一个典型的卷积结构已经被强有力地测试证明对于许多LVCSR任务有很好的作用(在6和11中体现),是使用两个卷积层。假设输入到CNN的log-mel是t×f=32×40,然后通常第一层的filter在频域上r=9,这个架构filter的大小对时域上没那么敏感,通常选择大小是输入的三分之二,那么这里m=20。卷积乘法是通过步长s=1和v=1,然后,只执行频率上的不重叠的最大池化层,q=3。第二个卷积filter的大小是r=4,没有最大池化被执行。

比如,我们希望参数低于250K,如图1所示的结构比较典型。本文中,将这种架构称为cnn-trad-fpool3。这个架构有两个卷积层,一个linear low-rank(线性低秩层),一个DNN层。但这种架构有一个主要问题,在卷积层大量乘法,由于三维输入,跨时间、频率和特征映射,在第二层中就加剧了问题。但在乘法限制的small footprint的KWS不可行。即使我们的应用被参数限制而不被乘法限制,在时间上池化的其他结构会更适合KWS。接下来我们介绍代替CNN架构以解决限制参数或乘法的任务。
在这里插入图片描述
第一个待解决的问题是找到合适的CNN架构,使乘法数限制在500K。经过实验了好多个架构,一个解决限制乘法数的方案是不用两个卷积层,而是一个卷积层,并且在时域上始终有filter。卷积层的输出传递给linear low-rank层,然后两层DNN。如表2所示,这种只有一个卷积层的称作cnn-one-fpool3。为简单起见,从表中我们忽略了s=1,v=1。经过这样的改造,乘数减少了10倍。
在这里插入图片描述
在频率的池化q=3需要步长v=1的filter,这也增加了乘数。因此,我们比较了不在频率上池化但有filter的架构。表3展示了CNN架构-频率filter的r=8,步长v=4(即百分之50重叠),以及v=8(无重叠)。分别叫cnn-one-fstride4,cnn-one-fstride8。为简单起见,省略了线性层和DNN层。表3表示,如果用步长filter的v>1,乘数减少了,因此可以提高隐藏层单元n数量增加到表2中cnn-one-fpool3的架构。
在这里插入图片描述
3.4 Limiting Parameters
当保持乘数固定,参数数量仍然远小于250K。然而,增加参数数量又往往会提高更多。我们希望设计一个模型,在保证参数固定的同时,但允许乘数变化。在本节,探索与cnn-trad-fpool3架构不同,限制模型大小250K但不限制乘法数。

一种方法是增加feature maps(特征映射)。如果我们想要提高特征映射但又保持参数固定,我们必须在时域和频域上探索采样。监狱我们已经在cnn-trad-fpool3中在频域上池化了,在这个部分,我们会在时域上探索sub-sampling(子采样)

在4和8这样的声学模型上已经探索了时域上传统的池化,但是没有表现出很大优势。我们的原理是,在声学建模部分,我们想要分类的子词单元(即上下文相关状态)发生在非常短的时间内(即10-30ms)。因此,在时域上池化效果不好。然而,在KWS系统中的关键词单元发生的事件要长得多(即50-100ms),因此,我们探索如果我们提升cnn-trad-fpool3通过在时域中对信号进行sub-sampling(次采样),无论是通过stide还是pool。在时域上pool是有用的,当使用多个卷积子网络【5,9】时。然而,这种方法提高了参数数量并且对于KWS任务来说计算昂贵。据我们所知,这是第一次用更长的声学单元探索在时域上的卷积子网络。

3.4.1stride in time
首先,比较在卷积中时域filter的步长s>1的架构们。表4体现了时域filter的s变化的不同CNN架构。为了简化,忽略DNN层和在实验中不变的常量,即频域步长v=1和时域池化p=1.注意到,当我们提高时域上filter的步长,能增加特征映射n的大小,使参数总数保持不变。我们希望在时域上的次采样不会降低性能,同时增加特征映射提高性能。
在这里插入图片描述
3.4.2 pooling in time
一种可替代stride the filter in time的方法是pool in time,通过一个non-overlapping amount。表5中展现了配置,通过在时域上池化,可以提高n,以保持参数总数不变。
在这里插入图片描述
为了比较CNN和DNN的KWS,选了14个短语以及有10K到15K的语音,这些语音包含这14个短语。又找了大约396K的语音,不包含任何关键词。训练:验证:测试=80:5:15。然后创建噪声的训练和测试集,通过在[-5db,10db]之间随机采样的信噪比加入汽车和自助餐厅的噪声到干净数据中。模拟噪声条件,并在干净语音和有噪音语音条件下评估。这个KWS的性能评估是通过绘制ROC(接收机工作曲线),这个曲线计算了每个虚警速率的假拒绝率。这个值越低越好。选择系统的阈值是为了在这个语音集上应对每小时的1FA.
在这里插入图片描述

首先,分析了典型的CNN体系结构。比较了不池化时p分别等于1,2,3,其他常数保持不变。图3的a和b一个是干净语音,一个是有噪声语音。p=3的时候饱和了。这与8中观察的结果一致。且在FA per hour = 1的时候,相对DNN,改善超过了41.接下来比较当约束乘法和参数时,CNN和DNN的性能。

5.2. Limiting Multiplies
首先,限制乘法数量到500K.如图4所示。表现最好的cnn-one-fstride4,在频域上的步长重叠为百分之五十,但在频域不池化。比fstride8更好,8有一个不重叠的步长。而且,比在频域上池化的fpool3更好。虽然在频域上池化是有帮助的,如图5所示,但是计算昂贵,因此我们必须大大减少特征映射以限制计算。因此,在乘法数有限制的条件下,首选就交叠步长的filter CNN架构。fstride4在干净和噪音的条件下比DNN表现的好27%和9%。
在这里插入图片描述

5.3. Limiting Parameters
最好表现的是cnn-trad-fpool3。图5所示,所有在时域上有步长的表现更差,没有步长的更好。比较图6中,cnn-tpool2,即p=2,是表现最好的系统。这些结果表明,在次采样之前,在时域上池化,相当于在相邻帧之间建立了关系,更好,比先验选择哪一个相邻帧进行滤波的时间步长更有效。此外,在预测长关键字单位时,比cnn-trad-fpool3在干净数据有6%的相对改善,但在噪声方面具有与cnn-trad-fpool3相似的性能。 此外,cnn-tpool2在干净数据比DNN有44%的相对改善,在噪声方面有41%的相对改善。 据我们所知,这是第一次在没有子网络的情况下在时域池化,已经证明对语音任务有帮助。
在这里插入图片描述

引用:
[1] J. Schalkwyk, D. Beeferman, F. Beaufays, B. Byrne,
C. Chelba, M. Cohen, M. Kamvar, and B. Strope, ““Your
word is my command”: Google search by voice: A case
study,” in Advances in Speech Recognition, A. Neustein,
Ed. Springer US, 2010, pp. 61–90.
[2] G. Chen, C. Parada, and G. Heigold, “Small-footprint
Keyword Spotting using Deep Neural Networks,” in Proc.
ICASSP, 2014.
[3] Y. LeCun and Y. Bengio, “Convolutional Networks for
Images, Speech, and Time-series,” in The Handbook of
Brain Theory and Neural Networks. MIT Press, 1995.
[4] O. Abdel-Hamid, A. Mohamed, H. Jiang, and G. Penn,
“Applying Convolutional Neural Network Concepts to
Hybrid NN-HMM Model for Speech Recognition,” in
Proc. ICASSP, 2012.
[5] L. Toth, “Combining Time-and Frequency-Domain Convolution in Convolutional Neural Network-Based Phone
Recognition,” in Proc. ICASSP, 2014.
[6] T. N. Sainath, A. Mohamed, B. Kingsbury, and B. Ramabhadran, “Deep Convolutional Neural Networks for
LVCSR,” in Proc. ICASSP, 2013.
[7] Y. LeCun, F. Huang, and L. Bottou, “Learning Methods
for Generic Object Recognition with Invariance to Pose
and Lighting,” in Proc. CVPR, 2004.
[8] T. Sainath, B. Kingsbury, G. Saon, H. Soltau, A. Mohamed, G. Saon, and B. Ramabhadran, “Deep Convolutional Networks for Large-Scale Speech Tasks,” Elsevier
Special Issue in Deep Learning, 2014.
[9] K. Vesely, M. Karafiat, and F. Grezel, “Convolutive Bottleneck Network Features for LVCSR,” in Proc. ASRU,
2011.
[10] J. Dean, G. Corrado, R. Monga, K. Chen, M. Devin, Q. Le,
M. Mao, M. Ranzato, A. Senior, P. Tucker, K. Yang, and
A. Ng, “Large Scale Distributed Deep Networks,” in Proc.
NIPS, 2012.
[11] T. N. Sainath, O. Vinyals, A. Senior, and H. Sak, “Convolutional, Long Short-Term Memory, Fully Connected
Deep Neural Networks,” in to appear in Proc. ICASSP,
2015.

这篇关于Convolutional Neural Networks for Small-footprint Keyword Spotting论文笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/295863

相关文章

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi