目录
0、 论文摘要
我们提出了两个压缩方法来减小基于DNN的语音增强模型尺寸,其中包含了三种不同的技术:稀疏正则化、迭代剪枝和基于聚类的量化。我们系统地研究了这些技术,并评估了所提出的压缩方法。实验结果表明,我们的方法在不显著牺牲增强性能的前提下,大大减小了四个不同模型的尺寸。此外,我们发现所提出的方法对说话人分离模型也有很好的效果,进一步证明了该方法对语音分离模型压缩的有效性。
1、 引言
语音增强旨在从背景噪音中分离出目标语音。受计算听觉场景分析中的时频(T-F)掩蔽概念的启发,语音增强被公式化为监督学习。在过去的十年中,已经开发了许多数据驱动的算法来解决这个问题,其中信号中的辨别模式是从训练数据中学习的。深度学习的快速崛起极大地促进了监督语音增强。自深度学习成为研究界语音增强的主导方法以来,人们对将基于深度神经网络(DNN)的增强系统部署到现实世界的应用和产品(例如耳机)中越来越感兴趣。然而,由于DNN的参数过多特性,为了实现令人满意的增强性能,通常需要一个大型的DNN,这既可能在计算上要求很高,又消耗大量内存。在延迟敏感的应用程序或资源有限的设备上部署这样的DNN是很困难的。因此,减少语音增强中DNN的内存和计算量成为一个日益重要的问题。
深度学习社区开发了各种模型压缩技术,这些技术可以大致分为两类。第一类减少了可训练参数的数量。一种广泛使用的技术是网络剪枝,它根据某些标准选择并删除最不重要的一组权重。两个开创性的工作是“最佳大脑损伤”和“最佳大脑外科医生”,它们利用损失函数的Hessian矩阵来确定每个权重的重要性(即权重显著性)。显著性最小的权重被剪枝,其余权重经过微调以恢复丢失的精度。另一种有效的技术是张量分解,它通过将一个大的权重张量分解为多个较小的张量来减少冗余。此外,可以将预训练的大模型的知识转移到相对较小的模型中,这被称为知识蒸馏。由大DNN产生的软目标被用来指导较小DNN的训练。该方法已被证明在分类任务(如图像分类和语音识别)中是有效的。其他相关研究通过设计更参数高效的网络架构来减少DNN的推理成本。第二类模型压缩技术是网络量化,它减少了权重、激活或两者的比特宽度。一种简单的方法是用全精度训练DNN,然后直接量化学习到的权重,这被证明会显著降低相对较小DNN的准确性。为了弥补精度的损失,量化感知训练被开发出来,它在训练过程中包含模拟的量化效应。此外,权重量化可以通过对训练好的权重进行聚类来实现。
近年来,越来越多的研究致力于提高DNN在语音增强中的推理效率。在一项研究中,开发了一种整数加法器DNN,其中整数加法器用于实现浮点乘法。评估结果表明,整数加法器DNN在计算和内存方面比全精度DNN更高效的同时,语音质量相当。Ye等人迭代剪枝DNN以进行语音增强,其中权重的重要性仅通过比较权重的绝对值与预定义的阈值来确定。实验结果表明,他们的剪枝方法可以将前馈DNN压缩约2倍,而不会降低增强性能(在主观可懂性方面)。在另一项研究中,Wu等人使用剪枝和量化技术压缩了用于时域语音增强的全卷积神经网络(FCN)。结果表明,这些技术可以在不影响性能的情况下显著减少FCN的大小。最近,Fedorov等人对用于语音增强的循环神经网络(RNN)进行了剪枝和整数量化,可以将RNN的大小减少到37%,同时信噪比(SI-SNR)仅下降0.2dB。
尽管DNN压缩技术在图像处理等其他领域已经得到了广泛开发和研究,但大多数这些技术仅在分类任务上进行了评估。鉴于基于DNN的语音增强通常被视为回归任务,对于语音增强来说,特定压缩技术是否有效以及如何结合不同技术以实现高压缩率仍不明确。此外,由于语音增强模型种类繁多且发展迅速,通用的压缩管道是受欢迎的。考虑到这些因素,我们最近开发了两个初步的基于DNN的语音增强模型压缩管道。压缩管道包括稀疏正则化、迭代剪枝和基于聚类的量化。稀疏正则化通过DNN训练对权重张量施加稀疏性,这导致更高的剪枝率而不会显著牺牲增强性能。我们交替和迭代地训练和剪枝DNN,然后对剩余的权重应用基于k-means聚类的量化。我们根据每个张量的敏感性分析进行剪枝和量化,这将有利于选择剪枝率和比特宽度,如果权重分布在张量之间差异很大。在此基础上,本研究进一步检查了每种技术的效果及其在不同类型语音增强模型上的组合,并进一步研究了压缩管道在说话者分离模型上的应用。具体来说,我们在设计不同的语音增强模型上评估了压缩管道,包括DNN类型、训练目标和处理域。评估结果表明,所提出的方法大大减少了所有这些模型的大小,而没有显著的性能下降。此外,我们发现该方法在两个代表性的独立说话者分离模型上表现良好。
2、论文所提出方法技术细节
2.1 基于DNN的语音增强系统概述
因为是通用描述,就没有整理~
2.2 迭代非结构化和结构化剪枝
一个典型的网络剪枝过程包括三个阶段:
1)训练一个获得满意性能的大DNN,
2)按照一定准则去除被训练DNN中特定的权值,
3)对剪枝后的DNN进行微调。
我们可以将去除的权值视为零,因此剪枝可以得到稀疏的权值张量。张量稀疏的粒度影响硬件体系结构的效率。细粒度稀疏是将单个权重设置为零的稀疏模式[23],这种稀疏模式通常是不规则的,这使得很难应用硬件加速[30]。这个问题可以通过施加粗粒度的稀疏性来缓解,这种稀疏性的模式更加规则。我们研究了非结构化和结构化的剪枝,其中非结构化剪枝是将每个单独的权重单独去除,而结构化剪枝是权重的分组,可以删除权重矩阵的整个列或行。
针对结构化剪枝:
对于不同的层,权重组(剪枝单位)的定义不同:
卷积/反卷积层:基于卷积核(2D时是矩阵,1D时是向量)。
循环层和全连接层:基于权重矩阵的列。
优点:
1)结构化剪枝通过粗粒度的剪枝方式,实现了较高的压缩比。
2)这种方法产生的稀疏性更适合硬件实现,因为硬件可以更高效地处理规则的稀疏结构。
网络剪枝的关键问题是确定剪枝准则,确定要删除的权值集合。本文提出逐张量剪枝敏感性分析!
2.2.1 非结构化剪枝
- 定义权重显著性:权重显著性定义为移除一组权重U所导致的误差增加。显著性通过在验证集V上测量来进行评估。
-
逐张量剪枝敏感性分析:对每个权重张量进行敏感性分析,以确定每个权重张量的剪枝比例。
-
执行非结构化剪枝:按照每个张量的剪枝比例执行剪枝。
-
微调剪枝后的DNN:对剪枝后的DNN进行微调,以恢复其增强性能。
-
评估微调后的DNN:使用两个指标(短时目标可懂度STOI和语音质量感知评估PESQ)在验证集上评估微调后的DNN。
2.2.2 结构化剪枝
流程与非结构化剪枝相同。均是按照上述算法对所有权值张量进行了逐张量剪枝灵敏度分析,以确定其张量剪枝率进行结构化剪枝。然后对剪枝后的DNN进行微调以恢复增强性能。最后通过短时客观可懂度(STOI)[39]和语音质量感知评价(PESQ)[35]两个度量来评估经过微调后DNN在验证集上的性能,这种修剪和微调操作是迭代交替执行的。我们重复这个过程,直到经过修剪的权值的数量在一次迭代中变得微不足道,或者在验证集中观察到STOI或PESQ的显著下降。
这种方法有两点好处。首先,一些现有的修剪方法(例如[50])使用一个共同的阈值来区分DNN中所有层的不重要权重。这可以极大地限制对冗余层的修剪或对冗余度较低的层的过度修剪,特别是在层的重要性变化很大的情况下,这样的问题可以通过我们的敏感性分析得到缓解。其次,我们迭代地执行剪枝和微调,并在语音增强指标(STOI和PESQ)评估每个迭代后的模型。这可以大大降低过度剪枝风险和相应的不可恢复的性能下降,即使权重的重要性与其大小没有强相关性[31]。在非结构化和结构化剪枝之间的选择取决于底层设备是否可以访问硬件加速。具体来说,当无法加速时,使用非结构化剪枝会更好,因为在增强性能没有显著下降的约束下,它通常允许比结构化剪枝更高的压缩率。对于带有加速器的设备,结构剪枝是更好的选择。
2.3 稀疏正则化
为了在不降低性能的情况下提高剪枝率,我们提出在训练和微调过程中使用稀疏正则化。L1正则化器如下:
从而新loss为:
其中,W为所有非零权值的集合,λ为预定义的权值因子。函数n(·)计算集合的基数。
Group-level 稀疏性可以由 group lasso 惩罚引起:
g为所有权重组的集合,||·||2为L2范数,符号pg表示每个权重组g中的权重个数,λ2为权重因子。在这种惩罚下,一组中的所有权重同时被鼓励为零或不为零。(后续pipeline(b)采用结构化剪枝和LSGL的原因)我们引入其扩展版本稀疏组lasso (sparse group lasso,SGL),它通过加入L1正则化[37],[38]进一步增强了非稀疏组的稀疏性:
从而新loss为:
2.4 基于聚类的量化
量化是一种将模型权重减少到更少的位数表示的方法,常用于降低模型的计算和存储需求。本部分的目标是通过基于聚类的量化方法进一步压缩剪枝后的深度神经网络(DNN)。
- 步骤:
1)聚类:将模型的权重进行聚类。具体来说,类似权重被归为同一类,形成聚类中心。
2)量化:用聚类中心值替代原始权重,从而实现模型的量化。
2. 量化位数:每个权值被量化为 logK位,即存储每个聚类索引需要logK位。
3. 公式推导(R为压缩率,N为非零权重的数量,K为聚类中心的数量)
1)原始权重以32位浮点数存储,总计需要 32N位;
2)聚类后,每个权重存储其聚类索引,共需 Nlog2K位;
3)还需额外存储聚类中心,共需 32K位;
因此,压缩率R(原始存储大小/聚类后存储大小)为:
4. 量化敏感性分析
对每个权重张量逐步增加聚类数目,并测量相应的验证损失增量。结果用于确定每个权重张量的最佳聚类数目K。
步骤:
1)按权重张量进行敏感性分析,逐步增加聚类数K。
2)测量验证集上的损失变化,找到最优的K值。
3)使用该K值进行量化。
对于基于聚类的量化,需要选择一个合适的K值保持DNN的性能。鉴于权值张量之间非零权值的数量可能会有很大的差异,我们提出按照算法3对量化进行逐张量灵敏度分析。其思想是逐步增加每个权值张量的聚类数量,并度量相应的验证损失增加。灵敏度分析的结果用于量化每个权值张量中的权值。与[11]中对所有权值张量使用相同数量的簇不同,我们的方法允许使用不同的比特数量化每个张量,这可能导致更高的压缩率。
因此,结合稀疏正则化、迭代剪枝和基于聚类的量化,我们可以得到两个压缩pipeline,如图所示。在图(a)所示的压缩管道中,我们应用正则化和非结构化剪枝;在另一个管道(见图 (b))中,我们应用了群稀疏正则化和结构化剪枝。
3、实验设置
3.1 数据集
训练集:使用WSJ0数据集[8]中的89个人声和来自声音效果库1(https://www.sound-ideas.com)的10000个噪音;混合信噪比在-5~0dB,共计约32W条数据,约600h;
验证集:使用训练集中未见过的WSJ0数据集[8]中6个人声(三男三女)和来自NOISEX-92数据集[43]的工厂噪音;混合信噪比在-5~0dB,共计846条数据。
测试集:使用训练集和验证集中未见过的WSJ0数据集[8]中6个人声(三男三女)和两个高度非平稳噪声,即babble (BAB)和自助餐厅(CAF);三组信噪比为-5,0和5 dB,共计846条数据。
3.2 语音增强模型
所提出方法在以下四个“因果的语音增强模型中”进行实验与探究:
1) 前馈DNN:有三个隐藏层,每层2048个单元,我们使用理想比例掩模[48]作为训练目标:
S和N所在项分别表示语音和噪声的能量,输入为频谱。
2)LSTM:在幅度域进行光谱映射,它有4个LSTM隐藏层,每层1024个单元,输出层为全连接层,后接整流线性激活函数[9]。
3) 时域卷积神经网络(TCNN):在时域直接将带噪语音映射到干净语音。[32]
4)门控卷积循环网络(GCRN):通过复杂频谱映射,从噪声语音的真实谱图和虚谱图中估计出纯净语音的真实谱图和虚谱图。[40]
3.3 训练细节与敏感性分析配置
我们使用AMSGrad优化器[33]在4秒的片段上训练,minibatch size为16。学习速率初始化为0.001,每两个epoch衰减98%,目标函数为均方误差,即T-F单位(对于FDNN、LSTM和GCRN)或时间样本(对于TCNN)的平均值。我们使用验证集来选择不同时期的最佳模型,并对剪枝和量化进行灵敏度分析。
对于非结构化剪枝,FDNN、LSTM、TCNN和GCRN的λ1的初始值(见式(7))经验设置为0.1、10、0.02和1。对于结构化剪枝,采用相同的λ1初始值,FDNN、LSTM、TCNN和GCRN的λ2初始值(见式(9))分别设为0.0005、0.005、0.02和0.05。这种设定下,Rl1和Rl2,1的数量级几乎相同,并且都比l小一个数量级,每次剪枝迭代λ1和λ2都会衰减10%。算法1、2和3中敏感性分析的耐受值(α1、α2)经验设置依次为(0.003、0.0005)、(0.03、0.01)、(0.0002、0.00 005)和(0.02、0.005),分别对应:FDNN、LSTM、TCNN和GCRN。
4、实验结果与分析
4.1 压缩pipeline的评估
未压缩模型与压缩模型性能对比如表1所示,下标U表示未压缩模型,C1和C2为我们所提出的压缩pipeline模型,分别如图3(a)和3(b)所示。STOI和PESQ分数代表每个测试条件下测试样本的平均值。我们观察到,在STOI和PESQ指标上,所提出的压缩pipeline对四种模型的性能都没有或有轻微影响。以LSTM模型为例,两个pipeline将LSTM模型尺寸从115.27 MB分别压缩到2.49 MB和9.97 MB,压缩率分别为46x和12x。
表2的结果进一步证明了压缩pipeline的有效性,其中用于测试的噪声样例来自噪声数据库(DEMAND)[42]中不同环境多通道声学的四个附加噪声,这四种噪音是在四种不同的环境中记录的,即一个城市公园(“NPARK”),一个地铁站(“PSTATION”),一个会议室(“meeting”)和一个公共城市广场(“SPSQUARE”)。表2中的STOI和PESQ分数表示四种噪声的平均值。我们可以看到,所提出方法引起了轻微的模型性能下降或没有下降。
此外,从表1可以看出,对于FDNN、LSTM和GCRN, C1比C2具有更高的压缩率。这可能是因为非结构化修剪使用比结构化修剪更小的修剪粒度,这允许更少的规则稀疏模式和更高的权张量稀疏性。因此,非结构化剪枝比结构化剪枝约束更少,通常有着更高的剪枝率。但对于TCNN来说,这两条管道的压缩率相似。一种解释是,对于全卷积神经网络,结构化剪枝可以实现与非结构化剪枝相似的压缩比,这与[30]一致。
表3给出了未压缩和压缩模型处理4秒噪声混合时的乘法累加(MAC)操作的数量。我们可以观察到,我们的方法显著地减少了所有四个模型的MAC操作的数量,表明所提出的提出的压缩pipeline也降低了模型计算复杂度。
4.2 稀疏正则化和迭代剪枝的效果
我们现在研究稀疏正则化和迭代剪枝的效果。图4给出了有无l1正则化(见式(7))时,用于非结构化剪枝的原始可训练参数数量的百分比。如图4所示,通过迭代剪枝对模型进行增量压缩。例如,没有稀疏正则化时,经过一次剪枝迭代后TCNN可训练参数的原始数量的百分比减少到55%,5次剪枝迭代后变为30%。
此外,可以观察到,使用稀疏正则化可以提高所有四种模型的压缩率。例如,通过对GCRN进行5次迭代剪枝,压缩率可以从2.9×提高到5.1×。图5展示了-5 dB SNR 情形下的相应的STOI 和 PESQ 结果,这表明我们提出的剪枝方法不会显著增强性能。
为了进一步研究稀疏正则化对剪枝的影响,我们在图6中描绘了FDNN在一次剪枝迭代后不同层的剪枝率。我们可以看到稀疏正则化增加了所有 FDNN 层的剪枝率。其中结构化剪枝的处理效果优于非结构化剪枝,进一步证明了群稀疏正则化对结构化剪枝的有效性。
我们还训练了四个相对较小的DNNs,即FDNNS、LSTMS、TCNNS和GCRNS。它们的结构与实验设置一节中的描述相同,只是减少了层宽或网络深度。其中,FDNNS和LSTMS各隐层单元数分别重置为200个和320个。对于TCNNS,每个残块的中间层输出通道数从512减少到256,扩张块数从3减少到2。对于GCRNS,编码器中的第四和第五个门控块的输出通道数分别重置为64和128。每个解码器中的第一门控块中的输出通道数从128减少到64。我们对FDNNS、LSTMS、TCNNS和GCRNS做出这些调整,使其与原始FDNN、LSTM、TCNN和GCRN分别进行了5次、5次、3次和5次的迭代剪枝后的模型大小相当。我们将这些剪枝模型分别表示为FDNNP、LSTMP、TCNNP和GCRNP。表4比较了这些模型产生的STOI和PESQ结果。我们发现FDNNP、LSTMP、TCNNP和GCRNP的STOI和PESQ得分显著高于FDNNS、LSTMS、TCNNS和GCRNS。这说明训练和修剪一个大的冗余DNN比直接训练一个较小的DNN的优势,这与[13],[24],[28],[51]一致。
现在,我们将所提出的基于单张量敏感性分析的剪枝方法,与使用共同阈值来确定DNN中所有权重张量的权值进行剪枝的方法进行比较,该策略被采用在许多现存的方法(如[50])。具体来说,我们比较了两个不同方法剪枝后的GCRN的STOI和PESQ分数。其中一个基于算法1(记为GCRNP1)的结果进行非结构剪枝,另一个(标记为GCRNP2)通过删除绝对值小于阈值的权值来进行剪枝,这对所有权值张量都是一样的。这个阈值是经过仔细选择的,以便GCRNP2具有与GCRNP1完全相同的压缩率。这两个gcrn只进行一次迭代剪枝,然后进行微调。我们使用不同的α1值(0.02,0.04,0.08,0.16和0.32)来得到不同的压缩率。STOI和PESQ结果如图7所示,它们表明我们所提出的方法产生了更高的STOI和PESQ,证明了逐张量灵敏度分析比使用公共阈值剪枝方法的优势。
4.3 基于聚类的量化效应
为了研究基于聚类的量化效果,我们将原始未压缩模型的权值直接量化(不进行剪枝),得到四个量化模型,即FDNNQ、LSTMQ、TCNNQ和GCRNQ。未压缩模型和量化模型的对比如表5所示。可以看出,我们提出的量化方法在不降低增强性能的前提下,大幅减小了模型的尺寸。
4.4 语音分离评估
本节在多说话人分离任务评估所提出的压缩pipeline。具体来说,我们选择Tas-Net[29]和一个基于话语级置换不变训练(uPIT)[21]的LSTM模型作为独立说话人分离的代表方法应用我们的压缩。我们对TasNet和uPIT-LSTM分别使用与[29]和[21]中相同的因果网络配置。模型在广泛使用的WSJ0-2mix数据集[8]、[14]上进行评估,该数据集在训练集、验证集和测试集中分别包含20000个、5000个和3000个混合集。采样频率设置为8khz,如[21]和[29]。在[26]之后,我们使用扩展的短时间客观可解度(ESTOI)[20]、PESQ、SI-SNR[29]和信号失真比(SDR)[44]指标来测量说话人分离性能。其他配置与实验设置部分相同。
结果见表六所示,我们可以看到,所提出的方法在保持分离性能的同时显著压缩了两个模型。例如,pipelineC1将LSTM模型从250.46 MB压缩到2.50 MB,而不减少四个性能指标中的任何一个,这进一步证明了我们的方法对语音分离模型的有效性。此外,对于uPIT-LSTM, C1管道比C2管道的压缩率更高,而对于全卷积神经网络TasNet,这两个管道的压缩率相当。这与我们对压缩语音增强模型的发现是一致的。
5、总结
在本研究中,我们提出了两个DNN语音增强的压缩pipeline,包括三种不同的技术:稀疏正则化、迭代剪枝和基于聚类的量化。在不同类型的语音增强模型上的实验结果表明,所提出的pipeline大大减小了四个不同DNN的尺寸,且没有显著的性能退化。此外,对于全卷积神经网络,结构化剪枝可以获得与非结构化剪枝相似的压缩率,而对于其他类型的DNN,非结构化剪枝可以获得更高的压缩率。我们还发现,训练和剪枝一个过参数化的DNN比直接训练一个小的DNN(与剪枝后的DNN大小相当)能获得更好的增强结果。此外,我们的方法在两个有代表性的说话人分离模型上表现良好,这进一步表明我们的pipeline对语音分离模型的压缩能力。