| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【综述】NLP 对抗训练(FGM、PGD、FreeAT、YOPO、FreeLB、SMART) -> 正文阅读 |
|
[人工智能]【综述】NLP 对抗训练(FGM、PGD、FreeAT、YOPO、FreeLB、SMART) |
在对抗训练中关键的是需要找到对抗样本,通常是对原始的输入添加一定的扰动来构造,然后放给模型训练,这样模型就有了识别对抗样本的能力。其中的关键技术在于如果构造扰动,使得模型在不同的攻击样本中均能够具备较强的识别性 对抗训练,简单来说,就是在原始输入样本
x
x
x 上加上一个扰动
r
a
d
v
r_{adv}
radv??(在下文中有时记为
δ
\delta
δ),得到对抗样本后,用其进行训练。2018 年 Madry 针对对抗学习定义了一个 Min-Max 的公式1,即
下面将分别介绍 NLP 中用到的一些常用对抗训练算法:基本单步算法 FGM,一阶扰动最强多步算法 PGD, FreeAT、YOPO、FreeLB 和 SMART 请读者注意,对于不同的算法论文中可能采用了不同的数学符号,请注意区别 Fast Gradient Method(FGM)Goodfellow 在 2015 年提出了 Fast Gradient Sign Method(FGSM)2,假设对于输入的梯度为
Project Gradient Descent(PDG)PGD1 是一种迭代攻击,相比于普通的 FGM 的一步到位,PGD 选择小步走,多次迭代每次走一小步,每次迭代都会将扰动投射到规定范围内——即如果走出了扰动半径为
e
p
s
i
l
o
n
epsilon
epsilon 的空间,就映射回球面上,以保证扰动不要过大
论文中,作者给出了如下图所示的对比,可以发现所有的一阶对抗都能得到一个非常低且集中的损失值分布。因此,在论文中,作者称 PGD 为一阶最强对抗。也就是说,只要能搞定 PGD 对抗,别的一阶对抗就不在话下 Free Adversarial Training(FreeAT)从 FGSM 到 PGD,主要是优化对抗扰动的计算,虽然取得了更好的效果,但计算量也一步步增加 普通的 PGD 方法,在计算一个 epoch 的一个 batch时:
这样的计算成本是十分高昂的,其实,我们在针对输入或参数中的一个计算梯度时,能够几乎无成本的得到另外一个的梯度。这就是 Free Adversarial Training 的思想,在一次计算中利用更多的信息加速对抗性学习的训练 FreeAT4 的核心是同步更新扰动和模型参数,如下图所示 FreeAT 对每个样本进行连续重复的 m m m 次训练,为了保证总的梯度计算次数和普通训练的梯度次数一样,把原来的 epoch 除以 m m m,完整的算法流程如下图所示 另外,可以看到的是,下一个 minibatch 过来时会使用上一次 minibatch 的扰动做一个预热 YOPOYOPO5 的出发点是利用神经网络的结构来降低梯度计算的计算量。从极大值原理PMP(Pontryagin’s maximum principle)出发,对抗扰动只和网络的第 0 层有关,即在 embedding 层上添加扰动。再加之,层之间是解耦合的,那就不需要每次都计算完整的前后向传播 基于这个想法,作者就想复用后面几层的梯度,减少非必要的完整传播。如下图所示,可以将 PGD 的 r r r 次攻击拆成 m × n m\times n m×n 次
下面我们描述一下 gradient based YOPO 的具体内容 下图是完整的算法流程 Free Large Batch Adversarial Training( FreeLB)YOPO 看着很厉害,但是好景不长,很快 FreeLB6 就指出 YOPO 的假设对于 ReLU-based 网络来说是不成立的,因为 YOPO 要求损失是两次可微的 另外,FreeLB 认为 FreeAT 和 PGD 在获取最优扰动时的计算都存在问题。于是,FreeLB 在 FreeAT 的基础上将每次 inner-max 中更新模型参数这一操作换掉,利用
K
K
K 步之后累积的参数梯度进行更新(如下面算法中的第 8、13 行所示),于是总体任务的目标函数就记为 (对上面公式解释一点,input subwords 的 one-hot representations 记为 Z Z Z,embedding matrix 记为 V V V,subwords embedding 记为 X = V Z X=VZ X=VZ) 依据下面算法中的数学符号,PGD 需要进行 N e p ? ( K + 1 ) N_{ep}\cdot(K+1) Nep??(K+1) 次梯度计算,FreeAT 需要进行 N e p N_{ep} Nep? 次,FreeLB 需要 N e p ? K N_{ep}\cdot K Nep??K 次。虽然,FreeLB 在效率上并没有特别大的优势,但是其效果十分不错 另外,论文中指出对抗训练和 dropout 不能同时使用,加上 dropout 相当于改变了网络的结果,影响扰动的计算。如果一定要加入 dropout 操作,需要在 K K K 步中都使用同一个 mask SMoothness-inducing Adversarial Regularization(SMART)之前我们看到的所有操作基本都是基于 Min-Max 的目标函数 ,但是在 SMART7 中却放弃了 Min-Max 公式,选择通过正则项 Smoothness-inducing Adversarial Regularization 完成对抗学习。为了解决这个新的目标函数作者又提出了优化算法 Bregman Proximal Point Optimization,这就是 SMART 的两个主要内容 SMART 的主要想法是强制模型在 neighboring data points 上作出相似的预测,加入正则项后的目标函数如下所示 此时可以看到对抗发生在正则化项上,对抗的目标是最大扰动前后的输出 Bregman Proximal Point Optimization 也可以看作是一个正则项,其目的是让模型更新得温柔一点,换句话说就是防止更新的时候
θ
t
+
1
\theta_{t+1}
θt+1? 和前面的
θ
t
\theta_t
θt? 变化过大。在第
t
+
1
t+1
t+1 次迭代时,采用 vanilla Bregman proximal point (VBPP) method 其中
D
B
r
e
g
\mathcal D_{Breg}
DBreg? 表示 Bregman divergence 定义为 我们可以使用动量来加速 VBPP,此时定义
β
\beta
β 为动量,记
θ
~
=
(
1
?
β
)
θ
t
+
β
θ
~
t
?
1
\tilde\theta=(1-\beta)\theta_t+\beta\tilde\theta_{t-1}
θ~=(1?β)θt?+βθ~t?1? 表示指数移动平均,那么 momentum Bregman proximal point (MBPP) method 就可以表示为
Reference博客引用
论文引用
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 10:40:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |