文章起源 | 恒源云社区(专一人工智能/深度学习云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

咱们首先定义模型\( h:\mathcal{X}\to \mathcal{Y} \),其中\( \mathcal{X} \)和\( \mathcal{Y} \)别离是输入输出集。设测试样本\( \mathbf{x}\in \mathcal{X} \)被模型正确预测为标签\( y \),则有\( y=h(\mathbf{x})\in \mathcal{Y} \)。如果一个与\( \mathbf{x} \)有限靠近的反抗样本\( \mathbf{x}^{\prime} \) 使得\( h(\mathbf{x}^{\prime})\neq y \),则\( \mathbf{x}^{\prime} \)是一个好的反抗样本。咱们能够通过定义函数\( \rho: \mathcal{X}\times \mathcal{X} \to \mathbb{R}_{\ge 0} \) 来量化\( \mathbf{x} \)和\( \mathbf{x}^{\prime} \)的靠近水平。设阈值\( \epsilon > 0 \),如果\( \rho (\mathbf{x},\mathbf{x}^{\prime})\leq \epsilon \),则认为反抗样本\( \mathbf{x}^{\prime} \) 与样本\( \mathbf{x} \)十分靠近

寻找反抗样本的过程通过被视为一个优化问题,例如对于分类问题来说,模型\( h \)输入一个logits向量\( \phi_h(\mathbf{x})\in \mathbb{R}^K \) ,使得\( y = \arg \max_k \phi_h(\mathbf{x})_k \) ,为了使得模型预测谬误,咱们能够将margin loss选作反抗损失:

当损失为0的时候,模型会在超参数\( \kappa \)的管制下预测谬误。margin loss在2017年的论文Towards evaluating the robustness of neural networks,对于图像反抗算法中就被证实过无效

这部分正文我想认真解释下为什么margin loss能够使得模型分类谬误。模型训练的最终目标是为了优化margin loss,使得它的损失值降为0,即

只有满足上式状况,损失值就为0了。通过变形咱们能够失去

其中,\( \phi_h(\mathbf{x})_y \) 指的是输出\( \mathbf{x} \)被模型正确预测为类别\( y \)的logit值。无妨设

并且\( i\neq y \),这表明在所有的错误类别中,第\( i \)类的logit最大,并且联合下面的不等式可得

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

给定反抗损失\( \ell \),结构反抗样本的过程能够被视为一个有限度的优化问题:

咱们能够把束缚\( \rho \)带入损失函数中,将本来的硬束缚变为软束缚

如果束缚函数\( \rho \)是可微的,就能够用基于梯度的优化器来优化了

式(2)在图像或者语音等间断数据畛域已被广泛应用,但实际上它并不适用于文本数据,次要有两点起因:

  1. 数据空间\( \mathcal{X} \)是离散的,因而无奈利用梯度进行优化
  2. 束缚函数\( \rho \)难以度量文本数据,例如在一个句子中插入"不是",这个词会否定整个句子的意义,但如果咱们用编辑间隔去计算两个句子的差别,它们的编辑间隔仅为1

GBDA: GRADIENT-BASED DISTRIBUTIONAL ATTACK

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

  1. 利用Gumbel-Softmax使得采样过程能够被梯度优化
  2. 通过引入困惑度和语义类似度这两个软束缚,促使反抗样本的语义更加晦涩以及与原样本间的语义更靠近

Adversarial Distribution

令\( \mathbf{z} = z_1z_2\cdots z_n \) 是句子\( \mathbf{z} \)的token序列,其中\( z_i \) 来自于一个固定的词汇表\( \mathcal{V} = {1,…,V} \)。设概率分布\( P_{\Theta} \) 来自于一个参数化的概率矩阵\( \Theta \in \mathbb{R}^{n\times V} \) ,句子\( \mathbf{z}\sim P_{\Theta} \) 中的每个token都是通过上面的公式独立抽样进去的

其中,\( \pi_i = \text{Softmax}(\Theta_i)\)示意第\( i \)个token概率分布的向量

咱们的指标是优化参数矩阵\( \Theta \),使得\( \mathbf{z}\sim P_{\Theta} \) 为模型\( h \)的反抗样本,为了做到这一点,咱们须要优化的指标函数为

其中,\( \ell \)为可选的反抗损失,例如margin loss

Extension to probability vector inputs

公式(5)很显著不是一个可导的函数,因为散布是离散的,并且咱们是通过采样失去的,采样这个操作没有公式,也就无奈求导。然而,咱们能够对公式(5)进行缩放,将概率向量作为输出,并且应用Gumbel-Softamx作为\( \arg \max \)的估计值,以此来引入梯度

句子\( \mathbf{z} \)中每个token \( z_i \) 在Vocabulary中的索引\( i \)能够通过Word Embedding表查到相应的词向量。特地地,咱们定义\( \mathbf{e}(\cdot) \)为embedding函数,因而token \( z_i \) 的embedding为\( \mathbf{e}(z_i)\in \mathbb{R}^de \) ,其中\( d \)是embedding维度。给定一个概率向量\( \pi_i \) ,它决定了token \( z_i \) 的抽样概率,则咱们定义

为对应于概率向量\( \pi_i \)的嵌入向量。特地地,如果token \( z_i \) 的概率向量\( \pi_i \)是一个one-hot向量,则\( \mathbf{e}(\pi_i)=\mathbf{e}(z_i) \)。有了公式(6),咱们能够将输出概率向量序列\( \boldsymbol{\pi} =\pi_1\cdots \pi_n\) 拓展为一系列embedding的拼接:

COMPUTING GRADIENTS USING GUMBEL-SOFTMAX

对模型\( h \)进行扩大,将概率向量作为输出,使得咱们可能利用Gumbel-softmax失去式(5)的平滑预计。设输出概率序列\( \tilde{\boldsymbol{\pi}} = \tilde{\pi}_1\cdots \tilde{\pi}_n \) 来自Gumbel-softmax散布,依据上面的公式失去:

其中\( g_{i,j}= -\log(-\log(u_{i,j})), u_{i,j}\sim U(0,1) \),即\( u_{i,j} \) 遵从均匀分布。\( T \)越靠近0,\( \tilde{\pi}_i \) 越靠近one-hot散布

通过定义公式(5)的润滑近似值,咱们就能够应用梯度降落优化参数\( \Theta \)了

SOFT CONSTRAINS

因为作者引入Gumbel-softmax,同时将概率向量作为模型的输出,将不可导的公式(5)改写成了可导的公式(8),因而能够很容易的将其余任何可导的束缚函数作为优化指标的一部分。利用这一劣势,作者将流畅性和语义相似性束缚引入进指标函数中,以产生更晦涩和语义更靠近的反抗样本

Fluency constraint with a Language model

之前的工作都是基于词级别的攻打,例如应用Word2vec、GloVe等,或者是利用同义词替换来保障语义原样本和反抗样本之间的语义相似性,然而这些办法或多或少都会存在一些问题,例如产生的反抗样本语法不连贯、语义不晦涩

因果语言模型(Causal language models, CLMs),或者说自回归语言模型的训练指标是最大化条件概率\( p(x_i\mid x_1,x_2,…,x_{i-1} ) \)。更具体地说,给定一个具备对数概率输入的CLM ggg,一个序列\( \mathbf{x} = x_1\cdots x_n\) 的负对数概率(Negative log-likelihood, NLL)是通过自回归的形式计算出的

其中,\( \log p_g(x_i\mid x_1\cdots x_{i-1})=g(x_i\mid x_1\cdots x_{i-1}) \)

因为之前咱们定义模型的输出是某个token的概率向量,因而咱们也能够扩大NLL的定义:

其中

Similarity constraint with BERTScore

作者提出应用BERTScore,这是一个用于评估生成文本相似性的办法。设\( \mathbf{x} = x_1\cdots x_n\)以及\( \mathbf{x}^{\prime}={x}_1^{\prime}\cdots {x}_m^{\prime}\)是两个token序列,令\( g \)为语言模型,咱们能够失去基于上下文语境的向量示意

则序列\( \mathbf{x}和\mathbf{x}^{\prime}\)的BERTScore定义如下:

其中,\( w_i = \text{idf}(x_i) / \sum_{i=1}^n \text{idf}(x_i)\)是token \( x_i \)标准化后的逆文档频率

咱们能够很容易地用式(6)中形容的概率向量序列\( \boldsymbol{\pi}=\pi_1\cdots \pi_m \)来代替\( \mathbf{x}^{\prime} \),并应用\( \rho_g(\mathbf{x},\boldsymbol{\pi})=1-R_{\text{BERT}}(\mathbf{x},\boldsymbol{\pi}) \)作为一个可导的软束缚

Objective function

最初,咱们把margin loss、流畅性束缚与BERTScore相似性束缚都整合起来,形成咱们最终的优化指标:

其中,\( \lambda_{\text{lm}} ,\lambda_{\text{sim}} >0\)均为超参数,每次迭代时从\( \tilde{P}_{\Theta} \) 采样一批输出,并用Adam优化器最小化\( \mathcal{L}(\Theta)\)。具体来说,论文中的超参数设置为其中,\( \lambda_{\text{lm}},\lambda_{\text{sim}} >0 \)均为超参数,每次迭代时从\( \tilde{P}_{\Theta}\)采样一批输出,并用Adam优化器最小化\(\mathcal{L}(\Theta)\)。具体来说,论文中的超参数设置为

RESULT

试验结果表明,作者的攻打可能在简直所有状况下将模型的准确率升高到10%以下,同时放弃高水平的语义相似性(余弦类似度高于0.8)

同时作者做了一个融化试验,察看流畅性束缚的存在,对生成的句子以及最终的后果有什么影响

集体总结

说实话有些难堪,我在翻EMNLP的Accepted Papers时,「Adversarial」字样忽然映入我眼帘,一开始我还认为这是一种新的反抗训练方法,于是便点开论文看了看,边看边写这篇文章,后果写到快完结的时候感觉有些不对劲,我发现这篇论文其实次要不是讲Adversarial的,而是讲Attack的,但我并不是做深度学习Attack的,所以我基本上是节约了很多工夫看了个和我钻研不相干的货色。因为我对深度学习攻打并不理解,所以也没什么很特地的感悟