用 2 万条真人AI海龟汤数据评估大模型推理能力

GPT-4o, Kimi-Chat, DeepSeek, Qwen2-72b, LLama3.1谁才是真实推理游戏中的王者

海龟汤

人生中第一次接触海龟汤游戏是我的初中英语课上课间休息时老师突然问我们

一个男人走进一家餐厅点了一碗海龟汤他吃完问服务员这是真的海龟汤吗服务员说是的他就举枪自杀了请问为什么

游戏规则是你可以提问或给出猜测老师只能回答 是/否/和故事无关比如你可以问男人是否曾经经历灾难但不能问男人今年多少岁我们猜了好多轮上课铃响了老师揭晓答案

他和妻子度蜜月时遭遇海难流落荒岛由于没有粮食妻子被饿死同伴用妻子的肉煮汤给他喝骗他是海龟汤后来他被路过的船只救走今天他喝到真正的海龟汤才想起来当时吃下的是妻子的肉悔恨之下举枪自尽

在海龟汤中展现给玩家的是汤面而沉在水底的故事真相被称作汤底这个游戏至少 2 个人才能玩有一个人是裁判他在知晓汤底的情况下对玩家的猜测作出判定给出是/否/无关的回答

我想能否做一个 AI 海龟汤游戏将汤面和汤底告诉给大模型让它对玩家的猜测给出判定我在去年 12 月做了个GPTs, 它能自动生成新故事用 DALLE 画插图判定玩家提问但很快我发现AI 生成的海龟汤味道寡淡玩起来没有趣味并且海龟汤的魔力往往就在于故事本身血腥/重口这经常导致玩到一半因为违反 OpenAI 审核政策而无法继续

今年 6 月我终于意识到不一定非得由 AI 生成故事让它充当裁判即可我开始在网上搜罗当晚独自在客厅看完了 1500 个海龟汤其血腥恐怖程度大夏天的晚上我都感觉后背发凉最终我筛选了 32 个相对不恐怖不违反伦理有逻辑的故事开始写代码

我基于最佳平替的代码很快完成了开发你可以随机开始一个故事有 8 次猜测机会猜测正确或次数耗尽就会公布答案产品取名汤很热为了增加沉浸感我给每个故事都配了插图和环境音

汤很热-一个人的海龟汤游戏

不过AI 海龟汤游戏并不是本文的重点

大模型比人类笨多了

我发现有很多用户吐槽AI 作为裁判的实力堪忧比如

许多玩家反馈AI判定不合理

起初我以为是我用的模型(DeepSeek)不行直到我将模型切换成当时风评最好的 Claude 3.5 Sonnet发现许多错判仍然无法避免例如

{
    "故事": "小红裙",
    "汤面": "姐姐为我选了一件小红裙, 我穿着去上学了, 晚上回家发现了一具尸体",
    "汤底": "我的母亲和老师有染, 他们总趁着父亲不在时温存. 而为老师提供信息的
    就是我的小红裙, 每当我穿着小红裙去上学就说明那晚父亲准不在. 这天妈妈忙,
    姐姐为我选了一件小红裙, 老师看见以为父亲不在家, 便来我家找母亲, 正好被父亲
    撞上, 然后父亲杀了他."
},

用户提问: "我如果不穿小红裙是不是不会有人死", 几乎所有模型都回答"不是/不相关"

再比如

{
    "故事": "山顶",
    "汤面": "一个人住在山顶的小屋里, 半夜听见有敲门声音, 但是他打开门却
    没有人,于是去睡了. 第二天, 有人在山脚下发现死尸一具, 请问发生了什么?",
    "汤底": "山顶的小屋的门前是悬崖, 悬崖下的人好不容易才爬上来,
    想要敲门求救. 一开门, 就又被推了下去, 最后从山顶上掉下去摔死了"
},

用户提问: "门是朝外开的", 几乎所有模型都回答"不是/不相关"

我意识到海龟汤游戏也许非常适合评测大模型(LLM)在真实场景下的推理能力

真实环境下的 LLM 推理能力

现在大模型被广泛用于游戏客服或者许多和用户直接交互的场景这些场景有如下特点

  1. 用户的提问千奇百怪无法预估但 AI 需要给出合乎逻辑的应答
  2. 在给定上下文对情况下AI 需要回答用户一些明确的例如已知一件商品的生产日期和保质期用户在 2024 年 8 月 9 日提问202 几年过期
  3. 有些游戏需要在用户进入某些关卡或发现关键线索时触发下一步剧情那么判定用户是否真的发现真相就显得尤为重要

