GLUE — 给 NLU 模型出一张包含 9 道题的统考卷
是什么
GLUE(General Language Understanding Evaluation)是一份给”英语理解类”模型做的统考卷。日常类比:以前每家学校自己出语文考试,分数没法比;GLUE 把 9 套现成的英语题打包成一份卷,所有模型考同一份,按平均分排名。
9 道题长这样(先看一眼,混个脸熟):
CoLA 这句话合语法吗? "The cat sat on mat" → acceptable / notSST-2 这句影评是好评还是差评? "boring waste of time" → negativeMRPC 两句话是不是一个意思? 句 A vs 句 B → paraphrase / notSTS-B 两句话语义相似度 0-5 句 A vs 句 B → 4.2QQP Quora 两个问题同义吗? Q1 vs Q2 → duplicate / notMNLI 句 A 能推出句 B 吗? "下雨了" → "地是湿的" → entailmentQNLI 这句话回答了那个问题吗? Q vs sentence → yes / noRTE 小规模的蕴含集合 同 MNLI 但只几千条 → yes / noWNLI "他"指代谁? Winograd 风格指代题 → 选项 A/B模型把 9 题各自的分跑出来,按任务取平均,得到一个总分。这一个数字就是 GLUE Score。
为什么重要
不理解 GLUE,下面这些事都说不通:
- 你看 BERT / RoBERTa / ELECTRA 论文头版表格里那个 「GLUE = 80.5 / 88.5 / 90.0」 —— 都来自这套题
- 在 GLUE 之前 NLP 模型论文 各报各的:A 论文报情感分类,B 论文报蕴含,没人能说”哪个模型整体更强”
- GLUE 是 NLP 第一次把”统一标尺”做成功的尝试。后面所有评测(SuperGLUE / MMLU / BIG-Bench / HELM)都是它的徒弟徒孙
- BERT 之所以”出圈”,关键证据就是 2018-10 它在 GLUE 上把当时最强 SOTA(GPT 单向 72.8)一口气拉到 82.1;没有 GLUE 这个统一数字,BERT 就只是又一个论文
核心要点
GLUE 的设计可以拆成 三个决定:
-
任务多样:9 个任务覆盖句子可接受度 / 情感 / 释义 / 相似度 / 蕴含 / 问答六大类。单任务调好不算赢,9 题都过得去才行——目标是逼模型学”通用语言能力”,而不是”刷某一题”。
-
共享 leaderboard:测试集标签不公开,必须把预测结果提交到 gluebenchmark.com,服务器算分。这样防止你”在测试集上调超参”作弊。每天有提交次数限制。
-
附带诊断集:除 9 个任务外,作者还手写了 1100 条诊断样本,每条标注”考的是哪类语言现象”——逻辑词、否定、共指、世界知识……让你看完总分还能问”模型到底卡在哪类语义”。
三个决定加起来:一个数字排名 + 细致的错误分析能力。这就是 GLUE 的全部。
实践案例
案例 1:BERT 论文里那张震惊业界的表
2018 年 10 月,Google 放出 BERT,论文里有一张表:
GLUE 平均分GPT (单向) 72.8BERT-Base 79.6BERT-Large 82.1人类基线 87.1BERT 没立刻超人类,但单步把 SOTA 拉了 9 分——这是 NLP 多年没见过的跳跃。半年后 RoBERTa(GLUE 88.5)首次超过 87.1 人类基线,再半年 XLNet / ALBERT / ELECTRA / DeBERTa 把分推到 90+。GLUE 在 2 年内被刷爆,于是 2019 年作者团队推出更难的 SuperGLUE。
案例 2:你自己怎么跑一遍
# 用 huggingface 加载 GLUE 任意子任务pip install datasets transformerspython -c "from datasets import load_datasetmnli = load_dataset('glue', 'mnli')print(mnli['train'][0])# {'premise': 'A man inspects the uniform of a figure...',# 'hypothesis': 'The man is sleeping',# 'label': 2} # 2 = contradiction"跑完 9 个任务,按官方公式取平均。transformers 仓库的 examples/text-classification/run_glue.py 就是模板,跑一台 V100 一晚上能微调完整套 base 模型。
案例 3:GLUE 怎么揭示模型短板
诊断集里有一类叫 “双重否定 + 量词” 的题,例如:
A: "Not everyone who came didn't enjoy it."B: "Some who came enjoyed it."关系:entailmentBERT-Base 在这类题上准确率只有 50%——和瞎猜一样。这种细粒度暴露就是诊断集的价值:总分 80 看似厉害,拆开看才知道”逻辑词”是命门。后续 RoBERTa / DeBERTa 大幅改进的就是这块。
踩过的坑
-
WNLI 是个坑:训练集只有 634 条且测试集分布不同,几乎所有模型直接 预测多数类(输出”不蕴含”)拿 65.1%——比认真做还高。BERT 论文里干脆 把 WNLI 跳过,作者 Wang 后来也承认”这题设计有问题”。
-
GLUE 平均分不科学:MNLI 39 万条,RTE 仅 2.5 千条,两题在平均分里权重一样。这导致小任务噪声大,名次容易抖。SuperGLUE 后来用更均衡的任务集修了这点。
-
测试集只能提交,不能本地评:dev 集和 test 集分数有时差 1-2 分(test 更难)。别在论文里直接报 dev 分当 test 分,社区会盯。
-
“超过人类”≠ 真懂:人类基线只是少量众包标注的平均,没控制过工作时间和疲劳。模型在 GLUE 上”赢人类”和”会理解英语”是两件事。这是后来 MMLU 想解决的。
-
任务定义有歧义:CoLA”合不合语法”判断本身在语言学界就有争议;MRPC 标注一致性也只有 80% 多。评测的天花板本身有噪声。
-
数据污染风险:测试集来自公开数据集(SQuAD / SNLI 等改造),现代大模型预训练时很可能见过原始数据,使得”开卷考试”。这是 GLUE 设计时没料到的。
适用 vs 不适用场景
适用:
- 横向比较 BERT 时代的 encoder 模型(base/large/distil)
- 微调入门:选 SST-2 或 MRPC 当 hello-world,跑一遍熟悉 transformers 流程
- 教学:演示”评测基准是怎么塑造一个领域的”
不适用:
- 评测大语言模型(LLM)→ 用 MMLU / BIG-Bench / HELM,GLUE 早已饱和
- 评测生成能力 → GLUE 全是分类/回归题,测不出生成
- 评测中文 → 用 CLUE(中文版仿照设计)
- 评测推理过程 → 用 GSM8K / BBH
历史小故事(可跳过)
- 2018-04:Wang 等人挂 arXiv,当时还叫”GLUE”试探性发布
- 2018-10:BERT-Large 把 GLUE 从 72.8 拉到 82.1,让评测一夜成名
- 2019-05:SuperGLUE 发布,承认 GLUE 即将被刷爆
- 2019-07:RoBERTa 把 GLUE 推到 88.5,首次超过人类基线 87.1
- 2026 年现在:GLUE 早已不是 SOTA 战场,但仍是 NLP 课程的入门评测——学生跑一遍 9 个任务就能理解”分类、回归、蕴含、相似度”长什么样
学到什么
- 基准会塑造研究方向:GLUE 让大家从”调一个任务”变成”调一组任务”,BERT 这种通用预训练范式就是被这个评测口径催出来的
- 简单胜过复杂:9 个现成任务取平均,没有花哨设计,但因为易跑、可比、覆盖广反而被广泛采用
- 饱和不是失败而是成功的代价:GLUE 在 2 年内被刷爆,恰恰说明它选的任务”够代表通用能力”——下一代 SuperGLUE 顺势诞生
- 诊断集是评测的良心:总分容易让人盲目乐观,按语言现象拆分错误才是评测真正的工程价值
延伸阅读
- 论文 PDF:arxiv.org/abs/1804.07461(约 20 页,第 3 节看任务、附录 B 看诊断集)
- 官方榜单:gluebenchmark.com(仍在线,可看历史模型排名)
- 数据集:huggingface.co/datasets/glue(一行 load_dataset 就能用)
- 后继:SuperGLUE 论文 arxiv.org/abs/1905.00537(解决饱和与权重问题)
- bert-2018 —— 第一次刷穿 GLUE 的模型,让 GLUE 一夜成名
- mmlu-2021 —— LLM 时代的”新 GLUE”,把测语言任务升级成测综合知识
关联
- bert-2018 —— 让 GLUE 出圈的关键模型,也是 GLUE 设计假想的”目标用户”
- mmlu-2021 —— 后继评测,GLUE 思路在大模型时代的延伸
- bigbench-2022 —— 200+ 任务的更大兄弟,但因为太杂没 GLUE 流行
- squad-2016 —— GLUE 里 QNLI 任务的源头数据集
反向链接
- mmlu-2021 —— MMLU — 用 57 个学科的多选题考一考语言模型