预测人类偏好:从模型排名到模型路由
构建AI应用的一个挑战是选择使用哪个模型。如果能预测任何提示对应的最佳模型呢?预测人类偏好旨在预测用户对特定查询可能偏好的模型。
人类偏好已成为AI模型开发的北极星和强大工具。它指导了包括RLHF和DPO在内的后训练技术,也被用于排名AI模型,如某机构的Chatbot Arena。
Chatbot Arena旨在确定哪个模型通常更受青睐。但能否预测每个查询对应的偏好模型呢?
预测人类偏好的一个用例是模型路由。例如,如果提前知道某个提示下用户更喜欢Claude Instant而非GPT-4,而前者更便宜/更快,就可以将该提示路由到Claude Instant。模型路由有望在提高响应质量的同时降低成本和延迟。
另一个用例是可解释性。通过分析模型在不同提示下的表现,可以理解其优缺点(参见“实验结果”部分)。
使用人类偏好排名模型
过去几年,使用偏好信号(比较)来排名模型越来越流行。除了某机构的Chatbot Arena,许多模型提供商(如某中心、Gemini、ChatGPT等)也用它来评估生产中的模型。
注意:有朋友告诉我,大多数用户不会阅读两个选项,而是随机投票,这引入了大量噪声。但只要随机投票的偏差最小,正确投票的小部分用户的信号有时足以确定偏好模型。
偏好排名的工作原理
偏好排名分两步:
- 收集用户偏好的比较数据。
- 从这些比较中计算模型排名。
对于每个请求,选择两个或多个模型响应。评估者(可以是人类或AI)选择获胜者。评估者不应知道被评判的模型。每次比较称为一场比赛,结果是一系列比较。
从这些比较中,需要计算所有模型的排名。最常见的两种排名算法是Elo(来自国际象棋)和TrueSkill(来自视频游戏)。虽然Chatbot Arena称其模型分数为“Elo分数”,但实际上他们并不使用Elo。2023年12月,他们改用Bradley-Terry,但缩放结果使其看起来像Elo。
给定比赛结果的历史,Bradley-Terry算法找到最大化这些结果可能性的模型分数,将模型评分转化为最大似然估计问题。输入是每场比赛的参与模型,输出是比赛结果(假设没有平局,结果为0或1)。
Chatbot Arena排名的正确性
对于相同的比赛结果,不同排名算法可能产生不同排名。如何判断排名是否正确?
模型排名本质上是一个预测问题。我们从历史比赛结果计算排名,并用它预测未来比赛结果。排名的质量取决于其预测未来比赛结果的准确性。
如果模型A的分数高于模型B,排名算法预测A获胜。如果用户确实偏好排名更高的模型,则排名算法预测正确。
评估数据
为了计算Chatbot Arena排名的准确性,我使用了他们2023年7月发布的数据,包含20个模型之间的3.3万次众包比较。我使用这个较小的数据集而不是2024年1月的数据集,因为它包含每场比赛的提示,这是我预测人类偏好所需的。
以下是他们2023年7月数据集的一个示例:
prompt | model_a | model_b | winner | model_a’s response | model_b’s response |
---|---|---|---|---|---|
who was the last monarch of uk | koala-13b | vicuna-13b | model_a | The last monarch of the United Kingdom was Queen Elizabeth II, who reigned from 1952 to 2020. | The current monarch of the United Kingdom is Queen Elizabeth II. She has been the monarch since 1952, and is the longest-reigning monarch in British history. |
作为参考,该数据集中前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
结果
我发现,在测试集中所有非平局比赛中,Bradley-Terry分数更高的模型被偏好的概率为74.1%。这意味着如果我们总是预测排名更高的模型为获胜者,准确率为74.1%。
测试数据 | 输出类别 | 样本数 | BT的准确率 |
---|---|---|---|
所有比赛 | model_a wins, model_b wins, tie | 3,300 | 53.33% |
非平局比赛 | model_a wins, model_b wins | 2,367 | 74.1% |
涉及GPT-4的非平局比赛 | model_a wins, model_b wins | 355 | 85.1%(总是选GPT-4为获胜者) |
2023年7月,GPT-4被认为是最强的模型(当时Gemini、Mistral、Claude-v2尚未出现)。用户是否总是偏好GPT-4而非其他模型?并非如此。在355场涉及GPT-4的非平局比赛中,GPT-4获胜率为85.1%。
这意味着尽管GPT-4总体上是最好的模型,但存在一些提示下其他模型可以胜过GPT-4。如果能找出这些提示及对应的最佳模型,就可以将这些提示路由到性能最佳的模型,从而提高响应质量。
预测每个提示的人类偏好
如果排名算法是找出总体上更好的模型,预测人类偏好则是找出每个提示下更好的模型。如果提前知道某个提示下GPT-3.5和GPT-4表现相当,而GPT-3.5更便宜,就可以将该提示路由到GPT-3.5。或者如果Mistral-7B和GPT-4表现相当且更快,就可以将查询路由到Mistral-7B。
模型路由还有助于预算规划。例如,如果预算只能将50%的查询路由到最强模型,其余路由到较弱模型,则需要确保将弱模型能处理的查询路由给它。
实验设置
我将预测人类偏好视为二分类任务。给定两个模型之间的比赛,预测哪个获胜。如果model_a获胜的概率约为0.5,则可视为平局。如果Bradley-Terry模型仅以(model_a, model_b)为输入,偏好预测器则以(prompt, model_a, model_b)为输入。
我的偏好预测器架构如下。模型编码器和偏好预测器是可以独立或联合训练的神经网络。我使用DistilBERT作为提示编码器。
为了训练模型,我使用了某机构2023年7月数据集的90%。我发现仅使用非平局比赛时预测器表现更好(相比于同时使用平局和非平局比赛)。我随机翻转了比赛中模型顺序的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)作为输入。这是为了看看包含提示是否能提高比赛结果预测。
我发现对于所有非平局比赛,如果不使用提示,偏好预测器的预测准确率为75%;如果使用提示,准确率为76.2%。这表明人类对模型的偏好确实会因提示而变化。虽然改进看似不大,但2.1%的改进在规模上可能很显著。
评估数据 | 评估样本数 | Chatbot Arena | 偏好预测器(无提示) | 偏好预测器(有提示) |
---|---|---|---|---|
非平局比赛 | 2,367 | 74.1% | 75% | 76.2% |
涉及GPT-4的非平局比赛 | 355 | 85.1% | 86.2% | 87% |
需要注意的是,这个预测器是用少量众包(即有噪声)数据训练的。众包的提示也很简单。在3.3万条提示中,180条(0.55%)是“hello”和“hi”。这些简单提示不足以区分强弱模型。我怀疑如果有更多/更好的数据,预测器的性能可以显著提高。
领域特定和查询特定排行榜
20个模型对应190个模型对。为了可视化预测器如何捕捉人类偏好,我为每个评估提示生成190个不同的输入(每个模型对一个)。
然后,我将190个预测结果可视化在一个20x20的网格中,如下所示(以提示“Derive the elastic wave equation.”为例)。为了使图表可读,我只包含9个模型。对角线值表示模型与自身的比较,预测偏好应为0.5。
给定一个提示的所有模型对的预测偏好,我使用Bradley-Terry模型(与某机构相同的排名算法)为该提示创建一个排行榜。我使用了相同的缩放使分数看起来像Elo。以下是“Derive the elastic wave equation.”查询的9个模型排名。
这也意味着,有了这个偏好预测器,我们可以为任何数据子集创建排行榜。我们可以为任何领域创建特定排行榜。
模型排名(提示:“Derive the elastic wave equation.”) |
---|
gpt-4: 1214 |
claude-v1: 1162 |
gpt-3.5-turbo: 1104 |
claude-instant-v1: 1110 |
guanaco-33b: 1023 |
vicuna-13b: 1007 |
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万美元的种子轮融资。某机构也在研究模型路由,我认为这是他们比较评估工作的自然进展。
虽然我的实验使用了人工标注的比较,但某机构的人告诉我,由于众包标注的噪声和专家标注的成本,他们发现使用GPT-4比较两个响应效果更好。根据查询的复杂性,使用GPT-4生成1万次比较仅需200-500美元,这对想尝试的公司来说非常实惠。
这是我最近做过的最有趣的副项目,我很乐意多谈谈。有兴趣的人可以在3月5日周二太平洋时间上午9:30参加我主持的30分钟关于预测人类偏好的讨论。加入我们的Discord或发邮件给我获取邀请!
致谢
感谢Luke Metz帮助我进行实验并说服我使用JAX。虽然JAX非常酷且简化了很多事情,但它也导致了一些我见过的最奇怪的错误。不过我很高兴使用了它。感谢Han-chung Lee对图表的反馈。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客(https://blog.qife122.com/)
公众号二维码