常识推理一直是自然语言处理中比较棘手的问题。语言模型可以背诵事实、翻译句子、写代码,但面对"下雨天出门应该带什么"这类问题时,如果没有显式地学习过常识,模型往往束手无策。CommonsenseQA数据集正是为检验这类能力而设计的,它由美国人工智能研究机构AI2在2019年提出,题目全部围绕日常生活中的常识展开,是目前评估模型常识推理水平最常用的基准之一。

CommonsenseQA数据集的结构与特点
CommonsenseQA包含约1.2万道选择题,每道题提供五个候选答案,从A到E。数据分为训练集、验证集和测试集三部分,其中训练集约9700题,验证集约1200题,测试集标签不公开,需要提交官方评测服务器才能获得成绩。这种设定保证了评测的公平性,也避免了研究者直接在测试集上调参作弊的可能。
数据集的构建方式很有特色。它并非由人工直接编写问题,而是从ConceptNet知识图谱中抽取带关系的概念三元组,再由众包工人根据三元组编写自然的常识问题。例如从ConceptNet中的某个概念节点出发,构造出"在哪里可以把汉堡做得和煎蛋一样美味"这样的问题,候选答案包括烤炉、煎锅等。这种方式保证了问题背后确实存在知识图谱层面的推理路径。
相比同样是选择题形式的SWAG和HellaSwag,CommonsenseQA更强调对关系型知识的理解,而不是对事件发展的预测。题目往往涉及一个概念与多个概念的关联,模型需要综合多条常识线索才能锁定正确答案。这也是为什么很多在阅读理解任务上表现优秀的模型,迁移到CommonsenseQA上成绩会明显下滑。
主流模型在该数据集上的表现分析
早期直接使用GPT、BERT等模型在CommonsenseQA上微调,准确率大约在55%到75%之间徘徊,与人类水平相比差距明显。人类在该数据集上的准确率约为89%,这个数字成了模型们长期追赶的目标。随着RoBERTa、ALBERT、T5等更强的预训练模型出现,监督微调的成绩逐步提升到80%以上,但依然难以稳定超过人类。
到了大语言模型时代,情况发生了变化。GPT-4、Claude等模型即使不经过微调,通过零样本或少样本提示的方式,也能在CommonsenseQA上取得85%以上的准确率。这说明模型规模扩大后,常识知识被大量隐式地吸收进了参数里。不过值得注意的是,一些看似简单的题目仍然会让模型翻车,特别是那些需要结合多个概念关系进行排除推理的题目。
分析模型的错误案例可以发现,错误主要集中在几类情况:一是题目考查的概念关系在训练语料中较为罕见;二是多个候选答案都是合理选项,需要精细的语义区分;三是题目包含隐含的否定或比较逻辑,模型容易忽略。这些错误模式提示我们,单纯堆参数并不能彻底解决问题,针对性的增强手段依然有价值。
知识注入:把ConceptNet喂给模型
既然CommonsenseQA源自ConceptNet,一个直观的增强思路就是把知识图谱信息显式地引入模型。早期代表性工作如KEAR,采用DeBERTa作为骨干网络,将ConceptNet中与问题相关的概念关系作为附加输入,让模型在答题时同时看到问题文本和相关的知识三元组。这种方法在官方榜单上曾取得接近人类水平甚至超越人类基线的成绩。
具体实现上,通常会先对问题进行实体链接和概念抽取,然后从ConceptNet中检索与这些概念相连的边和邻居节点,把检索到的三元组序列化后拼接在问题后面,一起送入编码器。代码层面可以参考这样的思路:
from transformers import AutoTokenizer, AutoModelForMultipleChoice
# 加载基于DeBERTa的多选题模型
tokenizer = AutoTokenizer.from_pretrained("microsoft/deberta-v3-large")
model = AutoModelForMultipleChoice.from_pretrained("microsoft/deberta-v3-large")
def build_input(question, choices, kg_triples):
"""将问题、选项与知识图谱三元组拼接为模型输入"""
kg_text = " ".join(kg_triples) # 三元组序列化
inputs = tokenizer(
[question + " [SEP] " + kg_text] * len(choices),
choices,
truncation=True,
max_length=256,
return_tensors="pt"
)
return inputs知识注入方法的优点是可解释性强,能明确知道模型参考了哪些知识。缺点是依赖实体链接的质量,一旦概念抽取出错,引入的噪声反而会干扰判断。此外知识图谱覆盖度有限,很多新出现的概念在图谱中并不存在,这在实际应用中需要额外考虑。
思维链提示与检索增强的最新实践
除了改模型结构,提示工程的进展也为常识推理提供了新路径。思维链提示要求模型在给出答案前先写出推理步骤,例如"下雨天路面会湿,湿滑的路面适合穿防滑的鞋,所以答案是雨靴"。这种逐步推理的方式显著提升了大模型在CommonsenseQA上的表现,尤其对复杂题目效果明显。更进一步的自洽性方法让模型生成多条推理路径,通过投票选出最一致的答案,通常能再提升几个百分点。
检索增强生成是另一个热门方向。做法是在答题前先从知识库或语料库中检索与问题相关的段落,把检索结果作为上下文提供给模型。这样即使模型内部缺乏某条常识,也可以借助外部知识补齐。相比直接把整个ConceptNet塞进模型,检索方式更灵活,知识更新也更方便。
在训练策略上,还有几条实用的增强技巧值得尝试。数据增强方面,可以对训练集进行同义改写或利用大模型生成相似题目,扩充样本规模;训练技巧方面,采用两阶段训练,先在RACE等大规模选择题数据集上预训练,再在CommonsenseQA上微调,通常能带来一到两个百分点的提升。对于想快速上手的读者,建议先跑通RoBERTa基线,再逐步叠加知识注入和思维链提示,观察每一步的增益,这样更容易定位问题所在。
总结与展望
CommonsenseQA为常识推理提供了一个标准化的评测场,从中我们可以清晰地看到技术演进:从BERT时代的微调竞赛,到知识图谱注入,再到大模型的思维链推理,每一步都在缩小模型与人类之间的差距。但常识推理问题远未解决,数据集本身也存在偏差,例如标注噪声和候选答案分布不均的问题,模型在榜单上的高分并不完全等同于真实的常识理解能力。
未来的方向包括构建更大规模、更少偏差的常识评测集,发展能动态调用外部知识源的智能体架构,以及探索多模态常识推理。对开发者而言,掌握知识注入、思维链和检索增强这几种手段,已经足以应对大多数实际业务中的常识理解需求。理解模型为什么错,比单纯刷高分数更有价值,这也是研究常识推理问题的意义所在。
CommonsenseQA常识推理预训练语言模型修改时间:2026-09-07 21:13:44