GLUE Benchmark(General Language Understanding Evaluation)
GLUE(General Language Understanding Evaluation) 是一个用于 自然语言处理(NLP)模型评估 的 基准测试集,用于衡量 预训练语言模型(如 BERT、GPT、T5、RoBERTa) 在多个 NLP 任务上的表现。
GLUE 测试的是模型的通用语言理解能力,涵盖 情感分析、文本蕴含、语义相似度、语法错误判断 等多个任务。
1. GLUE Benchmark 任务
GLUE 包含 9 个任务,涵盖 文本分类、句子关系判断、语义相似度计算 等常见 NLP 任务。
任务 | 数据集 | 任务类型 | 训练样本数 | 评估指标 |
---|---|---|---|---|
CoLA | Corpus of Linguistic Acceptability | 语法判断(判断句子是否符合语法) | 8.5K | Matthews 相关系数(MCC) |
SST-2 | Stanford Sentiment Treebank | 情感分析(正/负) | 67K | 准确率(Accuracy) |
MRPC | Microsoft Research Paraphrase Corpus | 句子语义匹配(判断两个句子是否相似) | 3.7K | F1 / 准确率 |
QQP | Quora Question Pairs | 问句语义匹配(判断两个问题是否相同) | 364K | F1 / 准确率 |
STS-B | Semantic Textual Similarity Benchmark | 句子相似度评分(0-5) | 7K | 皮尔逊相关系数 / Spearman 相关系数 |
MNLI | Multi-Genre Natural Language Inference | 文本蕴含(判断句子间的逻辑关系) | 393K | 准确率 |
QNLI | Question Natural Language Inference | 问答推理(判断回答是否来自文章) | 105K | 准确率 |
RTE | Recognizing Textual Entailment | 文本蕴含(判断句子间逻辑关系) | 2.5K | 准确率 |
WNLI | Winograd Natural Language Inference | 核心指代消解(判断代词所指内容) | 634 | 准确率 |
2. GLUE 任务示例
SST-2(情感分类)
句子 | 标签 |
---|---|
This movie is great! | 1(正向) |
I hated this film. | 0(负向) |
MRPC(句子相似性)
句子 1 | 句子 2 | 标签 |
---|---|---|
The car was crushed. | The vehicle was wrecked. | 1(相似) |
She loves dogs. | He dislikes cats. | 0(不相似) |
MNLI(文本蕴含)
前提 | 假设 | 标签 |
---|---|---|
A man is playing a guitar. | A musician is performing. | Entailment(蕴含) |
A child is reading a book. | A person is swimming. | Contradiction(矛盾) |
A woman is sitting on a chair. | Someone is sitting. | Neutral(中立) |
3. GLUE Benchmark 评分
GLUE 评分 综合 9 个任务的表现,但 WNLI 任务通常被忽略,因为它的数据质量较差。
GLUE 评分通常以 任务平均分 来衡量 NLP 模型的能力,例如:
模型 | GLUE 总分 |
---|---|
BERT (2018) | 80.5 |
RoBERTa (2019) | 88.5 |
T5-11B (2020) | 89.7 |
4. 如何在 GLUE 上测试 NLP 模型
使用 Hugging Face datasets
加载 GLUE
from datasets import load_dataset
# 加载 SST-2(GLUE 任务之一)
dataset = load_dataset("glue", "sst2")
# 查看数据
print(dataset["train"][0])
使用 transformers
微调 BERT
from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments
# 加载预训练 BERT 模型
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2)
# 处理数据
def preprocess(examples):
return tokenizer(examples["sentence"], truncation=True, padding="max_length")
encoded_dataset = dataset.map(preprocess, batched=True)
# 训练参数
training_args = TrainingArguments(output_dir="./results", evaluation_strategy="epoch")
trainer = Trainer(model=model, args=training_args, train_dataset=encoded_dataset["train"], eval_dataset=encoded_dataset["validation"])
# 开始训练
trainer.train()
5. GLUE vs SuperGLUE
GLUE 是 2018 年提出的基准,但它的任务相对简单。
2019 年,提出 SuperGLUE,比 GLUE 更难,更适用于大规模 NLP 预训练模型。
Benchmark | 任务数 | 难度 | 适用模型 |
---|---|---|---|
GLUE | 9 | 较简单 | BERT、GPT、RoBERTa |
SuperGLUE | 8 | 更难 | T5、GPT-3、PaLM |
6. 结论
- GLUE 是 NLP 预训练模型的标准评测基准,包含 9 个文本理解任务。
- 评估 NLP 模型的泛化能力,常用于 BERT、RoBERTa、T5 等 Transformer 模型。
- GLUE 任务涵盖情感分析、文本蕴含、句子相似性等,适用于多种 NLP 应用场景。
- Hugging Face 提供了 GLUE 数据集,可以用于快速训练和测试 Transformer 模型。