# 2411.04368_SimpleQA: Measuring short-form factuality in large language models * [https://arxiv.org/abs/2411.04368](https://arxiv.org/abs/2411.04368) * GitHub: [https://github.com/openai/simple-evals](https://github.com/openai/simple-evals) * 组织: OpenAI * 数据集: https://openaipublic.blob.core.windows.net/simple-evals/simple_qa_test_set.csv ## Abstract * SimpleQA 是一个用来测试语言模型回答简单事实性问题能力的评测集。 * 它有两个特点: 1. **有挑战性**:这些问题是专门设计来难倒 GPT-4 的。 2. **评分简单**:每个问题只有一个明确无误的正确答案。 * 模型的表现分为三类:正确、错误、未作答。 * 理想的模型应该**答对自己有把握的问题,跳过自己不确定的**。 ## 1.Introduction * 目前的大语言模型(LLM)有一个重要问题:它们有时会“胡说八道”,也就是产生不符合事实的回答,这被称为“幻觉(hallucination)”。这是限制它们广泛应用的一个关键障碍。 * 由于评估一个回答是否真实很难(尤其是长文本里包含很多事实),作者提出了一个简化方法:只看**简短、明确的事实性问答题**,每个问题只有一个正确答案。 * 为此,他们设计了一个名为 **SimpleQA** 的基准数据集,共有 4,326 个这类简短问题。 * 这个数据集具有以下特点: 1. **答案准确性高**:由两个独立的 AI 训练师确认答案。 2. **易用**:问题短小,运行快,便于自动打分。 3. **有挑战性**:对现有最强模型(如 GPT-4o 和 Claude)也很难,准确率不到 50%。 4. **题材广泛**:涵盖历史、科技、艺术、地理、电视节目等多种领域。 * 目标是用 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 的计算公式是: $$ F = \frac{2c}{2c + 2i + n} $$ * 其中: * $c$ 是答对的数量; * $i$ 是答错的数量; * $n$ 是没作答的数量。 * 如果模型面对一道题,它有超过 50% 的把握能答对,那么: * **猜这道题的期望得分**会 **高于直接跳过**这道题。 * 即使有可能猜错,**从总体 F-score 来看还是更划算**。 * 数学上,他们举了个不等式来证明这点: * 左侧表示猜测的预期 F 分数,假设正确的概率为 50/50;右侧表示未回答附加问题的分数。 * 表示“尝试猜”带来的期望得分更高。 * 公式 $$ \frac{2c+1}{2c+2i+n+2} > \frac{2c}{2c+2i+n+1} $$ ```note **一句话总结**:F-score 机制下,只要模型有超过一半把握答对,就应该选择猜答案而不是跳过。 ``` ### 推理过程 * F-score 原始公式: $$ F = \frac{2c}{2c + 2i + n} $$ * 场景设定: * 假设:模型预测这道题有 **50% 概率答对**,50% 答错; * 尝试作答之后的期望 F-score #### 情况 A:选择作答 * 答对(概率 0.5) * $c \to c + 1$ * 分母变为 $2(c+1) + 2i + n = 2c + 2 + 2i + n$ * 对应 F-score 为: $$ F_{\text{答对}} = \frac{2(c+1)}{2c + 2i + n + 2} $$ * 答错(概率 0.5) * $i \to i + 1$ * 分母变为 $2c + 2(i+1) + n = 2c + 2i + 2 + n$ * 对应 F-score 为: $$ F_{\text{答错}} = \frac{2c}{2c + 2i + n + 2} $$ * 期望 F-score = 两种结果的加权平均 * 公式 $$ F_{\text{平均}} = \frac{2c+1}{2c + 2i + n + 2} $$ #### 情况 B:放弃作答 * 放弃作答 * $n \to n + 1$ * 公式 $$ F_{\text{放弃}} = \frac{2c}{2c + 2i + n + 1} $$