大模型最根本的价值就是替代人的工作,而在训练大模型的过程中,还有很多操作是需要人工的。比如数据工程里的数据质量检查、模型评估阶段的人工测评等。
关于这个问题,我的答案是使用评估专家模型技术,让这些过程实现完全无人化。你可以把评估专家模型看做是大模型项目里技术难度最高的部分,它的思想也完全适用于你将来利用大模型解决其他行业问题。
ChatGPT 的奖励模型
我们先看下ChatGPT 在 RLHF 强化学习阶段里奖励模型的概念。通过这个概念的回顾,我们能搞清楚评估专家模型的来龙去脉。
奖励模型的核心在于自动化地评估并给大型语言模型(如 ChatGPT)的输出打分。它的目标是让模型的输出与人类的价值观保持一致。
这套自动化的评估和打分系统,其能力已经可以与人类相媲美。
想象一下,当大型模型给出两个不同的答案时,即使是人类,也很难在两者之间做出选择。因为每个人的评估标准都不同,所以所谓的“好”答案也没有统一的标准。
然而,奖励模型需要做出一个能够满足大多数人期望的、好的选择。这意味着它必须学习并内化一种普遍的、与人类价值观相符的评估标准,而不是少数人的偏好。
说第二个层次,要实现这个奖励模型,实际上还是需要人类业务专家先评估语料的质量,真实过程是用小样本的人类专家的数据标注,模型经过训练后获得全功能的输出评估能力。
这个过程就是 RLHF 阶段的 step 2 ,如下图所示,也就是奖励模型的实现过程。
图片
奖励模型如何获得评估能力?
奖励模型之所以能评估大模型的输出,是因为它通过模仿人类评估专家进行学习。
具体来说,人类专家会先对不同的大模型输出结果进行排序和打分(例如,从 A 到 D)。这些带有排序信息的评估数据,被用来单独训练一个奖励模型。这个训练过程让奖励模型学会了如何像人类专家一样,去判断和评估文本的质量。
因此,我们可以把奖励模型看作是一个专门的“评估专家”模型,它的核心作用就是自动化地评估多个大模型输出的优劣。
奖励模型的评估任务有多难?
ChatGPT 的评估任务可以说是所有评估任务中最难的一种。因为它的输入和输出内容非常广泛和复杂,具有极大的多样性。
相比之下,其他领域的评估任务就简单得多,例如:
- 数据工程中的数据质量评估:通常有明确的标准和规则。
- 传统模型测试中的结果评估:往往只针对特定类型的问题。
因此,如果你的评估任务与 ChatGPT 的奖励模型类似,即需要处理多样化和复杂的文本输出,那么完全可以借鉴奖励模型(Reward Modeling)的思路来构建自己的自动化评估系统。
评估专家模型实例
我们一起来思考一个问题,不管是对数据质量的判断,对模型结果的判断,实际上都是一种数据评估能力,而 GPT 的奖励模型就是一种典型的评估能力,也就是对结果好坏做评估排序。数据质量的判断则可以简化为采用 - 丢弃这样的二值化评估,对特定的问题的模型输出结果的判断可以简化为评估比对前后两次结果的好坏。从原理上来说,都可以被 GPT 奖励模型的结果排序评估覆盖。
ChatGPT 论文
要自己实现一个评估专家,可以分为两个层次思考,首先在战略设计上可以直接参考 ChatGPT 的论文。实际上就是 RLHF 强化学习的三个阶段。
图片
- 第一阶段:有监督微调首先,利用高质量的人工标注数据集对预训练的大语言模型进行监督微调。这个过程让模型学会生成高质量的、符合人类期望的回复。
- 第二阶段:奖励模型训练这是我们之前讨论的核心。利用人类专家对模型输出的排序和评估数据,训练一个奖励模型。这个模型的目标是学会像人类一样给回复打分,本质上是一个“评估专家”。
- 第三阶段:强化学习(PPO)最后,使用强化学习算法(如 PPO)来进一步优化大模型。在这个阶段,奖励模型充当“奖励信号”,指导大模型生成分数更高的回复,从而使其输出质量保持稳定,并与人类偏好更紧密地对齐。
Llama Guard 3模型
不知道你有没有这样的经验,当你向大模型的提问带有某些风险的时候,大模型的输出会明确提示这个风险,甚至你让大模型输出某些不文明用语都会被阻止。这其实要归功于 Llama Guard 3这类防止滥用防护评价模型。
图片
当用户向 Llama 3 提问的时候,每次 Llama 3 都会让 Llama Guard 3来做安全评估,其实现过程也是一次大模型调用。
你可以看看每次安全评估的提示词模版。
图片
显然,Llama Guard 3接收的提示词是一个典型的大模型提示词,我们只要关注最核心的几个信息。
{{unsafe_categories}}表示要让 Llama Guard 3识别的具体安全分类。具体安全分类有 14 种。
图片
提示词中的 user_message 和 model_answer 就是 Llama 3 和用户之间的问答上下文。有了这样一个提示词,Llama Guard 3 最终会给出一个二值的输出,也就是 safe 或 unsafe,如果输出是 unsafe 则还会给出具体的安全分类。下面是一个具体的输出例子,你一看就知道了。
图片
们可以把 Llama Guard 3 看做一个典型的评估专家模型,他的作用是给输出内容做安全评估和分类。在具体实现上,Llama Guard 3 其实就是一个经过微调的大模型,它是基于 Llama 3.1 8B 小模型微调训练的。
图片
评估专家模型设计
先明确两点,其一是评估专家的模型训练方法就是大模型微调训练,其二需要为特定的评估专家准备特定的数据集。核心思想是人类整理数据集,让大模型学会人类的评估方法。
那什么场景下用什么数据集呢?这个才是核心问题。如果总结一下,其实一共就 3 类评估专家,分别适合 3 种场景。接下来我带你一一细分。
数据集设计
我们先从数据集格式出发比对不同数据集的异同,最后自然可以推导出什么场景适用哪个数据集格式。
图片
我想这张图已经比较清楚地表明了这 3 类数据集的区别,KTO 的输出是绝对的 0-1 这样二值判断,RLHF 则是类似 ChatGPT 输出的排序评估,DPO 也很简单,是对 A-B 两种结果的倾向性评估。
RLHF 输出是多个输出对比排序,也就是 ChatGPT 奖励模型的数据格式,自不必多说。那 KTO 训练和 DPO 训练有什么不同?
训练过程中,KTO 方法需要对输出结果进行二元判断,也就是输出:符合预期 / 不符合预期,所以其收集的数据为 Prompt+Chosen 或 Rejected;DPO 训练依赖人类反馈,需要对输出结果进行偏好性判断,输出是两个结果的倾向程度,所以其收集的数据为 Prompt+Chosen 和 Rejected。
下面是 KTO 和 DPO 的具体数据例子。
图片
实际上,KTO 和 DPO 的数据集都表示在一个提示词下,用户和 AI 问答数据的优选策略,chosen 表示优选,rejected 表示次优或丢弃。
KTO 与 DPO 的区别
KTO (Knowledge-Trained Optimization)
KTO 适用于有明确客观标准的问题。它将模型输出结果分为符合预期或不符合预期的二元类别。这种方法最适合于事实性、有标准答案的任务,例如:
- 数学运算:计算结果正确或错误。
- 数据验证:数据符合特定格式或不符合。
- 事实陈述:陈述正确或不正确。
DPO (Direct Preference Optimization)
DPO 适用于涉及主观判断和个人偏好的问题。它通过比较两个或多个模型输出的相对优劣来训练模型,而不是进行绝对的二元判断。这种方法更适合于没有唯一正确答案的任务,例如:
- 创意写作:比较两篇不同风格的散文。
- 设计美学:判断两种设计方案中哪一个更具吸引力。
- 个性化推荐:根据用户喜好,选择更偏好的推荐结果。
人类专家的价值
当然,数据集仍然要靠人类专家来准备和标注,和其他大模型数据集一样,人类准备的数据集实际上是对大模型起到一个引导的作用。
具体到评估专家模型,就是对评分、分类、排序能力的引导。
图片
工程经验
在数字孪生的实际工程中,我们通常采用二元分类(KTO)来评估数据质量。这是一种快速高效的方法,因为它将数据分为“好”或“坏”两大类。通过这种方式,评估专家可以根据业务场景快速筛选出所需数据,即使使用小规模数据集也能取得不错的效果。
我们曾尝试过打分制评估,但发现其泛化能力较差,整体效果不如二元分类。只有在拥有大量精准数据且有强烈需求的情况下,才值得投入资源去训练一个打分制模型。
KTO 为何适用于数据孪生?
在数据孪生领域,数据质量评估的核心任务是识别坏数据。这些坏数据通常是指不符合物理现实或业务预期的异常数据,例如:
- 数据不准确:数值与真实情况不符。
- 数据不完整:存在缺失值。
- 超出合理范围:数值超出了物理或业务常识。
- 时序不一致:数据点的时间顺序混乱。
- 违反物理规律:例如,某个物体的加速度突然为负值。
因此,KTO 的二元判断方式非常契合这个场景。它不是基于主观偏好,而是依据这些明确的、可量化的标准,将数据明确地判断为“符合”或“不符合”。
工程实践建议
在构建评估专家模型时,我们强烈建议不要从零开始训练。最好的方法是基于像 Llama 3 或 ChatGLM 3 这样的预训练模型进行微调。这样做可以充分利用这些模型已有的知识和能力,从而大幅提高训练效率和模型性能。