【精选】对抗训练

您所在的位置:网站首页 对抗怎么练 【精选】对抗训练

【精选】对抗训练

2023-11-06 12:57| 来源: 网络整理| 查看: 265

文章目录 1、定义2、对抗训练:从CV到NLP2.1 CV中的数据格式2.2 NLP中数据格式 3、对抗样本与数据增强样本4 如何确定微小扰动4.1 Fast Gradient Sign Method(FGSM)4.2 Fast Gradient Method(FGM)4.3 Projected Gradient Descent(PGD) 5 实验结果6 实现6.1 pytorch实现[2]6.2 keras实现[3]

1、定义

对抗样本:对输入增加微小扰动得到的样本。旨在增加模型损失。

对抗训练:训练模型去区分样例是真实样例还是对抗样本的过程。对抗训练不仅可以提升模型对对抗样本的防御能力,还能提升对原始样本的泛化能力。 在这里插入图片描述

2、对抗训练:从CV到NLP

​ 对抗训练最初在cv中使用,nlp中很少使用。因为图像和文本的数据格式导致,在文本中无法增加微小扰动。同数据增强一样,cv中很适用,但nlp中的很少使用。

2.1 CV中的数据格式

图像是由矩阵表示的,如RGB图像是0~255的数字矩阵表示。

图像+微小扰动=图像

在这里插入图片描述

2.2 NLP中数据格式

文本会首先设置词表,然后将词映射为对应的索引:

文本+微小扰动≠文本

在这里插入图片描述 ​ Goodfellow在17年[2]提出可以在embedding上做扰动。这样做会带来问题:在embedding扰动得到的“对抗样本”不能map到某个单词。在对抗攻击时,不能通过修改原始输入得到这样的样本。所以nlp中的对抗训练不能用于对抗攻击,只能用来提高模型泛化能力。

3、对抗样本与数据增强样本

​ 提高模型的泛化性能是机器学习致力追求的目标之一。常见的提高泛化性的方法主要有两种:

添加噪声,比如往输入添加高斯噪声、中间层增加Dropout以及近来比较热门的对抗训练等,对图像进行随机平移缩放等数据扩增手段某种意义上也属于此列;是往loss里边添加正则项,比如L1,L2惩罚、梯度惩罚等

数据增强与对抗样本都属于在原始输入引入噪声的方法。区别在于数据增强的噪声通常是随机的,而对抗样本的噪声是有目的性的。

在这里插入图片描述 在这里插入图片描述

随机噪声的实现方式简单,对泛化性的提升也确实有效。但他的一个明显缺点是“特异性”。随机噪声可能不会对模型造成明显干扰,所以对泛化性能提升帮助有限。

4 如何确定微小扰动

​ 对抗训练流程,在原始输入上增加一个微小的扰动 r a d v r_{adv} radv​,得到对抗样本,用对抗样本就行训练。可以抽象为下面的模型: l o s s = − l o g p ( y ∣ x + r a d v ; θ ) w h e r e r a d v = − a r g m a x r , ∣ ∣ r ∣ ∣ < ε l o g p ( y ∣ x + r ; θ ^ ) = a r g m i n r , ∣ ∣ r ∣ ∣ < ε l o g p ( y ∣ x + r ; θ ^ ) (1) loss=-\mathop{log}p(y|x+r_{adv};\theta)\tag1\\ \mathop{where}r_{adv}=-\mathop{argmax}\limits_{r,||r||



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3