2411.04368_SimpleQA: Measuring short-form factuality in large language models¶
组织: OpenAI
数据集: https://openaipublic.blob.core.windows.net/simple-evals/simple_qa_test_set.csv
Abstract¶
SimpleQA 是一个用来测试语言模型回答简单事实性问题能力的评测集。
它有两个特点:
有挑战性:这些问题是专门设计来难倒 GPT-4 的。
评分简单:每个问题只有一个明确无误的正确答案。
模型的表现分为三类:正确、错误、未作答。
理想的模型应该答对自己有把握的问题,跳过自己不确定的。
1.Introduction¶
目前的大语言模型(LLM)有一个重要问题:它们有时会“胡说八道”,也就是产生不符合事实的回答,这被称为“幻觉(hallucination)”。这是限制它们广泛应用的一个关键障碍。
由于评估一个回答是否真实很难(尤其是长文本里包含很多事实),作者提出了一个简化方法:只看简短、明确的事实性问答题,每个问题只有一个正确答案。
为此,他们设计了一个名为 SimpleQA 的基准数据集,共有 4,326 个这类简短问题。
这个数据集具有以下特点:
答案准确性高:由两个独立的 AI 训练师确认答案。
易用:问题短小,运行快,便于自动打分。
有挑战性:对现有最强模型(如 GPT-4o 和 Claude)也很难,准确率不到 50%。
题材广泛:涵盖历史、科技、艺术、地理、电视节目等多种领域。
目标是用 SimpleQA 来更准确、可靠地衡量模型的“事实性能力”。
2.Data Collection and Verification¶
2.1 问题与答案标准¶
单一答案:问题必须有一个明确无争议的答案,避免模糊问法(如“哪一年”比“什么时候”更明确)。
答案不随时间变化:问题要“永不过时”,例如限定具体剧集(如“第13季”),不允许加“截至2023年”。
有依据:创建问题时要提供可靠网页作为答案来源,另一位标注员独立回答问题,答案一致才保留。
要有挑战性:问题必须能难倒至少一个GPT模型(大多数是GPT-4),否则重新设计问题。
截止时间点:所有问题都需能在2023年12月31日前被回答。
2.2 数据质量¶
自动检测:使用ChatGPT自动检查问题是否违规(例如不明确、时效性差、多重答案),违规的退回修改。
独立验证:每个问题由第二位标注员独立回答,同时回答是否满足“唯一答案”和“答案不变”。
多来源验证:最终只保留至少有两个不同网站作为依据的问题。
人工抽查:从中抽1000个问题由第三位标注员回答,ChatGPT评估准确率为94.4%,最终估计整体错误率约为3%。
2.3 数据多样性¶
涵盖多个话题:科技(858)、政治(709)、艺术(550)等。
答案类型多样:约33%为日期,24%是人名,15%是数字,10%是地点,18%是其他。
来源广泛:大多数来自wikipedia.com,其次是fandom.com、ac.uk、imdb.com等。
2.4 评分与指标¶
评分方式:ChatGPT 判断模型答案是“正确”“错误”或“未尝试”:
正确:包含参考答案、无矛盾。
错误:与参考答案矛盾。
未尝试:没有回答或答案不完整。
核心指标:
整体正确率:正确回答问题的比例。
尝试正确率:在尝试回答中,答对的比例。
F-score:两者的调和平均值,反映整体表现。
惩罚式评分:可设定错误答案的负分值(如 -9),然后用“答对+1,未答+0,答错-9”的方式算总分,更严格衡量模型风险控制能力。
4.Measuring calibration¶
这段主要讲的是如何衡量大语言模型(LLM)是否“知道自己知道什么”,也就是“校准能力(calibration)”。
什么是校准?¶
校准指的是模型的信心值(自我评估)与真实准确率的一致程度。
比如一个模型说它对某个答案有 80% 的把握,那它在所有说 80% 把握的题上,实际答对的比例也应该是 80%,这就是“完美校准”。
怎么衡量校准?¶
有两种方法:
方法一:让模型说出它的信心值¶
提问时加入提示词,比如:“请给出你的最佳答案,并附上你对这个答案正确的信心百分比。”
然后统计不同信心水平下,模型实际答对的概率。
结果:
模型说得越有信心,准确率确实越高(有正相关)✅。
但总体来看,模型普遍高估了自己的能力(在 y=x 线下),即信心大于实际准确率 ❌。
大模型(如 gpt4o、o1-preview)通常比小模型(如 gpt4o-mini、o1-mini)更校准。
prompt:
Here is the question:
{question}
Please provide your best guess and a confidence score between
0% to 100% in the following JSON format:
{
"answer": "Your answer here",
"confidence_score": number
}
方法二:同一个问题问 100 次,看答案出现的频率¶
使用相同问题反复提问,看模型是否总给出同样答案。
如果某个答案出现频率很高,那说明模型“很有信心”。
然后看高频答案的实际正确率是否也高。
结果:
高频答案的准确率确实更高 ✅。
和第一种方法一样,大模型校准更好,频率越高,准确率越高。
总结¶
校准好:模型信心值 ≈ 真实准确率。
当前模型问题:通常太自信,准确率低于信心值。
改进方向:提高模型对自己答案信心值的准确性。
Appendix B Guessing strategy and F-score¶
虽然 F-score 是一个常用的评价指标,但它有一个问题:它鼓励模型在有超过 50% 把握答对时就去猜答案,而不是选择不回答。
如下为证明
F-score 的计算公式是: $
$其中:
是答对的数量; 是答错的数量; 是没作答的数量。
如果模型面对一道题,它有超过 50% 的把握能答对,那么:
猜这道题的期望得分会 高于直接跳过这道题。
即使有可能猜错,从总体 F-score 来看还是更划算。
数学上,他们举了个不等式来证明这点:
左侧表示猜测的预期 F 分数,假设正确的概率为 50/50;右侧表示未回答附加问题的分数。
表示“尝试猜”带来的期望得分更高。
公式 $
$
备注
一句话总结:F-score 机制下,只要模型有超过一半把握答对,就应该选择猜答案而不是跳过。
推理过程¶
F-score 原始公式:
场景设定:
假设:模型预测这道题有 50% 概率答对,50% 答错;
尝试作答之后的期望 F-score
情况 A:选择作答¶
答对(概率 0.5)
分母变为
对应 F-score 为: $
$
答错(概率 0.5)
分母变为
对应 F-score 为: $
$
期望 F-score = 两种结果的加权平均
公式 $
$
情况 B:放弃作答¶
放弃作答
公式 $
$