跳转到内容

HELM 2022 — 给语言模型做全身体检

待复核

HELM 是一套系统评测语言模型的框架。日常类比:以前看一个学生,只看数学期末分数;HELM 像体检表,不只看数学,还看语文、体育、视力、心理状态,以及每项检查是怎么做的。

放到语言模型里,“数学分数”就是常见的 accuracy,“体检表”就是场景、指标、模型、提示词和原始回答的完整记录。

这篇论文的核心不是发明一个新模型,而是问:如果语言模型已经能做问答、摘要、检索、推理和内容生成,我们到底应该怎么透明、可比较、可追踪地评价它?

HELM 的回答是:先画出评测空间,再选一批能落地的场景和指标,用统一条件跑 30 个模型,最后公开结果、提示词和模型输出。

不理解 HELM,下面这些事都很难解释:

  • 为什么一个模型在排行榜上分数高,不代表它更安全、更公平或更适合上线
  • 为什么同一个模型换一种 prompt,准确率可能大幅变化,评测结论也会跟着变
  • 为什么 LLM benchmark 不能只堆更多题,还要说明题来自什么任务、什么领域、什么语言
  • 为什么今天常见的”多指标评测”、“透明评测报告”、“模型卡式结果页”都绕不开 HELM 的思路
  1. 先画地图,再挑路线:HELM 把评测拆成 scenario 和 metric。类比:旅行前先看地图,知道城市、景点、交通都有哪些,再决定这次实际去哪几站。

  2. 一张表看多个维度:论文不是只看 accuracy,而是同时看校准、鲁棒性、公平性、偏见、毒性和效率。类比:买电脑不能只看跑分,还要看续航、发热、维修成本。

  3. 统一条件才方便比较:HELM 尽量让模型面对同一批场景、同一套指标、同一类 prompting 流程。类比:运动会要同一跑道、同一起点、同一计时规则,否则名次没有意义。

案例 1:把”评测题”写成 scenario

Section titled “案例 1:把”评测题”写成 scenario”
scenario:
task: question_answering
domain: open_book
language: English
dataset: NaturalQuestions
metrics:
- accuracy
- calibration
- robustness

逐部分解释

  • task 说明模型要做什么,这里是回答问题
  • domain 说明材料来自哪里,这里允许看上下文材料
  • language 防止把英语结果误当成所有语言结果
  • metrics 说明不只判对错,还要看模型有没有把握、遇到扰动会不会掉分
const standard = 0.726
const typoPerturbed = 0.389
const robustScore = Math.min(standard, typoPerturbed)
console.log(robustScore) // 0.389

逐部分解释

  • standard 是普通题面下的正确率
  • typoPerturbed 是题目被加入拼写扰动后的正确率
  • Math.min 表达 HELM 的保守态度:最坏情况掉得厉害,就不能只展示漂亮的普通分数

案例 3:prompt 也是评测条件的一部分

Section titled “案例 3:prompt 也是评测条件的一部分”
{
"instructions": "Answer the question.",
"maxTrainingInstances": 5,
"temperature": 0,
"numRuns": 3
}

逐部分解释

  • instructions 是模型看到的任务说明,换一句话可能影响结果
  • maxTrainingInstances 对应 few-shot 示例数量,HELM 常用最多 5 个上下文例子
  • temperature 控制生成随机性,评测时要固定
  • numRuns 用来观察不同示例抽样带来的波动
  1. 只看排行榜第一名:原因是单一 accuracy 会遮住校准、公平性、毒性和效率的代价。

  2. 把 benchmark 当成客观真理:原因是场景和指标都是人为选择,HELM 也明确列出自己缺了哪些场景。

  3. 忽略 prompt 细节:原因是多选题用 joint、separate 或 calibrated separate,可能让同一模型分数差很多。

  4. 把一次评测当成永久结论:原因是 API 模型会更新,训练数据污染也可能让结果随时间失真。

适用

  • 想比较多个语言模型在同一批任务上的整体表现
  • 想从 accuracy 扩展到安全、公平、鲁棒和效率等多指标
  • 想设计一个可解释、可复现、能持续添加新场景的评测系统
  • 想读懂现代 LLM leaderboard 背后的评测假设

不适用

  • 只想给单个业务功能写几条验收用例,HELM 的框架会显得太重
  • 想证明某个模型”绝对最好”,HELM 只能说明给定场景和指标下的比较结果
  • 想覆盖所有语言、所有任务、所有风险,论文自己也承认这做不到
  • 想跳过原始输出直接相信总分,HELM 的透明性恰恰要求回看模型行为
  • 2018-2020 年:BERT、GPT-3 等模型快速扩大,GLUE、SuperGLUE 和 GPT-3 evaluation suite 让大家看到”一套题评一批模型”的价值。
  • 2021 年:foundation model 的影响变大,社区开始更认真讨论透明度、风险、偏见和模型访问权。
  • 2022 年:HELM 发布,把”语言模型评测”从多个零散榜单整理成场景、指标、模型和提示策略的系统框架。
  • 论文实验期:作者跑了 4,939 个 model-scenario 组合,消耗超过 120 亿 tokens 和 1,700 多万次查询。
  • 后续影响:很多 LLM 评测报告开始默认给出多维指标、原始样例、模型版本和评测配置,而不是只报一个总分。
  • benchmark 是价值选择:选哪些场景、哪些指标,就是在告诉研究社区什么值得优化。
  • 透明比单分数更重要:HELM 公开 prompts、completions 和细分结果,让别人能追问分数从哪里来。
  • 模型能力不是一条直线:更大模型通常更准,但不必然更公平、更稳、更省钱。
  • 标准化也有代价:统一 prompt 方便比较,却可能没有给每个模型最适合自己的使用方式。
  • 论文 PDF:Holistic Evaluation of Language Models(原文很长,先读摘要、1.1、1.2、7、8)
  • 结果网站:HELM(可以看模型输出和细分指标)
  • bigbench-2022 —— 也是大规模语言模型评测集合,适合和 HELM 对比”堆任务”与”先建分类法”
  • lm-evaluation-harness —— 更偏工程工具,理解 HELM 后再看它会更清楚为什么要固定配置
  • glue-2018 —— NLP benchmark 从单任务走向多任务集合的重要前史
  • large-annotated-corpus-learning-natural-language-inference-2015 —— paper-context 给出的相关引用,代表早期用标准数据集推动模型比较的路线
  • gpt-3 —— HELM 沿用了 few-shot prompting 的评测接口,但把结果拆得更细
  • instructgpt —— HELM 发现 instruction-tuned 模型在多个核心指标上很强
  • mmlu-2021 —— MMLU 是 HELM 里衡量知识和考试式能力的重要场景之一
  • bigbench-2022 —— 与 HELM 同期推动”更宽覆盖”的语言模型评测
  • chatbot-arena-2024 —— 后续用人类偏好做模型比较,补足 HELM 自动指标的另一面
  • ms-marco-2016 —— HELM 把信息检索也纳入语言模型评测,MS MARCO 是其中代表数据
  • colbert-v2 —— HELM 的检索实验会把 LLM 排序能力和专门的神经检索器放在一起比较
  • bigbench-2022 —— BIG-bench — 204 道题给大模型出考卷
  • mmlu-2021 —— MMLU — 用 57 个学科的多选题考一考语言模型