[论文解读]Parametric Noise Injection: Trainable Randomness to Improve Deep Neural Network Robustness ...

论文题目:Parametric Noise Injection: Trainable Randomness to Improve Deep Neural Network Robustness against Adversarial Attack
论文地址: He_Parametric_Noise_Injection_CVPR_2019_paper.pdf
开源代码: https://github.com/elliothe/CVPR_2019_PNI

深度学习领域的最新发展揭露了深度神经网络(DNN)抵抗对抗样本的潜在脆弱性。在图像分类中,一个对抗样本是经过精心(carefully)修改的图像,该图像在视觉上对原始图像而言是不可察觉的,但仍会导致DNN模型将其分类错误。用高斯噪声训练网络是模型正则化的有效技术,所以可以提高模型抵抗输入变化的鲁棒性。受到这种经典方法的启发,我们探索利用噪声注入的正则化特性来提高DNN针对 对抗攻击 的鲁棒性。在这项工作中,我们提出了参量噪声注入(Parametric-Noise-Injection, PNI),其中涉及通过解决最小-最大优化问题(the Min-Max optimization problem)并嵌入对抗训练,在激活或权重的每一层上进行可训练的高斯噪声注入。对这些参数进行明确训练,以提高鲁棒性。大量的实验结果表明,我们提出的PNI技术有效地提高了针对各种强大的白盒和黑盒攻击(如PGD, C & W, FGSM, transferable attack, 和 ZOO attack)的鲁棒性。最后但并非最不重要的一点是,与最先进的防御方法相比,PNI方法提高了在原始数据和扰动数据中测试的准确率。使用ResNet-20架构,PNI方法在原始和扰动测试数据中的准确率比当前未攻破的PGD防御方法分别高出了1.1%和6.8% 。

Motivation

最近有人通过正则化提高神经网络的鲁棒性来防御对抗样本。一个众所周知的正则化方法便是噪声注入(noise injection),其大多是对权重或激活进行dropout的变体。为了进一步提高DNN抵抗攻击的性能,许多工作将随机性引入DNN(such as randomly pruning some activation during the inference [37], randomizing the input layer [42], inserting a noise-layer right before the convolution layers[27, 26].)。然而,他们性能的改善(perturbed-data accuracy)来自于随机梯度(the stochastic gradient)而不是正则化所改善的鲁棒性。根据梯度混淆(the gradient obfuscation)的标准,这被认为是脆弱的防御方法。为了验证梯度混淆的对抗防御方法,一个替代并且直接的方法就是检测the clean- (attack free) and perturbed-data (under attack) accuracy。如果采用的方法主要执行模型正则化,则可以在不牺牲原始数据准确性的情况下提高扰动数据的准确性。
最近的Adv-BNN也结合了对抗训练和对权重的噪声注入。Adv-BNN与PNI相比,它主要有以下缺点:
1). 大量的计算和存储开销;
2). 潜在的梯度混淆(为了干扰数据的准确性牺牲掉原始数据的准确性)。
PNI胜过Adv-BNN的关键因素是:
a). 逐层的噪声注入(等式(5));
b). 融合原始数据和干扰数据的损失函数(等式(10))。

Parametric Noise Injection (PNI)

Definition.

将高斯噪声注入到DNN中不同层可以用以下数学公式描述: \tilde{v}_{l, i}=f_{\mathrm{PNI}}\left(v_{l, i}\right)=v_{l, i}+\alpha_{l} \cdot \eta_{l, i} ; \quad \eta_{l, i} \sim \mathcal{N}\left(0, \sigma_{l}^{2}\right)\tag{5} \label{eq5} 其中, {v}_{l, i} 是DNN中第 l 层的无噪声张量 {v}_{l} 的第 i 个元素, \eta_{l, i} 是从高斯分布中采样的噪声项, \alpha_{l} 是控制 \eta_{l} 量级的系数。如果还没有看懂这个公式,可以看如下所示的图例。

Optimization.

论文中把 \alpha_{l} (the noise scaling coefficient)看成是可以通过反向传播优化的模型参数,其梯度计算可以描述为: \frac{\partial \mathcal{L}}{\partial \alpha_{l}}=\sum_{i} \frac{\partial \mathcal{L}}{\partial f_{\mathrm{PNI}}\left(v_{l, i}\right)} \frac{\partial f_{\mathrm{PNI}}\left(v_{l, i}\right)}{\partial \alpha_{l}}\tag{6} \label{eq6} 其中, \mathcal{L} 是模型的损失函数, \sum_{i} 计算 \frac{\partial \mathcal{L}}{\partial \alpha_{l, i}} 的梯度之和, \partial \mathcal{L} / \partial f_{\mathrm{PNI}}\left(v_{l, i}\right) 是从随后的层反向传播的梯度。另外,PNI函数的梯度计算为: \frac{\partial f_{\mathrm{PNI}}\left(v_{l, i}\right)}{\partial \alpha_{l}}=\eta_{l, i}\tag{7} \label{eq7} 值得注意的是,在反向传播期间,将随机采样的 \eta_{l, i} 视为常数。使用带有动量的梯度下降优化器,第j步中的α优化可以写为: V_{l}^{j}=m \cdot V_{l}^{j-1}+\frac{\partial \mathcal{L}^{j-1}}{\partial \alpha_{l}} ; \quad \alpha_{l}^{j}=\alpha_{l}^{j-1}-\epsilon \cdot V_{l}^{j}\tag{8} \label{eq8} 其中, m 是动量, \epsilon 是学习率, V_{l} 是更新的梯度(the updating velocity)。 \alpha_{l} 的初始值为0.25。

