浅谈NLP中的对抗训练方式

c783931590ad28ed097fe6dbeb8819f6.gif

©作者 | 林远平

单位 | QTrade AI研发中心

研究方向 | 自然语言处理

1789aff368b7c213974c4943ed8e248c.png


前言

什么是对抗训练呢?说起“对抗”,我们就想起了计算机视觉领域的对抗生成网络(GAN)。在计算机视觉中,对抗思想的基本配置是一个生成器,一个判别器。生成器希望能够生成一些样本能够“欺骗”判别器,让判别器无法正确判别样本。而判别器当然需要不断增强自己的判别能力,使得生成器不能够欺骗自己啦。在这个相互作用下,判别器的能力不断增强,从而得到一个很好的判别器。

下面,我们举一个对抗样本的例子,决定就是你啦,长臂猿~~不对,搞错了,再来,决定就是你啦,胖达。

ef76a1e622ecf5eaeb33df50b3fd814e.png

▲ 图1 对抗样本实例

从图中我们可以看到,panda 在噪声的干扰下被识别成了长臂猿。

对抗样本一般需要具有两个特点:

1、相对于原始输入,所添加的扰动是微小的; 

2、能使模型犯错。

大名鼎鼎的 Min-Max 公式:

0ce1c20d60fa726aedf6c8f01f17fc73.png

该公式分为两个部分,一个是内部损失函数的最大化,一个是外部经验风险的最小化。用一句话形容对抗训练的思路,就是在输入上进行梯度上升(增大 loss)使得输入尽可能跟原来不一样,在参数上进行梯度下降(减小 loss)使得模型尽可能能够正确识别。

众所周知,在 CV 中我们可以通过在原图像中加入噪点,但是并不影响原图像的性质。而在 NLP 领域,我们并不能直接的通过在词编码上添加噪点,因为词嵌入本质上就是 one-hot,如果在 one-hot 上增加上述噪点,就会对原句产生歧义。因此,一个自然的想法就是在 embedding 上增加扰动。

4b288f52c74493788b411147ca645bd9.png


FGM

说起 FGM,那么就绕不开它的前世 FGSM,

我们先讲讲 FGSM 的公式:

7c409825a956d77b43ebccfdd7cbd849.png

Sign 是一个符号函数,如下所示:

98f32ead7c0ea619f32d98682c308298.png

▲ 图2 Sign函数

FGSM 作者的想法很简单,就是把扰动加到参数中,这样就能使得损失值越来越大,模型将输入图像错分类成正确类别以外的其他任何一个类别都算攻击成功。其论文通过对损失函数做一个梯度,然后对梯度取 sign,当梯度大于 0 时恒为 1,当梯度小于 0 时恒为 -1,当梯度等于 0 时恒为 0。

但是这样的方式会有一个问题,就是会改变梯度的方向,为了解决这个问题,FGM 从而被提出了。

FGM 取消了符号函数,用二范数做了一个 scale,这样的话刚好避免了 FGM 改变梯度方向的问题。

42a628e95aa9fa61acc16eb98b9a127e.png

笔者一直在强调 FGSM 改变了梯度的方向,但可能很多刚接触对抗训练的小伙伴并不懂为什么这么说。下面给个证明:

假设梯度为 ,那么 ,而对于 ,因此可以看出 FGSM 改变了梯度的方向,而 FGM 只是做了个缩放,并没有改变梯度的方向。

接下来笔者把 FGM 的代码放下来。仅供参考。

import torch
class FGM():
    def __init__(self, model):
        self.model = model
        self.backup = {}

    def attack(self, epsilon=1., emb_name='emb.'):
        # emb_name这个参数要换成你模型中embedding的参数名
        for name, param in self.model.named_paramete
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值