[Abstract]
基于深度学习的语音系统虽然应用广泛,但对于对抗攻击的抵抗能力较弱。
作者提出了一种新的对抗样本合成方法:SirenAttack。相较于传统方法,SirenAttack具有三种特性:
1.Versatile。广泛适用于端到端的声学系统,白盒及黑盒;
2.Effective。合成的对抗样本能够被识别为特定的片段;
3.Stealthy。人类不易感知。
性能:用IEMOCAP数据集攻击ResNet18能取得99.45%的成功率,同时合成的对抗性音频能够使主流的ASR平台发生误解(misinterpret),如Google Cloud Speech,Microsoft Bing Voice,IBM Speech-to-Text等。
对抗样本防御:作者还提出并简单分析了下三种防御措施:对抗性训练、降低采样率、滑动平均滤波。
文章亮点
1.传统方法只关注一个声学系统、仅攻击一两个白盒模型,本文是对主流语音模型至今最大范围的研究,涉及白盒、黑盒;
2.计算上效率高、生成时间短;
3.对主流的实际使用的ASR模型均能有效地攻击。
关键词:对抗机器学习,神经网络,语音识别
[相关工作]
1.传统的ASR攻击:GMM-HMM(非DNNs), Dolphin Attack(只针对旧型麦克风), CommandSongs(audio turbulence, audio squeezing抵抗);
2.ASR对抗样本攻击:Deep Speech(白盒、时间久)、Houdini(只能输出相似文本)、MFCC扰乱(人耳易识别)等;
3.ASR攻击防御:给系统增加动作识别(确定是人类发出这个声音,才会进行识别,可以避免攻击者使用录音)、Vauth(跟上述差不多,通过可佩带的装备先识别用户身体上的振动来判断用户是否真的在场,但这两个方法都有缺陷:人发声不一定与身体动作关联、可佩带装备也不一定好用,成本还可能高)。
[背景知识]
1.端到端(end-to-end)语音识别模型
端到端的好处:在labeled训练数据充足的情况下,性能更好。
它的流程有三个步骤:预处理、特征提取和基于模型的预测。
(1)预处理
目的在于消除掉信号能量低于阈值的语音片段,同时使用VAD(Voice Activity Detection)工具库,可以更易进行降噪、分类、去除停顿等。这一步会把音频分成比较短的帧。
(2)特征提取
从短帧中提取声学特征,一般是MFCC特征。
(3)基于模型的预测
这一步将声学特征作为输入数据,将特征和模型进行比对从而生成预测结果。目前主流的识别系统在这一步通常使用RNNs + CTC损失函数模型。
2.基于分类的语音系统
目的在于对输入的语音信号进行分类。
流程也是三个步骤:预处理(跟识别一样)、特征提取和基于模型的分类。
(1)预处理
跟端到端系统一样。
(2)特征提取
一般用CNNs提取两种特征:audio-level feature(从整个声波获取)和frame-level feature(从声波分段获取)。
(3)基于模型的分类
将特征和模型进行比对从而生成预测结果,离线对比特征和模型,生成分类结果,通常还是用CNNs。
[攻击设计]
1.公式化
给定模型f: X--->Y,其中X--->Y是特征空间X到预测结果Y间的映射;
攻击者要根据原始音频x及其ground truth标签 y,合成对抗性音频Xadv,使f(Xadv)= t(t≠y)。
2.两个攻击模型
白盒:攻击者知道目标模型的细节,包括构造、算法、参数和训练集等;
黑盒:攻击者对模型不了解,对训练集不了解或了解很少。用O(x)表示class的置信值。
3.SirenAttack使用的两个算法概念
3.1 PSO(粒子群优化算法)
算法可以用公式表示为:
其中,Xk表示粒子第k次的位置,Vk表示粒子第k次的速度,c、r、w等为权重,pbest表示目前的局部最优、gbest表示目前的全局最优。粒子的速度更新公式可以看作是“v = 惯性+自我认知+社会经验”,意味着PSO算法能够根据粒子当前状态、整个粒子群的状态(即群体的智慧)来收敛至全局最优解,而避免收敛至局部最优解。因此PSO算法参数少、收敛快、无需梯度信息、能收敛至全局最优解。
PSO算法流程可以表示为:
3.2 Fooling Gradient方法
与一般的gradient discent的方法存在两点不同:
(1)梯度的计算基于输入数据,而非模型的参数;
(2)计算的是网络预测和目标标签的loss,而不是网络预测和ground truth之间的loss。
4.详细攻击设计
4.1白盒攻击
白盒攻击可以分为两个阶段:
(1)找一个与真正的对抗噪声接近的coarse-grained粗粒噪声d’;
(2)通过对d’轻微修改,找真正的对抗噪声d
算法如图:第一阶段是2-13行,第二阶段是15-19行。
主要流程为:
初始化epoch时期、粒子群n_particle(随机序列)
-------------------------------------------------1st phrase---------------------------------------------------------------
【while】Run PSO算法
如果其中一个粒子pi找到可被加进原始音频x的target output t,那就算成功。此pi代表想要的噪声(d);
否则,我们记下给出最低损失值(CTC损失函数)的粒子,然后开始第二次PSO搜索操作;
从第n_step开始计算最后n_step次PSO操作的Gbest值的标准差(std)
【end while】如果std小于阈值时,结束while循环。
-------------------------------------------------2nd phrase---------------------------------------------------------------
使用fooling gradient,调整上面找到的d’直至O(x+delta’) = t或epoch到达预设值epochmax:
值得注意的是,当std比threshold小的时候,作者选择停止循环,因为此时gbest值的变化变得很慢,而我们已经可以获得与目标 d最接近的coarse-grained noised’。
4.2黑盒攻击
黑盒攻击的过程和白盒攻击的第一阶段相似。不过有两点不同:
(1)因为没有loss信息,目标函数不同,为:
优化方向为使目标标签t概率最大的方向;k=0。
(2)需要准确的noise ,终止条件也不同。直至攻击成功或迭代完成,若成功则可以得到对抗样本。
跟白盒攻击相比,黑盒的可靠性较低,会造出更多的噪声,效率也会下降,这是因为黑盒没有对应的损失和梯度信息。
[实验与结果]
1.白盒攻击结果(Targeted)
1.1背景
语料库:Common Voice dataset和VCTK Corpus;
攻击的模型:DeepSpeech;
评价指标:,度量对抗样本的失真程度。IFPI规定20db以上是不可区分的,但是只要不被人耳察觉,即使小于20db,Siren也认为是可接受的。
数据初始化:epoch_max=300,std=2,n_step=5,n_particles=25,惯性weight从0.9逐渐降为0.1,学习速率=1等。
1.2攻击结果
(1)Efficient & Effective
测试方案:从CV和VCTK抽200音频为原始输入,从Google Now voice command随机抽选目标命令音频。
测试结果如下:
表1表示对两个语料库进行SirenAttack后的结果。结果表明,SirenAttack效率很高,生成一个对抗音频平均只需要1200-1900秒,成功率100%,而且信噪比比较高,不易被人耳感知。
图3为原始语音与对抗样本的波形图及频谱图对比。原始音频内容:the boy reminded the old man that he had said something about hidden treasure,对抗音频内容:clear SMS history from my phone。尽管噪声覆盖到频谱图的大部分区域,但是能量普遍较小,人类不易感知。
(2)Examples
作者提供了一些原始语音和对抗样本的例子,证明SirenAttack的适用性非常强,非常适合对ASR做恶意攻击。总趋势:句子越长,耗时越多。
(3)性能对比
SirenAttack与Fooling Gradient对比:
1)前者在79次迭代达到100%成功率,后者在94次迭代刚开始,Fooling Gradient的速度比较快,但它的成功率增长比Siren慢;
2)从图2可见,SirenAttack的CTC损失下降比Fooling快,这也代表Siren选的路线比Fooling更有效率。
(4)Improved Attack
为了增强攻击,作者还使用了VAD(Voice Activity Detection)工具库。VAD能找出音频声波活跃的地方,只往那个点注入对抗内容,这样可以输出效率更高更难以被人耳识别的对抗音频。
从上述实验结果可知,VAD确实增强了Efficiency,也能提高输出结果的SNR,花费时间也更短。
2.黑盒攻击结果
2.1 背景
攻击场景:语音命令识别、说话人识别、声音事件分类。
训练方法:与白盒几乎一样,主要的差别是由于缺少预训练的模型,需要训练一些目标模型。因此,除了CNN外,所有模型都要训练。
2.1.1 语音命令识别
思路:
原音频:无论是系统还是人耳都识别为yes;
对抗音频:听起来Yes,系统识别出No;
语料库:Speech Commands Dataset & Synthesized commands;
目标模型:CNN & VGG19、DenseNet、ResNet18、ResNeXt、WideResNet18、DPN92。
2.1.2 声纹识别
语料库:IEMOCAP
模型:在语音命令识别的目标模型基础上,简化为10类分类问题。
2.1.3 语音事件分类
目标是想让系统输出错误的预测结果,比如输入枪声,听起来像枪声,但让系统给出其他结果;
语料库:AudioSet、ESC-50、UrbanSound8K;
目标模型: Logistic Model (LM)、Mixture of Experts (MoE)、Frame-level logistic model (FLLM) 。
2.2测试结果
2.2.1语音命令识别
从Speech Commands Dataset中选择了2000个音频(每个标签有200个音频),并为每个音频文件生成了9个有针对性的对抗性音频。(no--->yes,left...)
对于Synthesized Commands,以不同的速度和音调合成了33000个音频文件(其中11个长语音命令,每个标签有3000个音频)。
然后Speech Commands和Synthesized Commands分别针对目标模型进行攻击。
从表4红框中可以看出,SirenAttack攻击对于两种语料库的攻击都非常有效,攻击率基本上都在90%左右。同时,对抗样本的SNR也比较高,如针对CNN和Speech Commands的攻击,SNR达到了22.36db,说明合成的语音不容易被人耳察觉。同时,用时也都很短,从100s到602s不等。
从图6可以看出,对抗样本合成的成功率非常高,如从“go”合成“right”的成功率为100%,事件也仅需1.9分钟。说明SirenAttack攻击对于实际生活应用性也很强,很容易对现实生活的语音助手等系统产生威胁。
总体来说,成功率高+用时短 + 噪声小 + 实用性强。
2.2.2说话人识别
从IEMOCAP中选择了1000个音频(每个人有100个音频),并为每个音频文件生成了9个有针对性的对抗性音频。(no--->yes,left...)
从表4红框可以看出,SirenAttack非常effective:ResNet18成功率99.45%,VGG19用时仅376.40s。
2.2.3语音事件分类
150对(source,target)训练。
从表5和表6可以看出,成功率比较高(三个数据集分别为80%以上、80%以上、90%以上),信噪比较高,不易被察觉,用时也较短。
[防御措施]
对抗性训练:用原始和对抗音频来训练,缺点是需要很清楚地知道攻击设计和需要足够的对抗音频训练数据,不能防御未知对抗音频;
降低采样率:对原始音频降低采样率,这样可以影响对抗音频的创建,缺点是会影响原始音频;
滑动平均滤波:可下降攻击成功率,缺点还是影响原始音频,降低音质。
总体上来说,作者也仅限提出思路,并简要分析,还有待进一步研究。
文章链接:《SirenAttack》
引用格式: Tianyu Du, Shouling Ji, Jinfeng Li, Qinchen Gu, Ting Wang, and Raheem Beyah. 2020. SirenAttack: Generating Adversarial Audio for End-to-End Acoustic Systems. In Proceedings of the 15th ACM Asia Conference on Computer and Communications Security (ASIA CCS ’20), October 5–9, 2020, Taipei, Taiwan. ACM, New York, NY, USA, 13 pages. https://doi.org/10.1145/3320269.3384733