Robust Optimization.

作者希望使用PNI技术来改善模型的鲁棒性。然而,由于梯度下降趋向于使权重变得无噪声从而过拟合训练集,直接优化噪声缩放系数(the noise scaling coefficient)通常会使 \alpha_{l} 收敛于接近零的值。为了成功进行对抗防御,将PNI技术和对抗训练(a.k.a.Robust Optimization)结合起来,从而提高扰动数据的准确性。给定输入- x 和目标标签- t ,对抗训练是针对以下最小-最大问题获得网络参数θ的最优解: \underset{\boldsymbol{\theta}}{\arg \min }\left\{\underset{\boldsymbol{x}^{\prime} \in P_{\epsilon}(\boldsymbol{x})}{\arg \max } \mathcal{L}\left(g\left(\hat{\boldsymbol{x}} ; f_{\mathrm{PNI}}(\boldsymbol{\theta})\right), \boldsymbol{t}\right)\right\}\tag{9} \label{eq9} 其中, {\arg \max} 倾向于获取扰动数据 \hat{\boldsymbol{x}} ,而 P_{\epsilon}(\boldsymbol{x}) 是受 \epsilon 约束的输入数据扰动集(比如, {x-\epsilon}\leqslant\hat{\boldsymbol{x}}\leqslant{x+\epsilon} )。
更进一步,为了在实际应用中平衡原始数据和干扰数据的准确率,我们需要最小化两者损失函数的加权和。最终的损失函数 \mathcal{L}_{\mathrm{ens}} 为: \mathcal{L}_{\mathrm{ens}}=w_{c} \cdot \mathcal{L}\left(g\left(\boldsymbol{x} ; f_{\mathrm{PNI}}(\boldsymbol{\theta})\right), \boldsymbol{t}\right)+w_{a} \cdot \mathcal{L}\left(g\left(\hat{\boldsymbol{x}} ; f_{\mathrm{PNI}}(\boldsymbol{\theta})\right), \boldsymbol{t}\right)\tag{10} \label{eq10} 其中, {w}_{c}{w}_{a} 分别是原始数据损失项( clean data loss term)和对抗数据损失项(adversarial data loss term)的权重,默认情况下, w_{c}=w_{a}=0.5

Experiments

PNI against white-box attacks

首先,解释一下,Vanilla Training(普通训练)指的是直接用损失函数优化(即上文的Optimization部分),PNI-W指的是 the layer-wise PNI on weight。由于收敛到很小的数值,Vanilla Training防御失败。后面两列数据均包含PNI-W和对抗训练,两者的区别在于生成对抗样本时是否基于PNI。without PNI in 也是失败的,有异常的0.000和5.856。正如论文作者所说:

Not incorporating the PNI-W in \hat{\boldsymbol{x}} generation indeed leads to the failure of PNI optimization, and the large value ( α = 5.856 in Table 1) is not converged due to the probable gradient explosion . So, keeping the noise term in the model for both adversarial example generation (Eq. (11)) and model parameter update is also the critical factor for the PNI optimization with adversarial training.

表格2是比较在模型中不同位置使用PNI方法的实验结果。可以看到,PNI-W的结果是最好的。
1). PNI-W: injecting noise on the weight
2). PNI-I: injecting noise on the input
3). PNI-A-a: injecting noise on the output tensor of the convolution/fully-connected layer
4). PNI-A-b: injecting noise on the input tensor of the convolution/fully-connected layer(includes the PNI-I)
此外,还观察到,在测试阶段禁用PNI会导致防御PGD和FGSM的准确率大大下降,而原始数据却保持相同水平。于是作者提出疑问,1)PNI方法之所以能提升原始/干扰数据的准确率是否来自于攻击强度的降低(potential gradient obfuscation [4])?也就是说,添加噪声是不是在一定程度上抵消了对抗攻击强度?2)PNI是微不足道的技巧还是执行模型正则化以构建更强大的模型?答案当然是否定的,这两个疑问将会在Discussion部分探讨。