NLP 对抗攻击综述:当深度学习碰上"离散文本"

  • 关联论文:1901.06796
  • 作者:flyP
  • 更新:2026-10-14

一句话结论

这篇由 Wei Emma Zhang 团队撰写、最终扩到约 40 页(v3)的综述系统梳理了"对深度 NLP 模型生成对抗样本(adversarial examples)"的当时全部代表性方法,指出图像域成熟的对抗攻击无法直接迁移到 NLP——因为文本是离散的——并按攻击能力(梯度可见性 / 目标模型架构)、扰动粒度(字符 / 词 / 句子)和扰动可见性(可见 / 不可见)三条轴线把已有工作归类,最后给出开放问题与未来方向。

它要解决的真问题

2014 年左右图像领域的对抗样本研究井喷:给图像加肉眼几乎不可见的扰动,可以让当时最强的 CNN 分类器以极高置信度输错标签。这一现象引发了对深度模型鲁棒性的极大关注。

但 NLP 与图像有结构性差异,导致图像方法几乎"开箱即用失败":

维度 图像 文本
表示 连续实数向量 离散 token 序列(字 / 词 / 子词)
扰动度量 L_p 范数近似不可感知 需要"语义不变 + 语法正确"
模型可微 CNN 端到端可微 离散 token 处不可微,梯度难以回传
攻击目标 像素级

因此,"对 NLP 模型做对抗攻击"成了一个独立研究分支。该综述要回答的是:

  1. 当时已有工作如何处理"离散文本的可微性"问题?
  2. 这些方法按什么维度分类最清晰?
  3. 哪些场景下攻击真正能成功、对哪些模型有效?
  4. 在 NLP 鲁棒性防御与对抗训练上有哪些开放问题?

核心方法

1. 分类法三轴

论文 §2–§4 按以下三条轴把所有代表性工作归类(这是后续几乎所有 NLP 对抗综述沿用的骨架):

  • 轴 A:能力(Capability)——攻击方对目标模型的访问粒度
  • 白盒(white-box):可访问模型结构、权重、梯度(如 FGSM、BIM 在 NLP 的离散版移植)。
  • 黑盒(black-box):仅能查询或观察模型输出,靠 score / 预测标签做迁移或启发式搜索。
  • 灰盒:部分结构已知 / 部分 logits 已知。

  • 轴 B:扰动粒度(粒度)——在哪个层面对文本做扰动

  • 字符级(character-level):插入、删除、替换、交换相邻字符。如 typos、视觉混淆("l"→"1"、"o"→"0")、Unicode 归一化攻击。
  • 词级(word-level):替换同义词、打乱语序、插入无关词、删除功能词。要保证"语义尽量保留"。
  • 句子级(sentence-level):插入 / 改写整句话,常见于对抗 paraphrase、水印注入。
  • 此外还有混合层与多模态层。

  • 轴 C:扰动可见性(Visibility)——人能不能看出来被改了

  • 不可见:基本保留原文读感(多数词级 synonym 替换、部分字符级 typo)。
  • 可见但语义不变(如刻意插入广告词、改写整段)。
  • 该维度直接关联评估指标的"人类可读性检查"环节。

2. 主流代表性方法

2.1 字符级(最早被发现对 NLP 有效)

  • 随机 / 字符扰动基线:用一个等价字符替换生成对抗样本(如带同形异义字替换、键盘邻接键替换)。论文指出它们在字符级 CNN / LSTM 上即可造成显著准确率塌陷。
  • 梯度驱动的字符级攻击(白盒):把字符 one-hot 视作连续 softmax,先算出梯度方向,把最容易触发误分类的字符替换作为扰动候选——但需要"投影"回合法 token。
  • HotFlip(Ebrahimi et al. 2018,被该综述收录):把字符级替换视作矩阵-向量乘积,用梯度一次性找出"翻转哪一字符位置、向哪个方向"最有效。