与学术界现有的评估指标相比在真实环境下与真人互动的场景中模型面临的情况要复杂得多然而也是在这样的场景下评估模型的表现才具有更大的实用价值

现有评估指标出了什么问题

如果你经常关注大模型评测榜单(如LMSYS)一定对 MMLUMT-Bench 等评测指标(Benchmark)不陌生我在这里简单解释它们的评测方法

MMLU

MMLU 是广为人知的大模型评估指标它包含了涉及物理天文计算机生物临床医学等 57 个科目的 15,000 多个多项选择题但这其中中存在大量死记硬背的考题例如

以下哪一个是远程木马?
A:内存泄漏 B:缓冲区溢出 C:处理能力较低 D:编程效率低下

这些基础常识当然很重要但过分强调背景知识会让 MMLU 无法衡量模型真正的语言理解能力逻辑外推能力假如一个孩子因为没学过微积分计算不出曲边三角形面积我们会说他笨吗

MT-Bench

MT-Bench 是一个多轮问题数据集被评测的模型需要回复预先设置好的问题并回答下一轮的提问但因为是开放式对话并不存在确定的标准答案模型的回答质量由 GPT-4 来审判

因此MT-Bench无法评估比 GPT-4 更强的模型同时 GPT-4 作为法官可能会存在偏见对某些模型输出打低分而更偏爱来自 ChatGPT 的回答

Chatbot Arena

正是以上评测指标存在的种种问题LMSYS 最终选择了最简单粗暴的方式打擂台

真人用户发起聊天系统会随机挑选 2 个模型给出回答真人通过投票的方式选出更满意的模型最终会形成一个所有模型的综合评分

这是目前可信度最高的方法但缺点也很明显一个新模型需要公开测试很久获得大量反馈其分数才足够可信并且分数代表综合能力无法仅对某个细分领域(代码/数学)进行评估

海龟 Benchmark

因此我制作了一个新的大模型评估指标海龟 Benchmark

收集用户在玩 AI 海龟汤游戏中输入的猜测逐一进行人工标注(对不相关)然后用这个数据集测试大模型的评判结果相较于真实结果的准确率

我发现现有评测指标的种种问题在海龟 Benchmark 上都可以完美避开

  1. 不需要额外背景知识
    不同的大模型训练所使用的知识库不同导致一些测评很难公正但海龟汤游戏里几乎包含了推理所需的全部信息一旦得知汤面和汤底大模型就能作出判断这使得评估被限定在了模型的推理能力
  2. 结果是客观的不以人类偏好为转移
    例如在上述故事山顶小屋在悬崖边主人半夜开门将登山者推下山导致后者被摔死因此门是朝外开的这个猜测就是正确的这种正确性是客观的和人的感受无关
  3. 结果明确很容易量化
    许多评估指标里模型的输出结果是一段文本回答这导致难以量化模型效果但海龟汤的猜测结果只有三个不相关只要 准确标注了测试集任何人就可以用它来测试任何自己想测试的模型并获得量化的数值结果
  4. 正常人类获知汤底的情况下可以 100%答对
    这使得人工标注不会太过复杂这条也说明现阶段的大模型智商相比人类还有很大差距
  5. 数据永远更新无法作弊
    有部分厂商会直接将现有的 benchmark 数据集加入训练来刷分但在海龟 Benchmark 这种模式下则行不通模型评估的是用户的猜测而不是故事本身每隔一段时间就会有玩家产生新的猜测而人类的脑洞之大导致猜测几乎无法被穷尽

例如针对上述故事小红裙就有千奇百怪的用户猜测

用户猜测  判定
红裙子跟诅咒有关  ❌
红裙子是姐姐的阴谋  ❌
我并没有去上学  ❌
有其他的人来我们家  ✅
红裙是求救信号  ❌
死的是穿小红裙的人  ❌
红裙的颜色是被血染红了  ❌
尸体是我的爸爸  ❌
上学不允许穿小红裙  ❌
我是凶手  ❌
我父亲杀人了  ✅
穿了小红裙导致别人认为我是其他人  ❌
死者认识我妈  ✅
死者与我家里人有仇  ❌

