赞
踩
要认识对抗训练,首先要了解“对抗样本”,它首先出现在论文 Intriguing properties of neural networks [3] 之中。在该论文中也提出了一种对抗样本产生的方法L-BFGS。
简单来说,它是指对于人类来说“看起来”几乎一样、但对于模型来说预测结果却完全不一样的样本
理解对抗样本之后,也就不难理解各种相关概念了,比如“对抗攻击”,其实就是想办法造出更多的对抗样本,而“对抗防御”,就是想办法让模型能正确识别更多的对抗样本。
所谓对抗训练,则是属于对抗防御的一种,它构造了一些对抗样本加入到原数据集中,希望增强模型对对抗样本的鲁棒性;同时,如本文开篇所提到的,在 NLP 中它通常还能提高模型的表现。
对抗训练一般可以写为:
D代表训练集,x代表输入,y代表标签,是模型参数,L是单个样本的 loss,是对抗扰动,是扰动空间。这个统一的格式首先由论文 Towards Deep Learning Models Resistant to Adversarial Attacks [4] 提出。
快速梯度法是由 GAN 之父 Goodfellow 在论文 Explaining and Harnessing Adversarial Examples首先提出。
生成对抗样本的问题就是我们怎么生成扰动 , 存在的目的就是增加
我们知道让 loss 减少的方法是梯度下降,那反过来,让 loss 增大的方法自然就是梯度上升,因此可以简单地取:
为了防止 过大,我们一般需要对进行一些标准化,比较常见的方式是:
有了 扰动 之后,就可以代回式 (1) 进行优化:
此外,对抗训练还有一种方法,叫做 Projected Gradient Descent(PGD),其实就是通过多迭代几步来达到让 更大的 更大的 。
如果迭代过程中模长超过了 ,就缩放回去,细节请参考Towards Deep Learning Models Resistant to Adversarial Attacks 。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。