对抗攻击系列学习笔记(一)—— FGSM和PGD

2019-11-23  本文已影响0人  DataArk

一、写在前面的话

由于NLP领域的对抗攻击一直处于较为初级的阶段,所以之前一直没有重点研究。最近看了一篇关于NLP的对抗的博文,感觉使用上可以作为另一种数据增强,因此打算研究一波作为之后日常的trick。也是初次涉及该领域,如有错误的地方也请大佬们多指教。

二、对抗攻击的基本概念

对抗攻击:攻击者就会通过设计一种有针对性的数值型向量从而让机器学习模型做出误判,这便被称为对抗性攻击,简单来说就是研究如何生成能使网络出错的样本

根据条件不同,对抗攻击主要可分为:

三、对抗攻击的一些方法

3.1 Fast Gradient Sign Method

FGSM是一种白箱攻击方法,该方法认为攻击就是添加扰动使得模型的loss增大,所以沿着梯度方向生成攻击样本应该是最佳的(注意:传统情况下我们是固定样本,通过梯度改变权值,现在就是固定权值,通过梯度改变样本。),具体公式如下图所示:

3.2 Project Gradient Descent

FGSM是一种一次攻击,即针对一张图加梯度也仅仅增一次梯度。但如果现在攻击的是一个复杂非线性模型的话,这样的方法可能就不能一定攻击成功。可以想象,复杂的非线性模型可能在极小的范围内剧烈变化,所以梯度跨度大可能就不能攻击成功,所以PGD考虑把FGSM的一大步换成多小步:

clip用来防止一小步走得太大

参考

  1. 训练技巧 | 功守道:NLP中的对抗训练 + PyTorch实现
  2. 基于梯度的攻击——FGSM
  3. [work] 什么是对抗攻击
  4. 对抗攻击(Adversarial attacks)的常用术语
  5. 李宏毅 深度学习19
上一篇下一篇

猜你喜欢

热点阅读