自然语言处理模型在标准基准上的表现已经很难区分好坏,很多预训练模型在GLUE验证集上的分数差距只有一两分,但这并不意味着它们对真实输入扰动同样稳健。对抗性鲁棒性基准通过保持语义基本不变的前提下修改输入,专门暴露模型依赖表面线索的弱点。AdvGLUE和ANLI是目前两类代表性工作,前者把GLUE扩展成多任务攻击套件,后者用人在回路方法把自然语言推理任务做得越来越难。

理解这两个基准的设计差异,有助于在模型选型和回归测试中避免只盯住干净验证集分数。
一、标准基准的盲区:高分为什么不能代表鲁棒
标准GLUE基准由多个任务组成,每个任务都提供固定的训练、验证和测试划分。模型在训练集上优化交叉熵损失后,验证集与训练集来自同一分布,因此评估结果更多反映的是模型对相同语言现象的记忆和插值能力,而不是面对未知扰动的泛化能力。很多捷径特征会被模型利用,例如自然语言推理中的词汇重叠、情感分析中的强情感词、语义相似度中的句长相似性。
对抗样本不需要改变人类判断,只需要让模型产生不同预测。比如把句中的一个人名替换为少见拼写,模型就可能因为字符级表征变化而翻转标签。字符级扰动、同义词替换、否定词插入等都能制造这样的效果。更隐蔽的是,这些扰动并不改变语义,却足以让原本在标准验证集上超过90分的模型跌到随机水平。
因此,仅报告标准验证集分数会掩盖风险。对抗性基准把这类扰动系统化,每次修改都有明确的攻击目标和评估协议,方便团队比较不同模型在相同压力下的鲁棒性。
二、AdvGLUE:多任务攻击下的鲁棒性体检
AdvGLUE在GLUE的任务结构上重新收集对抗验证集,覆盖情感分析、语义相似度、自然语言推理、问答和常识推理等任务。它并不固定一种攻击方法,而是组合了多种攻击手段,包括字符级扰动、基于梯度的词替换、同义词替换、句级扰动以及人工编写的对抗样本。这种多源构造让分数下降不能简单归因于某一类攻击,而能反映模型在广泛对抗分布下的整体表现。
从评估结果看,预训练模型在AdvGLUE上的分数比原始GLUE明显下降,而且下降幅度与模型规模和训练方式并不完全正相关。也就是说,更大的模型不一定更鲁棒。部分经过对抗训练的模型能在部分攻击类型上恢复一些分数,但很难在所有攻击类型上同时达标。这说明鲁棒性更像一个多目标问题,而不是单一指标。
实际使用时,可以把AdvGLUE看作回归测试集。Hugging Face数据集库提供了adversarial_glue或类似名称的加载入口,开发者可以按任务名筛选样本。下面是一个简单读取示例。
from datasets import load_dataset
# 加载 AdvGLUE 中的情感分析对抗样本
dataset = load_dataset("adversarial_glue", "sst2")
for item in dataset["validation"].select(range(3)):
print(item["sentence"], "=>", item["label"])
需要注意的是,AdvGLUE中不同任务的输入字段并不完全一致,比如自然语言推理任务使用premise和hypothesis,问答任务使用question和context,读取后要先做字段标准化。
三、ANLI:用人在回路把推理任务压到极限
ANLI聚焦自然语言推理,目标不是用自动攻击算法生成扰动,而是让人类标注者在知道模型预测结果的情况下编写能够骗过模型的前提和假设。这种人在回路设计有一个关键优势:人类生成的对抗样本更符合真实语言变化,避免了自动替换词产生的生硬文本。标注过程分三轮,A1到A3难度递增,每一轮人类都在攻击上一轮最强的模型。
在A1轮,普通预训练模型还能保持一定准确率;到A3轮,多数模型的准确率会降到随机猜测以下,而人类标注者仍然可以准确判断蕴含关系。这个差距说明模型推理能力与人类对文本含义的理解之间存在明显鸿沟。与自动攻击相比,ANLI的样本更难通过简单的词表防御或拼写纠错来应对,因为它更偏向深层语义和常识推理。
下面示例展示了ANLI的字段结构和按轮次加载的方式。
from datasets import load_dataset
# 加载 ANLI 第三轮验证集
dataset = load_dataset("anli", split="test_r3")
for item in dataset.select(range(2)):
print("前提:", item["premise"])
print("假设:", item["hypothesis"])
print("标签:", item["label"])
标签有三种:蕴含、矛盾和中立。评估时建议分别统计每一轮的准确率,而不是把三轮混在一起。因为A1相对容易,混合平均会掩盖模型在A3上的严重退化。很多已发表论文会同时报告A1、A2、A3的独立分数,以便读者判断模型在哪一档难度下失效。
四、两个基准如何互补选型
AdvGLUE和ANLI虽然都叫鲁棒性基准,但评估目标不同。AdvGLUE覆盖面广,涉及多个任务和多种攻击方法,适合作为通用NLU模型的对抗体检工具;ANLI深度聚焦单一推理任务,适合评估模型在语义蕴含上的抗人类攻击能力。如果团队维护的是面向闲聊、搜索或客服场景的通用语言模型,可以优先引入AdvGLUE;如果产品依赖事实核查、文本蕴含或问答中的推理链路,ANLI更有针对性。
只看对抗分数还不够,还需要结合干净验证集的分数一起看。有些模型通过对抗训练提升了AdvGLUE或ANLI分数,但在原始验证集上出现一到两个点的回落,这时要权衡是优先鲁棒还是优先总体精度。另一个常见做法是把对抗样本加入回归测试,每次模型升级后跑一遍,既看干净集上的波动,也看对抗集上的退化。
最后,报告中最好区分攻击类型。AdvGLUE混合了字符级、词级和句级攻击,如果只在总平均分上比较,可能不知道短板来自哪里。可以按攻击类型分组统计,或者结合错误案例分析哪一类扰动最影响业务指标。ANLI则可以按A1、A2、A3分别报告,明确模型在哪一轮开始失效。