因此虽然海龟汤的故事本身可能比较无厘头但让 AI 依据海龟汤内容进行合理推断却可以做到相当程度上的客观

这有点像弱智吧一个从百度弱智吧抓取的 200 多条提问(如每个人工作都是为了赚钱, 那么谁在亏钱) 这些奇葩的问题却显著增强了 AI 的逻辑推理能力

海龟数据集

AI 海龟汤游戏有 32 个故事上线后的 2 周里共有 4000 多个用户提出了 2.6 万个猜测我从日志中解析出结果开始进行数据清洗这包含

  • 去除重复提问例如海龟汤有毒吗他喝的汤是否有毒本质是同一个问题
  • 去除无法用 是/不是/不相关 回答的提问例如 男人今年几岁
  • 去除含糊不清的提问例如他对闺蜜做了什么吗闺蜜这个汤里是丈夫与闺蜜出轨但丈夫并没有对闺蜜做任何实际的动作所以这个回答很难给出准确回答

随后我开始进行人工标注这个过程持续了 2 周最终我们从 2.6 万条数据中获得了 4448 条干净的数据标注过程中我们发现不相关这两个标签在有些情况下不好区分例如在故事海龟汤对于海龟是男人养的这个猜测回答不相关好像都对所以最终我们决定合并这两个类别于是标注变成了 2 类错/不相关

* 合并这两类会让任务变得简单有的模型能蒙混过关之后我们可能会重新标注一次将二者分开变成三类并给出测试结果

标注完我开始跑模型测试我挑选了 11 个我感兴趣的模型

  • Qwen2 70B (通义千问)
  • Kimi-Chat (月之暗面)
  • Deepseek
  • 豆包
  • Claude 3.5 Sonnet
  • Minimax abab6.5s
  • LLama3.1 405B
  • LLam3.1 70B
  • GPT-3.5
  • GPT-4o-mini
  • GPT-4o

我在 4448 条数据上测试了所有结果过滤掉了所有模型都答对的简单问题在剩下的 1699 条困难问题上进行了二次确认标注最终我们得到了 1537 条准确率几乎 100%的标注结果

我分别用不带示例(zero-shot)和带有 2 个示例(2-shot)的 prompt测评了模型的输出结果准确率

评测结果

最终各模型准确率排名如下

可以看到大部分模型在加了示例后性能有了微弱提升

我担心可能存在这么一种情况模型在某个故事里表现极差而该故事的测试样本又非常多导致总的平均准确率有偏差为了排除这种情况我统计了按故事粒度的模型准确率也就是分别计算模型在这 32 个故事上各自的准确率然后除以 32我发现除了通义千问和 GPT-4o 外上面的排名基本不变

将 2-shot 结果以横轴为模型总的准确率纵轴为模型平均故事准确率绘制图表如下:

x轴是总准确率,y轴是平均故事准确率。

* 为了更直观地比较其他模型差异我将表现过差(<0.51)的模型 GPT-3.5 从坐标轴中舍弃了

从上图也可以直观感受各类模型的表现和差距

  • Claude 3.5 Sonnet 是当之无愧的第一梯队并且远远领先其他模型
  • GPT-4o通义千问Kimi-ChatLLama3.1 405B 和 Minimax 是第二梯队我尽量避免更细的划分但这些模型能力按排序依次下降降幅肉眼可见
  • 豆包DeepSeek 和 LLama3.1 70B 是第三梯队
  • GPT-4o-mini 是第四梯队
  • GPT-3.5 早就应该被淘汰了

以上评测仅针对模型的中文理解和推理能力如果之后有经费和精力我会考虑将所有的故事和测试问题翻译成英文再使用英文 prompt 重新测试一遍以消除因为语言而造成的模型性能下降

测试你关心的模型

上述模型可能不包含你关心的模型并且为了排除因为我的 prompt 能力参数和温度设置有问题造成测评结果不准我将完整的标注数据prompt评估代码以及我们的测试日志开源了

https://github.com/mazzzystar/TurtleBench

你可以对任何你感兴趣的模型进行测试如果你有了测试结果或遇到问题欢迎提交 issue

感谢

五源资本的 Steven 个人赞助了此项测评让我得以在 11 个模型上测试这么多数据实习生 Jerry 和我一起标注了 26000 条数据辛苦了

如果你对 model evaluation 感兴趣可以联系 Steven 进一步探讨 [email protected]