⚠️ 论文版本里给出的是方法分类与定性描述,未对各方法在同一数据集的逐项数字做汇总——具体数字请参后续 TextAttack、TextBugger 等工作(2019 之后)。

2.2 词级(最丰富、最活跃)

  • FGSM / BIM 离散化版:把图像的 ε·sign(∇) 用"选取使 loss 变化最大的词替换"实现。约束项通过"替换代价 = 同义词距离 / 语义相似度"控制。
  • 同义词替换约束:用 word2vec / counter-fitting / synonym database 选出与原词相近的同义词,保证扰动后句子读起来接近。
  • TextFooler(Jin et al. 2019,与综述同期,被高度引用):两阶段——按重要性排序找出关键词、用语义相似度阈值约束选替换词。
  • 基于强化学习 / 序列化的词级生成攻击:把对抗样本生成建模为序列决策问题(半字符级半词级);典型代表 SCA (Symbolic-Controlled Attack)。
  • 基于 GAN / 隐空间扰动的方法:在连续 embedding 上加扰动后强制 round-trip 回合法 token 集合。这是绕开"离散不可微"的关键一招。

2.3 句子级 / 水印级

  • 改写(paraphrase)攻击:用回译或 paraphrase 模型改写整段,绕过简单的关键词检测模型(如垃圾邮件分类)。
  • Universal Trigger / 通用对抗后缀:在保留原始句子语义的同时,附加一段触发 phrase 让模型错分类(与图像 universal patch 对偶)。
  • 水印 / 后门触发:在文本分类、QA 任务上以短语为 trigger 的数据投毒。

3. 评估协议

论文对每类工作都强调了三件事:

  1. 任务准确率下降幅度(clean acc → under-attack acc)。
  2. 扰动幅度(词语替换率、编辑距离、人类可读性 A/B 测试)。
  3. 语义保留度(BLEU / 嵌入余弦相似度 / 人评)。

这种"三角评估"后来成为 NLP 鲁棒性基准(TextAttack、GLUE-X、HuggingFace evaluate)的雏形。

关键实验与数据

综述性质决定其本身不报"碾压 SOTA",但 §2/§3 给出若干对当时典型模型的对照观察(论文版本:v1 → v3 共三次更新,提交于 2019-01-21、2019-01-27、2019-04-11;最终版本约 40 页):

  • 字符级 typo 攻击在字符级 CNN 上取得"高攻击成功率",但在 Transformer / Subword tokenizer 上效果显著下降——因为 BPE 把 typo 词切成多个常见子词。
  • 词级 synonym 替换对 LSTM 类情感分类器(IMDB、SST-2)攻击有效,但对 BERT 类预训练模型攻击效率大降 ——BERT 的鲁棒性显著强于 LSTM(原文未给出 verbatim 数字;该结论来自后续文献)。
  • 黑盒、可迁移场景下:先在源模型生成对抗样本,再迁移到目标模型,迁移成功率随"源/目标模型架构相似度"上升。
  • 论文指出对抗训练(adversarial training)对部分攻击有效,但在离散文本上需要"对抗示例生成 + 强化学习"联合训练,开销远高于图像。

⚠️ 由于这是综述,方法间的横向百分数比较在原文 §3/§4 是定性描述 + 引文而非全局表。如读者关注具体数字,应回查每个引文(如 HotFlip、TextFooler、SCA)。

亮点与局限

亮点

  1. 把"图像 vs 文本"的差异写在论文最前——这是之后 NLP 鲁棒性研究者引用率最高的一段,因为它把"为什么不能直接挪梯度方法"讲清楚了。
  2. 三轴分类法让后续六年 NLP 对抗 / 防御文献几乎都套用同一种骨架(粒度 × 能力 × 可见度)。
  3. 四十页综述覆盖字符 / 词 / 句子级、白盒 / 黑盒、可见 / 不可见,覆盖度在 2019 年时是当时最完整的。
  4. 明确指出对抗训练在 NLP 上的落地难点——成本高、离散 token 不可微、扰动空间大。

