Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
对抗学习概念、基本思想、方法综述,希望能够帮助你!!!。
对抗学习常见方法代码实现篇
要认识对抗训练,首先要了解 “对抗样本”,在论文 Intriguing properties of neural networks 之中有关于对抗样本的阐述。简单来说,它是指对于人类来说 “看起来” 几乎一样,但对于模型来说预测结果却完全不一样的样本,比如下面的经典例子(一只熊猫加了点扰动就被识别成了长臂猿)
Min-Max公式:
max函数指的是,我们要找到一组在样本空间内、使Loss最大的的对抗样本(该对抗样本由原样本x和经过某种手段得到的扰动项r_adv共同组合得到)。这样一组样本组成的对抗样本集,它们所体现出的数据分布,就是该中括号中所体现的。
min()函数指的是,我们面对这种数据分布的样本集,要通过对模型参数的更新,使模型在该对抗样本集上的期望loss最小。
Goodfellow等人在这篇论文中提出了FGSM对抗方法:
EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES
论文主要结论:
FGSM是一种白箱攻击方法,该方法认为攻击就是添加扰动使得模型的loss增大,所以沿着梯度方向生成攻击样本应该是最佳的(注意:传统情况下我们是固定样本,通过梯度改变权值,现在就是固定权值,通过梯度改变样本。),具体公式如下图所示:
ADVERSARIAL TRAINING METHODS FOR SEMI-SUPERVISED TEXT CLASSIFICATION
对于 CV 领域的任务,在输入上添加一个连续的扰动,这种对抗训练的流程可以顺利执行下来,因为图像可以视为普通的连续实数向量, Δ x \Delta x Δx也是一个实数向量,因此 x + Δ x x + \Delta x x+Δx依然可以是有意义的图像。但 NLP 不一样,NLP 的输入是文本,它本质上是 one-hot 向量,而两个不同的 one-hot 向量,其欧式距离恒为 ,因此对于理论上不存在什么 “小扰动”,因此本文中提出将扰动添加到Embedding层。
For text classification, the input is discrete, and usually represented as a series of highdimensional one-hot vectors. Because the set of high-dimensional one-hot vectors does not admit infinitesimal perturbation, we define the perturbation on continuous word embeddings instead of discrete word inputs.
此外,为避免出现不合理的优化解,在应用对抗训练前,先对embedding进行正则化处理, v k , v ‾ k 分 别 表 示 r a w e m b e d d i n g 、 n o r m a l i z e d e m b e d d i n g v_k,\overline v_k分别表示raw \ embedding、normalized \ embedding vk,vk分别表示raw embedding、normalized embedding如下:
FSGM是每个方向上都走相同的一步,Goodfellow后续提出的FGM则是根据具体的梯度进行scale,得到更好的对抗样本:
FGSM&FGM 对抗步骤:
Paper:Towards Deep Learning Models Resistant to Adversarial Attacks
FGM 的思路是梯度上升,本质上来说没有什么问题,但是 FGM 简单粗暴的 “一步到位” 是不是有可能并不能走到约束内的最优点呢?当然是有可能的。于是,一个新的想法诞生了,Madry 在 18 年的 ICLR 中提出了 Projected Gradient Descent(PGD)方法,简单的说,就是 “小步走,多走几步”,如果走出了扰动半径为 的空间,就重新映射回 “球面” 上,以保证扰动不要过大:
PGD对抗具体步骤:
对于每个x:
1.计算x的前向loss,反向传播得到梯度并备份;
对于每步t:
a)根据Embedding矩阵的梯度计算出r,并加到当前Embedding上,相当于x+r(超出范围则投影回epsilon内)
b)t不是最后一步: 将梯度归0,根据(1)的x+r计算前后向并得到梯度
c)t是最后一步: 恢复(1)的梯度,计算最后的x+r并将梯度累加到(1)上
2.将Embedding恢复为(1)时的值;
3.根据©的梯度对参数进行更新;
Adversarial Training for Free!
FREELB: ENHANCED ADVERSARIAL TRAINING FOR NATURAL LANGUAGE UNDERSTANDING
You Only Propagate Once: Accelerating Adversarial Training Using Maximal Principle
Adversarial Training for Large Neural Language Models
SMART
Virtual Adversarial Training: A Regularization Method for Supervised and Semi-Supervised Learning
下一篇,我们来看几种对抗方法的具体代码实现。
参考文献:
https://wmathor.com/index.php/archives/1537/
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章