1.一种基于PSO算法的语音识别攻击防御方法,包括以下步骤:
(1)准备原始音频数据集:采集多种不同场景下的多种类音频并进行预处理,分成预训练数据集、测试数据集和用于生成对抗样本的扰动数据集,其具体过程如下:Step11:采集多种场景下的多种类音频,包括人说话的声音、音乐声真实生活场景中的声音,其中人说话的内容包括文章朗读片段、各种指示指令等,音频采集环境包含安静环境和嘈杂环境,嘈杂环境中有汽车鸣笛声、音乐声、人说话声音的干扰,干扰的影响有限,能够使人类清晰识别出说话者的说话内容;
Step12:将上述采集的音频进行裁剪并处理成数据流格式的音频文件,对每个音频都添加相应的标签;
Step13:将预处理后的音频分成预训练数据集、测试数据集和用于生成对抗样本的扰动数据集;
(2)训练语音识别模型:搭建语音识别模型并初始化模型的相关参数,利用预训练数据集对语音识别模型进行训练,并使用测试数据集测试模型的识别准确率,若模型不能达到预设的准确率,则调整语音识别模型的参数重新训练测试,直到模型达到预设的识别准确率;
(3)攻击语音识别模型:搭建基于PSO算法的攻击方法,设置适应度函数及PSO算法的相关参数,利用该攻击方法生成的最优对抗样本能够被错误识别且不被人耳识别;攻击语音识别模型的具体过程如下:Step31:初始化适应度函数,定义适应度函数如下;
其中,第一项CTC-Loss利用CTC算法来衡量对抗样本与原始音频标签之间的距离,第二项中x表示生成的对抗样本,x0表示原始音频,该项通过L2范数来衡量对抗样本与原始音频样本之间的差异,c为一个常数,使得生成的对抗样本与原始音频之间的差异尽可能小,而对抗样本转录结果与原始音频标签之间的差距尽可能大,在人耳不能发觉的情况下实现无目标攻击;
Step32:初始化PSO算法的相关参数;设置最大迭代次数Gk,初始惯性因子ωini,最大迭代次数时的惯性因子ωend,粒子群中的个体数量m;为了防止对抗样本失真,限制粒子位置范围[xl,xh],即对抗样本每个采样点的值在[xl,xh]范围内;
Step33:初始化种群;随机初始化扰动矩阵,扰动矩阵与原始音频矩阵的形状相同,将扰动矩阵与原始音频矩阵叠加得到初始对抗样本,设为X={x1,x2,...,xm};
Step34:更新惯性权重因子;对于第g次更新,惯性权重因子应满足:
ω(g)=(ωini-ωend)(Gk-g)/Gk+ωend (2)
Step35:更新粒子的速度和位置;计算当前每个粒子的适应度,得到每个粒子历史最优位置pbesti(1≤i≤m),种群全局最优位置gbest,则每个粒子速度的更新满足:其中, 表示第i个粒子在第g次更新后的速度, 表示第i个粒子在第g次更新后的位置,c1和c2为学习因子,通常设置为2,rand1和rand2为介于(0,1)之间的随机数,限制粒子的速度范围[vl,vh];
粒子位置的更新过程如下所示:
当微粒的位置、速度超出设定的范围时,即音频矩阵中的幅值和变化速度超出范围时,则用边界值取代;
Step36:若迭代次数达到设定的最大迭代次数或者全局最优个体与原始音频标签的CTC-Loss达到设定值时,则停止迭代,并将最优对抗样本转换为音频;若不满足上述条件,则重复Step33-Step35的步骤,继续迭代寻优;
(4)对抗训练语音识别模型:将步骤(3)中生成的对抗样本加入预训练数据集中,重新训练语音识别模型,使得语音识别模型具有防御对抗样本攻击的能力,提高模型的安全性和稳定性。