局限

  1. 2019 年 4 月 v3 之后,大规模预训练模型(GPT-3、T5、ChatGLM 等)成为新战场,但本综述未覆盖;Prompt Injection、LLM Jailbreak 等 2022 年后的攻击范式不在本文范围。
  2. 没有统一的 benchmark。综述报告各方法"在自己选取的数据集上"的结果,缺乏跨方法统一测试。
  3. 未量化人类可读性。多数工作的"perceptual similarity"是嵌入余弦而非人类 A/B。
  4. 复现性:综述未对每个基线方法给出可执行复现脚本 / 仓库清单(这一点是后续 TextAttack / OpenAttack 在 2020 年明确补齐的)。

对工程落地的启发

  1. 选扰动粒度 = 选威胁模型。做文本风控时,想挡 typo 攻击,要做 subword 归一 + 拼写纠错;想挡 synonym 替换,要做语义相似度检测 + 词替换一致性校验。粒度与防御是一一对应。
  2. 离散不可微 = 工程的两个抓手——token-level 离散搜索(RL / beam search)或者 embedding-level 连续扰动 + 强制 round-trip。两条路线均被本文覆盖。
  3. 评估三角(攻击成功率 / 扰动幅度 / 语义保留)必须同时报,否则无法横向比较,这是被该综述明确化的行业共识。
  4. 对抗训练在工业系统里可行但昂贵——只在高风险场景(NLI / 司法文本分类 / 医学 ICD 编码)值得;其余场景可改用对抗数据增强 + 集成式后处理。
  5. 黑盒 / 可迁移 对工程更现实:很多在线 NLP API 只暴露 logits / 标签,需要基于"查询结果反馈"的攻击与防御栈。

与同方向工作的关系

  • Goodfellow, Shlens & Szegedy 2014 / Kurakin et al. 2016 (图像对抗) —— 给出 FGSM、BIM。本综述反复把它们当作"图像方法无法直接搬"的对立面。
  • Papernot et al. 2016 (JSMA) —— 图像上的 Jacobian saliency map,被 NLP 工作以"token saliency"形式承接。
  • Ebrahimi et al. 2018 (HotFlip) —— 该综述重点收录,最早系统处理"字符级 + 离散可微"的工作之一。
  • Jin et al. 2019 (TextFooler) —— 与本综述同期,被本综述作为词级黑盒攻击代表。
  • 后续 TextAttack (Qin et al. 2020)、OpenAttack (Zeng et al. 2020) —— 各自把综述分类法落到统一的对抗文本 benchmark 上,是综述读者最直接的工具。
  • 2022 起的 LLM 对齐与 Prompt 攻击文献 —— 综述之外的新战场,本篇不涵盖,需另看。

适合谁读

  • NLP 工程师 / 信息安全工程师:要做内容审核、客服机器人、文档检索系统的话,这篇综述给出"扰动粒度 vs 防御思路"的对照表。
  • NLP 研究者:作为"对抗 NLP"领域的入门地图,再用 TextAttack / OpenAttack 复现。
  • 风控 / 数据科学团队:用于团队培训与威胁建模,理解"为什么准确率 99% 的模型在对抗样本面前可能跌到 30%"。
  • 不是:对 2022 年之后的 LLM 越狱 / Prompt 注入感兴趣的读者——请直接看后续专题综述。

引用与版次说明

  • 原文 arXiv 链接:https://arxiv.org/abs/1901.06796,v1 提交于 2019-01-21,v2 于 2019-01-27,v3 于 2019-04-11(约 40 页)。
  • 学科分类:Computation and Language (cs.CL)。
  • 作者核实:首作者为 Wei Emma Zhang(依据 arXiv submission history 显示 [view email]);具体合作者列表在 v3 全文给出,本条目不一一列举。⚠️ 若引用作者团队顺序,请独立到 arXiv 全文或 Google Scholar 作者主页核对。
  • 不涉现实攻击:本文档仅做学术解读,不给出针对当前任何在线 NLP 系统的可执行利用代码。