原创 孔某人 2025-01-27 19:12 北京
如何构建和利用不完美的ORM
0、前言
一周之内,DeepSeek R1让LLM post-training阶段的RL方式广为人知。我在 语义计算机中没有Token 一文中讨论了我对这个范式的思考。而本文是在这个范式中讨论一个问题:如何为更一般的领域中构建(Outcome-supervised)Reward Model。
1、LLM训练中的RL与ORM
DeepSeek R1是在pretrain模型的基础上直接针对ORM(Outcome-supervised Reward Model)进行RL训练的,依赖RL基于pretrain模型中已经学到人类的典型思考工具来学习独立完整求解问题的方式。pretrain阶段的数据短时间内还不能显著的扩展,那么另一个可以探索的方向就是 ORM。
目前前沿研究者推崇的方式是,寻找哪些领域可以构造出完美的reward model,即判定正确率100%的方案,例如目前数学和代码领域这方面相对容易。o1和DeepSeek R1的成功已经证明靠数学和代码已经能够在更一般的领域取得不错的泛化效果,但我们仍然不能指望只靠它们就能长时间的继续指导模型来进一步增加通用能力。
建议优先探索有完美ORM的领域,是因为在RL阶段容易过拟合ORM的缺陷,也就是所谓的reward hacking问题。之前的reward model多基于一定量的样例回答和人工设定的reward打分规则合成数据进行训练,但从实践来看,这种方式得到的reward model的问题较多,一方面数据量可能距离一个理想的规模远远不够,另外人工设定的reward打分方式也很可能不足以刻画大量的数据。
而本文就是为这些问题提供新的解决思路,希望能更快地让RL方案适用于更多领域。
2、构建思路
2.1、问题分析
很多领域最大的问题是,没有足够好的量化的指标来评价不同的结果。人工可以设定一些粗略的reward规则,但这种规则太过粗糙,不能进行细粒度的区分,并且经常有很多错误标定reward的地方。
考虑到在很多领域中,LLM的输出空间极其庞大、结果也极为多样,我们只能使用一种函数来进行reward评价,而不能使用有限的数据进行匹配。目前我们可以处理各种文本/语义的工具只有LLM本身。
但传统的reward model构造方式已经失效,我们要放弃直接指定reward结果并让模型去拟合的方式。
对于人来说,虽然很多时候无法量化和客观的评价一个事物有多好,但在两个结果之间做相对比较是更容易的,也是相对更明确的。所以我们可以尝试让LLM去对齐人类对于不同结果之间的比较偏好。
2.2、评价的维度
在很多场景下,人群有多个不同的评价维度,例如:内容长度、对于特定知识背景人群的易读性、准确性/专业性、幽默度等。当两个待比较的结果各有优势时,更难进行更客观的比较。以及这些维度很可能在模型推理阶段由于具体用户的偏好不同而需要进行不同的侧重。
所以这些维度的好坏信息都应该保留,特别是用户会想要干预的维度更需要保留。这是一个多目标优化的问题,不过我们可以分别为不同维度构建独立的reward model,让RL过程独立地同时学习这些不同的目标下哪些较好的回答,或区分该维度下的不同程度。例如可以引入前置控制token,例如[幽默度:低]、[幽默度:高]等来让模型能够在推理时根据不同的控制token来产生用户希望的结果。
2.3、如何进行结果比较
在特定的维度中,我们可以使用prompt(或SFT等其他方式),让LLM能够对齐人类的偏好。
这里使用的LLM一般来讲不能太差,否则reward model给出错误信号的比例会太高,导致RL过程中的reward hacking问题变重。考虑到实践中的简洁性,我认为一般需要使用最强的LLM模型(或明显比候选模型强的模型)来作为reward prompt的执行模型。也就是说在现阶段,要继续训练o1,至少应该用一个固定参数的o1自己来作为判别模型。如果希望降低reward本身的计算成本,可以在人工检查的结果下,逐步替换至成本和效果都可接受的其他模型,但这个过程很不scale,也不太被模型层的人喜欢,我认为就默认都用最强模型就好了。不过如果组织前期对此信心不足时,可以尝试有一个成本低一些模型进行试水,但要留意不要过拟合reward hacking。
同级别的模型确实可以对同级别的模型结果进行审查,Self-Critique方式在实践中已经被确认有效,只不过它也仍然不完美。
这样我们就有了一个自动的方式来对任意两个结果在指定维度下进行比较。这里的reward prompt是人工基于该领域的需求进行撰写的,但它未必要很复杂,本质上它还是在调用模型本身在这方面的能力。
2.4、排序整个候选集
上节构造了在指定维度下的两个结果的比较方式,如果这个方式是完美的,且该维度是线性可排序的话,那么就可以直接利用传统排序算法进行排序。但实际上这个方式并不完美,该维度也未必是线性可排序的。
我们可以在候选的结果集中对于所有两两比较对进行采样计算,结合一些建模方式对比较结果进行拟合,来为整个结果集(在该维度上)进行排序。大家经常听到的Elo就是类似的排序方式,这个方面有一些传统方式,有兴趣的读者可以向o1进行咨询和学习,本文不再展开。
2.5、整合
现在我们集齐了所有的拼图块,重新梳理一下过程。
在DeepSeek R1的RL过程(GRPO)中,我们需要对于某个位置的不同选择下采样的多个完整结果,对这些结果进行评价,以确定模型应该朝着哪个方向进行优化。
对于不同的领域我们需要进行预先思考设计,确定该领域需要拆分的几个主要维度,并为每个维度选择合适为其打分的prompt。维度和prompt都可能在训练过程中随着人工抽样检查的过程而不断迭代优化。为每个领域的特化是可接受的,即使是代码和数学也都有各自的特化,重要的是特化成本要可接受。
有些维度是硬性约束,例如一些类似宪法性的约束。剩下可以平衡的不同维度可以按照多目标优化的方式保留接近帕累托最优前沿的结果集而排除其他结果。还有一些类似幽默度的维度则需要引入一些控制方式进行标识。各部分的细节设计仍有不少讨论和细化的空间,但整体上思路都是常见的几种。
每个维度内,对所有候选答案的pair进行采样,计算相对好坏,并基于建模方式给出不同action的相对好坏,并由此指导RL训练。我预计该步骤需要比完美的ORM时更多的结果采样量才能够控制reward信号的方差。
由于reward的方式并不完美,需要在整体过程中人工抽样监控这些环节的自动过程结果符合预期,如果出现与预期不一致的情况要及时迭代reward方案。
3、领域的选择
模型的能力能够实现一些跨领域泛化,从模型厂的角度来说,并不需要独立的为所有领域都构建方案。所以一个优化点是,思考哪些领域的哪些能力是普遍需要的,且RL需要的种子prompt和reward更容易构建的。
除了技术预判外,商业战略上的决策也是一个重要选择来源。例如可能有些团队就会先使用这种方式来优化角色扮演方面的能力。类似的方向可能还有:教育、陪伴、轻度心理疗愈等,不过这些方面可能还不好靠单轮对话来进行reward评价,可能需要引入用户模拟agent,在多轮对话上进行总体reward。
另外,模型厂的团队大多不熟悉具体领域,而这方面领域客户是更熟悉的。所以可以将这个过程以RFT的方式开放给客户来定制模型,并从所有客户中选择适合的方式集成到主线模型中。或直接与领域客户进行合作。
交流与合作
如果希望和我交流讨论,或参与相关的讨论群,或者建立合作,请加微信,联系方式请点击 -> 联系方式。
本文于2025.1.27首发于微信公众号和知乎,知乎链接:
https://zhuanlan.zhihu.com/p/20517851623