浅谈对抗训练


20032202050 左玉晖

什么是对抗训练


生成对抗网络(Generative Adversarial Network,GAN) 代表一大类先进的生成模型。

防御机制:跟对抗攻击、对抗样本相关的领域。(主要关心模型在小扰动下的稳健性)

人工智能——万物互联的时代


无人驾驶场景


对抗样本

什么样的样本是好的对抗样本?


1. 相对于原始输入,所添加的扰动是微小的

2. 能使模型犯错。

研究意义


神经网络的线性的特点很容易受到线性扰动的攻击

可靠的人工智能应用场景需要很高的鲁棒性、安全性、可解释和可靠性

从数学的角度定义对抗训练


\[\begin{aligned} min_{\theta}\mathbb{E}_{(x,y)∼ D} [max_{\Delta x\in \Omega }L(x+\Delta x,y;\Theta)] \end{aligned} \]

输入扰动上进行梯度上升(增大loss),在参数更新上进行梯度下降(减小loss)

\[\begin{aligned} \Delta x &= ϵsign(∇_xL(x,y;θ)) \qquad \text{(ICLR2015 FGSM)}\\ \Delta x &= ϵ \frac {∇_xL(x,y;θ)}{||∇_xL(x,y;θ)||} \qquad \text{(ICLR2017 FGM)} \end{aligned} \]

FGM (Fast Gradient Method): ICLR2017



                    对于每个x:
                      1.计算x的前向loss、反向传播得到梯度
                      2.根据embedding矩阵的梯度计算出r,并加到当前embedding上,相当于x+r
                      3.计算x+r的前向loss,反向传播得到对抗的梯度,累加到(1)的梯度上
                      4.将embedding恢复为(1)时的值
                      5.根据(3)的梯度对参数进行更新
			

PGD (Projected Gradient Descent): ICLR2018



                    对于每个x:
                        1.计算x的前向loss、反向传播得到梯度并备份
                        对于每步t:
                            2.根据embedding矩阵的梯度计算出r,并加到当前embedding上,相当于x+r(超出范围则投影回epsilon内)
                            3.t不是最后一步: 将梯度归0,根据1的x+r计算前后向并得到梯度
                            4.t是最后一步: 恢复(1)的梯度,计算最后的x+r并将梯度累加到(1)上
                        5.将embedding恢复为(1)时的值
                        6.根据(4)的梯度对参数进行更新
			

两个优化方向:
得到更优的扰动 & 提升训练速度


FreeAT (Free Adversarial Training): NIPS2019

YOPO (You Only Propagate Once): NIPS2019

FreeLB (Free Large-Batch): ICLR2020

NLP 中的对抗训练

NLP的对手


1. 黑盒环境下对embedding进行扰动(对手不是从样本进行攻击)

2. 在输入中添加分散注意力的句子(人工)

3. 用GANs将输入投影到潜在空间,并搜索接近原始的文本对手

如何在没有人工评估的情况下通过单词/字符替换来构建保留标签的对抗性示例仍然不清楚,因为每个单词/字符的含义取决于上下文。

基于Embedding的对手严格来说比更传统的基于文本的对手更强大

FreeLB Min-Max公式


\[\begin{aligned} min_{\theta}\mathbb{E}_{(Z,y)∼ D ,{m∼M }} [\frac {1}{K}\sum_{t=0}^{K-1} max_{\delta_t\in \Omega_t }L(f_{\theta}(x+\delta_t),y)] \end{aligned} \]


                    对于每个x:
                      1.通过均匀分布初始化r,梯度g为0
                      对于每步t=1...K:
                        2.根据x+r计算前后向,累计梯度g
                        3.更新r
                      4.根据g/K更新梯度
			    

嵌入训练过程


实验对比


GNN 中的对抗攻击

结构攻击 & 特征攻击

\[\begin{aligned} G(A,X) \end{aligned} \]

场景:金融诈骗伪装

我的实验


海华阅读理解中文挑战赛

Thank you Bye

Github
Blog