预测式人类偏好:从模型排名到模型路由
构建 AI 应用的一大难题是如何挑选模型。但如果我们不必挑选呢?如果我们能为任何 prompt 预测出最佳模型呢?预测式人类偏好(predictive human preference)旨在预测用户在特定查询下可能更偏好哪个模型。
人类偏好已成为 AI 模型开发中的北极星和强大工具。它指导着 RLHF、DPO 等后训练技术,也是 LMSYS 的 Chatbot Arena 等平台用来给 AI 模型排名的依据。
Chatbot Arena 旨在确定哪个模型总体上更受欢迎。而我想探索的是:能否针对每一条查询,预测出用户会偏好哪个模型。
预测式人类偏好的一个应用是模型路由。例如,如果我们提前知道,针对某个 prompt,用户更偏好 Claude Instant 的回复而非 GPT-4,且 Claude Instant 比 GPT-4 更便宜、更快,就可以把这个 prompt 路由到 Claude Instant。模型路由有潜力在提升回复质量的同时降低成本和延迟。
另一个应用是可解释性。描绘出模型在不同 prompt 上的表现,能帮助我们理解该模型的优势与短板。详见 实验结果 一节中的示例。
下面展示了针对 prompt "对文本嵌入进行聚类的最佳方法是什么?"时,不同模型对之间预测式人类偏好的可视化结果。预测由我的简易偏好预测器生成。(GPT-4, GPT-3.5-Turbo) 单元格的亮黄色表示,预测器认为对于该 prompt,GPT-4 的回复很可能优于 GPT-3.5-Turbo 的回复。
本文先讨论 Chatbot Arena 的正确性,并将其作为评估偏好预测正确性的基线,再讨论如何构建偏好预测器以及初步实验结果。
使用人类偏好对模型进行排名
近年来,用偏好信号(即模型间的对比)来给模型排序的做法越来越流行。除了支撑 LMSYS 的 Chatbot Arena 之外,许多模型厂商(Anthropic、Gemini、ChatGPT 等)也在生产环境中用它来评估自家模型。
补充说明:一些在生产环境中部署过这套系统的朋友告诉我,大部分用户并不会认真对比两个回答,而是随机投一个。这种做法会引入大量噪声。不过,只要随机投票本身没有明显偏差,那一小部分认真投票的用户所给出的信号,有时也足以判断哪个模型更受欢迎。
偏好排序的原理
偏好排序分两步:
- 收集用户偏好的对比数据。
- 基于这些对比数据计算出模型排名。
具体做法是:对于每条请求,选出两个或更多模型来回答。再由人工或 AI 评判员选出胜者,评判过程对模型身份保持盲区。每一次对比称为一场 match。这样就能得到一组组对比结果。
| Match ID | Prompt | Model A | Model B | Winner |
| 1 | … | Model 1 | Model 2 | Model 1 |
| 2 | … | Model 3 | Model 1 | Model 1 |
| 3 | … | Model 1 | Model 4 | Model 4 |
| ... | ... | ... | ... | ... |
拿到对比数据后,就需要据此计算模型的排名。最常用的两种排名算法是来自国际象棋领域的 Elo,以及来自电子游戏领域的 TrueSkill。
虽然 Chatbot Arena 把模型得分称作"Elo 分数",但他们实际上并没有用 Elo。2023 年 12 月,他们切换到了 Bradley-Terry,只是把得到的分数做了缩放,让它们看起来像 Elo(可以看他们的 notebook)。
给定一组历史对战结果,Bradley-Terry 算法会找到使这些结果出现概率最大的模型得分,从而把模型评分转化成一个最大似然估计问题。每个训练样本的输入是参与对战的两个模型,输出是对战结果。假设没有平局,对战结果为 0(a 胜)或 1(b 胜)。
Chatbot Arena 排名的正确性
同样的对战结果,不同的排名算法会给出不同的排名。比如 Elo 算出来的排名可能和 Bradley-Terry 算出来的不一样。我们怎么知道一个排名是否正确?
本质上,模型排名是一个预测问题:我们从历史对战结果算出一个排名,再用它来预测未来的对战结果。排名的好坏取决于它预测未来对战结果的准确程度。
假设模型 A 和模型 B 比赛,如果模型 A 得分更高,就意味着排名算法预测 A 胜出。如果用户也确实更喜欢排名更高的模型,那这次预测就算正确。
评测数据
为了计算 Chatbot Arena 排名的准确率,我用了他们 2023 年 7 月发布的数据,包含 20 个模型之间 33K 条众包比较。我选这个较小的数据集而不是他们 2024 年 1 月的数据集,是因为它包含每场对战使用的提示词,而后面做预测人类偏好时需要用到。在这个数据集上做评测,也方便后面把我的模型和 Bradley-Terry 算法做对比。
下面是该数据集 2023 年 7 月版本的一个示例。
| 提示词 | 模型 A | 模型 B | 获胜方 | 模型 A 的回答 | 模型 B 的回答 |
| 谁曾是英国最后一位君主 | koala-13b | vicuna-13b | 模型 A | 英国最后一位君主是伊丽莎白二世女王,她从 1952 年统治到 2020 年。 | 英国现任君主是伊丽莎白二世女王。她自 1952 年起担任君主,是英国历史上在位时间最长的君主。 |
作为参考,数据集中排名前 7 的模型的 Bradley-Terry (BT) 得分如下。
- GPT-4:1189
- Claude-v1:1150
- Claude-instant-v1:1110
- GPT-3.5-Turbo:1104
- WizardLM-13B:1058
- Vicuna-13b:1040
- Guanaco-33b:1031
为了构建测试集,我随机抽取了 10% 的数据(3300 个样本)。每场比赛有三种可能的结果:模型 A 获胜、模型 B 获胜或平局。如果将平局视为两场比赛(一场模型 A 获胜、一场模型 B 获胜),这仍然可以转换为一个二分类问题。
结果
我发现,在测试集的所有非平局比赛中,Bradley-Terry 得分较高的模型有 74.1% 的概率更受偏好。也就是说,在一场比赛中如果始终预测排名较高的模型为获胜方,准确率将达到 74.1%。
| 测试数据 | 输出类别 | 样本数 | BT 准确率 |
| 所有比赛 |
|
3,300 | 53.33% |
| 非平局比赛 |
|
2,367 | 74.1% |
| 涉及 GPT-4 的非平局比赛 |
|
355 | 85.1%(始终选择 GPT-4 为获胜方) |
早在 2023 年 7 月,GPT-4 被公认为遥遥领先的的最强模型(那时 Gemini、Mistral、Claude-v2 都还没出现)。但用户是否在任何情况下都更偏爱 GPT-4 呢?并非如此。在 GPT-4 参与的 355 场非平局对战中,GPT-4 的胜率为 85.1%。
这说明,即使 GPT-4 是总体表现最好的模型,仍然存在一些提示能让其他模型胜过它。如果我们能识别出这些提示,以及在这些提示上表现最好的模型,就可以把相应的请求路由到最合适的模型,从而提升回答质量。
预测每个提示上的人类偏好
如果说排序算法是为了找出整体上更强的模型,那么预测人类偏好则是为了找出在每条提示上更合适的模型。举例来说,如果我们事先知道对于某个提示,GPT-3.5 和 GPT-4 的效果相当,但 GPT-3.5 更便宜,就可以把这条提示路由到 GPT-3.5。又或者我们知道 Mistral-7B 在某个提示上能和 GPT-4 打平,且 Mistral-7B 更快,就可以把请求路由给 Mistral-7B。
模型路由还能帮助规划预算。比如,你只有足够的预算让 50% 的请求走最强模型,其余走较弱的模型,这时你希望只把那些确信弱模型也能答好的请求交给它。
实验设置
我把预测人类偏好看作一个二分类任务:给定两个模型的对战结果,预测哪一方会胜出。如果模型 A 获胜的概率接近 0.5,就可以视为平局。如果 Bradley-Terry 模型只接收 (model_a, model_b) 作为输入,那么偏好预测器则接收 (prompt, model_a, model_b) 作为输入。
我的偏好预测器架构如下。模型编码器和偏好预测器都是神经网络,可以单独训练,也可以联合训练。我使用了 DistilBERT 作为提示编码器。
我用了 LMSYS 2023 年 7 月数据集的 90% 来训练模型。实验发现,只用非平局(non-tie)的对战数据训练时,预测器效果更好(比同时用平局和非平局数据更好)。每次对战,我会以 50% 的概率随机交换两个模型的先后顺序。
剩余 10% 的数据用来评估模型,也就是上文评估 Chatbot Arena 排名正确性时用的同一份测试集。
| 数据划分 | 全部对战 | 非平局对战 |
| 训练集 | 29,700 | 20,927 |
| 测试集 | 3,300 | 2,367 |
补充说明:本应该单独划分一份验证集来做超参数调优,但考虑到数据量有限且这只是概念验证,所以就没做(主要是懒)。这些对战来自 20 个模型,共组成 190 个模型对。20,927 次对比平均下来,每个模型对只有约 110 次比较。
实验结果
我在两种设定下评估了偏好预测器:
- 只输入
model_a和model_b。这是为了验证这个仅凭模型名称的预测器,能否比 Chatbot Arena 的评分更准确地预测对战结果。 - 输入
(prompt, model_a, model_b)。这是为了验证加入 prompt 后是否有助于提升对战结果的预测准确率。
实验结果显示,在所有非平局对战上,我的偏好预测器不用 prompt 时预测准确率为 75%,加入 prompt 后提升到 76.2%。这说明人类对模型的偏好确实会随 prompt 不同而变化。提升幅度虽然看起来不大,但在大规模场景下 2.1% 的提升其实是相当可观的。
| 评估数据 | 评估样本数 | Chatbot Arena | 偏好预测器 (无 prompt) |
偏好预测器 (有 prompt) |
| 非平局对战 | 2,367 | 74.1% | 75% | 76.2% |
| vicuna-7b | 985 | |||
| RWKV-4-Raven-14B | 970 | |||
| gpt4all-13b-snoozy | 915 |
尽管只是一个简易预测模型,但它似乎能捕捉到不同模型的表现规律。其中一个规律是:对于简单提示,弱模型的表现可以(几乎)赶上强模型;但在更具挑战性的提示上,用户明显更倾向于选择强模型。下图展示了在一条简单提示("hello, how are you?")和一条困难提示("Explain why Planc length …")上预测的人类偏好情况。
下面是这两个提示对应的模型排名。简单提示下的分数差距远小于困难提示下的差距。在两种提示下排名不同的模型已用红色标出。
预测器还非常有把握地认为,GPT-4 在俄语查询和代码编写类查询上会更受偏好。例如,对于下面这条俄语查询,GPT-4 对所有其他模型的平均预测胜率高达 91.55%。值得注意的是,claude-v1 被预测在这条查询上表现不错,而 claude-instant-v1 则被预测表现较差。
总结
我的这个初步实验表明,只需相当少量的数据,预测人类偏好就是可行的。预测人类偏好在很多场景下都有潜在用途——模型路由和可解释性只是其中两个例子。
预测人类偏好是模型路由的第一步,也是最关键的一步(另一个关键步骤是路由策略)。随着越来越多的模型被开发出来,每个模型的能力和成本结构各不相同,模型路由具有明确的经济价值。
据我所知,目前有四家公司(其中两家尚未公开)在做模型路由方向。其中一家初创公司 Martian 已经公布了 900 万美元种子轮融资。LMSYS 也在做模型路由,作为他们在模型对比评测领域的自然延伸。
我的实验采用的是人工标注对比,而 LMSYS 的同学告诉我,由于众包标注噪声大、专家标注成本高,他们发现用 GPT-4 来对比两个回答的效果反而更好。根据问题的复杂度不同,用 GPT-4 生成一万组对比只需 200 到 500 美元,对于想试水的公司来说非常划算。
这是我近期做过的最有趣的业余项目,很想多聊一些。感兴趣的可以参加我在 3 月 5 日(周二)太平洋标准时间上午 9:30 举办的一场 30 分钟的非正式讨论,主题就是预测性人类偏好。加入我们的 Discord,或者给我发邮件,都可以拿到邀请!
致谢
感谢 Luke Metz 协助我完成实验,并硬拉着我用 JAX。JAX 确实非常强大,让很多事情变得简单,但也带来了我见过的一些最诡异的 bug。还好最后还是用了。感谢 Han-chung Lee 对图表提出的修改意见。