乐趣区

关于深度学习:恒源云-基于梯度的-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

咱们首先定义模型 \(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 的,所以我基本上是节约了很多工夫看了个和我钻研不相干的货色。因为我对深度学习攻打并不理解,所以也没什么很特地的感悟

退出移动版