写点什么

恒源云 _ 基于梯度的 NLP 对抗攻击方法

作者:恒源云
  • 2021 年 11 月 17 日
  • 本文字数:3460 字

    阅读完需:约 11 分钟

恒源云_基于梯度的NLP对抗攻击方法

文章来源 | 恒源云社区(专注人工智能/深度学习云 GPU 服务器训练平台,官方体验网址:gpushare.com/


原文地址 | https://bbs.gpushare.com/topic/707/%E5%9F%BA%E4%BA%8E%E6%A2%AF%E5%BA%A6%E7%9A%84nlp%E5%AF%B9%E6%8A%97%E6%94%BB%E5%87%BB%E6%96%B9%E6%B3%95?_=1637048101498


原文作者 | Mathor




Facebook 提出了一种 NLP 通用的攻击方法,而且可以通过梯度优化,论文发表在 EMNLP2021,名为 Gradient-based Adversarial Attacks against Text Transformers,源码在 facebookresearch/text-adversarial-attack


BACKGROUND

我们首先定义模型,其中分别是输入输出集。设测试样本被模型正确预测为标签,则有。如果一个与无限接近的对抗样本使得,则是一个好的对抗样本。我们可以通过定义函数来量化的接近程度。设阈值,如果,则认为对抗样本与样本非常接近


寻找对抗样本的过程通过被视为一个优化问题,例如对于分类问题来说,模型输出一个 logits 向量,使得​,为了使得模型预测错误,我们可以将 margin loss 选作对抗损失:


当损失为 0 的时候,模型会在超参数的控制下预测错误。margin loss 在 2017 年的论文 Towards evaluating the robustness of neural networks,关于图像对抗算法中就被证明过有效


这部分注释我想仔细解释下为什么 margin loss 可以使得模型分类错误。模型训练的最终目的是为了优化 margin loss,使得它的损失值降为 0,即

只要满足上式情况,损失值就为 0 了。通过变形我们可以得到

其中,指的是输入被模型正确预测为类别的 logit 值。不妨设

并且,这表明在所有的错误类别中,第类的 logit 最大,并且结合上面的不等式可得

总结一下,我们的优化目标永远都是使得损失值降为 0,但是损失降为 0 并不一定代表就要模型对所有的样本都正确预测,margin loss 优化的目标就是使得模型预测错误类别的 logit 比预测正确类别的 logit 大。但凡存在一个样本预测正确,损失都不可能为 0


给定对抗损失,构造对抗样本的过程可以被视为一个有限制的优化问题:

我们可以把约束带入损失函数中,将原本的硬约束变为软约束 8

如果约束函数是可微的,就可以用基于梯度的优化器来优化了


式(2)在图像或者语音等连续数据领域已被广泛应用,但实际上它并不适用于文本数据,主要有两点原因:


  1. 数据空间是离散的,因此无法利用梯度进行优化

  2. 约束函数难以度量文本数据,例如在一个句子中插入"不是",这个词会否定整个句子的意义,但如果我们用编辑距离去计算两个句子的差异,它们的编辑距离仅为 1


GBDA: GRADIENT-BASED DISTRIBUTIONAL ATTACK

论文作者所提出的方法解决了上面两个问题:

  1. 利用 Gumbel-Softmax 使得采样过程可以被梯度优化

  2. 通过引入困惑度和语义相似度这两个软约束,促使对抗样本的语义更加流畅以及与原样本间的语义更接近

Adversarial Distribution

​是句子的 token 序列,其中 ziz_izi​来自于一个固定的词汇表。设概率分布​来自于一个参数化的概率矩阵,句子​中的每个 token 都是通过下面的公式独立抽样出来的


其中,表示第个token 概率分布的向量


我们的目标是优化参数矩阵,使得为模型的对抗样本,为了做到这一点,我们需要优化的目标函数为

其中,为可选的对抗损失,例如 margin loss


Extension to probability vector inputs

公式(5)很明显不是一个可导的函数,因为分布是离散的,并且我们是通过采样得到的,采样这个操作没有公式,也就无法求导。但是,我们可以对公式(5)进行缩放,将概率向量作为输入,并且使用 Gumbel-Softamx 作为的估计值,以此来引入梯度


句子中每个 token 在 Vocabulary 中的索引可以通过 Word Embedding 表查到相应的词向量。特别地,我们定义为 embedding 函数,因此 token 的 embedding 为,其中是 embedding 维度。给定一个概率向量,它决定了 token 的抽样概率,则我们定义


为对应于概率向量的嵌入向量。特别地,如果 token 的概率向量πi\pi_iπi​是一个 one-hot 向量,则。有了公式(6),我们可以将输入概率向量序列拓展为一系列 embedding 的拼接:

COMPUTING GRADIENTS USING GUMBEL-SOFTMAX

对模型进行扩展,将概率向量作为输入,使得我们能够利用 Gumbel-softmax 得到式(5)的平滑估计。设输入概率序列来自 Gumbel-softmax 分布,根据下面的公式得到:


其中,即服从均匀分布。越接近 0,越接近 one-hot 分布


通过定义公式(5)的光滑近似值,我们就可以使用梯度下降优化参数


SOFT CONSTRAINS

由于作者引入 Gumbel-softmax,同时将概率向量作为模型的输入,将不可导的公式(5)改写成了可导的公式(8),因此可以很容易的将其他任何可导的约束函数作为优化目标的一部分。利用这一优势,作者将流畅性和语义相似性约束引入进目标函数中,以产生更流畅和语义更接近的对抗样本


Fluency constraint with a Language model

之前的工作都是基于词级别的攻击,例如使用 Word2vec、GloVe 等,或者是利用同义词替换来保证语义原样本和对抗样本之间的语义相似性,但是这些方法或多或少都会存在一些问题,例如产生的对抗样本语法不连贯、语义不流畅


因果语言模型(Causal language models, CLMs),或者说自回归语言模型的训练目标是最大化条件概率。更具体地说,给定一个具有对数概率输出的 CLM ,一个序列的负对数概率(Negative log-likelihood, NLL)是通过自回归的方式计算出的

其中,


由于之前我们定义模型的输入是某个 token 的概率向量,因此我们也可以扩展 NLL 的定义:


其中


Similarity constraint with BERTScore

作者提出使用 BERTScore,这是一个用于评估生成文本相似性的方法。设以及是两个 token 序列,令为语言模型,我们可以得到基于上下文语境的向量表示


则序列的 BERTScore 定义如下:


其中,是 token 标准化后的逆文档频率


我们可以很容易地用式(6)中描述的概率向量序列来代替,并使用作为一个可导的软约束


Objective function

最后,我们把 margin loss、流畅性约束与 BERTScore 相似性约束都整合起来,构成我们最终的优化目标:

其中,>0 均为超参数,每次迭代时从​采样一批输入,并用 Adam 优化器最小化。具体来说,论文中的超参数设置为


RESULT

实验结果表明,作者的攻击能够在几乎所有情况下将模型的准确率降低到 10%以下,同时保持高水平的语义相似性(余弦相似度高于 0.8)


同时作者做了一个消融实验,观察流畅性约束的存在,对生成的句子以及最终的结果有什么影响

个人总结

说实话有些尴尬,我在翻 EMNLP 的 Accepted Papers 时,「Adversarial」字样突然映入我眼帘,一开始我还以为这是一种新的对抗训练方法,于是便点开论文看了看,边看边写这篇文章,结果写到快结束的时候感觉有些不对劲,我发现这篇论文其实主要不是讲 Adversarial 的,而是讲 Attack 的,但我并不是做深度学习 Attack 的,所以我基本上是浪费了很多时间看了个和我研究不相关的东西。由于我对深度学习攻击并不了解,所以也没什么很特别的感悟

用户头像

恒源云

关注

专注人工智能云GPU服务器训练平台 2020.12.25 加入

还未添加个人简介

评论

发布
暂无评论
恒源云_基于梯度的NLP对抗攻击方法