对抗训练(Adversarial Training)简介
大致可以分为下面两种类型:
- Injecting adversarial examples(加入对抗样本)
- min-max optimization.(最小最大优化)
部分内容参照博客:
https://nlpblog.cl.uni-heidelberg.de/index.php/2019/09/20/adversarial-training/#identifier_22_286
1 Adversarial Examples(对抗样本)
Szegedy et al. (2014)1首先引入了对抗样本的概念,通过对图像添加一些扰动,这些扰动对于人眼是不可察觉的imperceptible,使得神经网络作出错误的判断。
随后Goodfellow et al. (2015)2提出了一个快速生成对抗样本的方法,直接朝着损失函数对于输入梯度的方向移动,而不是搜索给定数据点的所有邻居。
随后Miyato et al. (2016)3提出了Virtual Adversarial Training的方法。
为什么难以应用到NLP任务中?
两个主要的原因,首先对于分类任务而言,模型出错是比较直观的可解释的,但是对于一些其他的任务,则需要更加复杂的评价准则,例如序列标注和语言生成;其次NLP模型输入通常是单词组成的,所以自然的形成一个离散空间,很难知道怎么对输入数据添加对抗扰动。
基于一个假设,即单词经过嵌入后会映射到一个连续的空间,Miyato et al. (2017)4通过对嵌入后的信息做对抗扰动,对文本做对抗训练。在多个文本分类任务中取得了突破,并且学到了高质量的词嵌入表示。
2 Adversarial Game(Min-Max Optimization)
引入一个不同的训练方法,对抗训练,这里的对抗指的是模型不同的部分追求相反的目标,用到了博弈论(Game Theory)的一点概念。这个方法最先由Goodfellow et al. (2014)5 (GAN)引入,模型由两部分组成,一部分试图生成数据分布(生成器),另一部分(辨别器)区分真实数据和生成的数据。双方都使用辨别器的准则做训练信号,直至达到一个饱和态,这叫做min-max优化。
应用到文本中的对抗训练
在ICLR2020会议,Chen Zhu et al. (2020) 6 提出了FreeLB面向自然语言处理的对抗训练方法,基于以往训练方法的改进,在添加扰动然后训练完K步之后,再做参数的反向传播。训练目标可以用下面公式表示:
min θ E ( Z , y ) ∼ D [ 1 K ∑ t = 0 K − 1 max δ t ∈ I t L ( f θ ( X + δ t ) , y ) ] \min_{\theta}\mathbb{E}_{(Z, y)\sim D} \left[\frac{1}{K}\sum_{t=0}^{K-1}\max_{\delta_t \in \mathcal{I}_t}L(f_{\theta}(X + \delta_t), y) \right] θminE(Z,y)∼D[K1