- Transformer基础
- 常用的大语言模型
- 行业大语言模型
- 大语言模型评估
- 数据构造与清洗
- 分词器构造
- 大语言模型的微调
- 基于PEFT的LLaMA模型微调
- 基于人类反馈的强化学习框架
- 前沿偏好对齐方法
- 基于DPO的偏好对齐实战
- GPTs初体验
- GPTs的初阶使用
- GPTs的高阶使用
- 公开数据集
- 主流方法
- Text2SQL任务实战
- 角色扮演
- 角色扮演实战测试
- 基于Baichuan的角色扮演模型微调
- 对话要素抽取
- 对话要素抽取实战测试
- 基于Qwen的对话要素抽取模型微调
- Agent概述
- Agent的主要模块
- Agent的行为决策机制
- 主流Agent框架
- 基于知识库问答
- 向量数据库
- 基于知识库的大型语言模型问答实战
- AutoGPT概述
- LangChain概述
- 使用LangChain构建AutoGPT
- 运行AutoGPT
大型语言模型的人类偏好对齐
上一章介绍了大型语言模型的微调方法,虽然与之前的NLP模型存在差异,但整体思路同原有NLP任务“预训练+微调”的两个阶段保持一致。然而,真正让大型语言模型与众不同的是其偏好对齐能力。本章重点介绍大型语言模型的人类偏好对齐能力,首先介绍基于人类反馈的强化学习框架,然后介绍4种前沿偏好对齐方法,最后开展基于DPO的偏好对齐实战。通过本章的内容,希望让读者了解偏好对齐技术的前沿发展。
3.1 基于人类反馈的强化学习框架
初次接触大型语言模型技术的读者或许会存在这样的困惑:为什么大型语言模型需要偏好对齐?为什么在已存在微调阶段的情况下偏好对齐还会被需要?更加重要的是,偏好对齐究竟突破了何种瓶颈,使得大模型变得如此与众不同?
带着上述的疑问,本节将介绍对大型语言模型影响极为深远的算法——基于人类反馈的强化学习(RLHF)。
这个算法其实是一种框架思想,最早由OpenAI公司与DeepMind公司的研究人员在2017年率先提出。前几年这两家公司在强化学习上开展深入研究,在围棋、电子竞技等领域上大放异彩。它们提出了包括DQN(Deep Q-Learning)、蒙特卡洛方法等一系列的强化学习建模体系,其中就包括在大型语言模型上大放异彩的RLHF。RLHF机理示意图如图3-1所示。
正如其他强化学习算法一样,RLHF并不仅仅只针对某一种任务单独训练建模,它更像一种框架机制,描述强化学习算法如何运用此框架实现自我能力的进一步提升。下面简单介绍强化学习的这几个核心概念。
(1)强化学习算法
强化学习算法是强化学习中机器行动的中枢,相当于整个系统的大脑模块,常见算法包括DQN算法、AC算法、TRPO算法、PPO算法等。OpenAI在研制ChatGPT模型时所使用的就是PPO算法。到这里可能会有人存在疑惑,前文介绍大型语言模型都是使用RLHF,这与PPO算法是否存在矛盾呢?回答这一问题主要需要理解框架与算法的差异,RLHF是一个完整技术框架,PPO仅仅是其中强化学习算法模块的一种实现方式。这也体现出了学习框架的重要性,我们在后续3.3节中介绍的DPO算法也是对PPO算法的一种升级。优异的强化学习算法与健全的深度学习框架将共同支撑系统的自我更新学习。
(2)行动
行动就是机器基于算法产生的行为内容,随着我们期望机器操作的内容发生变化,在围棋领域就是下一步的落子,在自动驾驶领域就是方向盘和各类操作杆的执行命令,在智能交互领域就是机器基于用户输入的反馈内容。行动是一个明确的指令,一定是在我们给予的有限范围内开展任务。例如,我们完全可以创作一个只能说中文的语言模型,只需要将行动输出字符限制在中文字符中即可。由此可知,在强化学习的建模过程中,行动是系统预先设计的,具有明确导向性的内容。
(3)环境
与其他机器学习任务处理方式不同,强化学习系统需要考虑仿真环境要素,这样才能让系统基于当前环境执行最为合适的动作。因此很多强化学习任务的前提条件就是构造一个仿真的环境,换言之,缺乏或难以仿真环境因素的智能体系统都不太适用于强化学习算法。例如围棋就是一个可以完全仿真的封闭环境,所以相关强化学习算法可以付诸实践。早年在缺乏自动驾驶仿真环境时,强化学习也很难开展应用,直到各类仿真软件可以真实模拟驾驶场景时才得以大展拳脚。OpenAI公司为了设计优化各类强化学习算法,专门研制了一套仿真物理环境的Python类库——Gym,关注强化学习环境的读者可以进一步研究这个类库。
(4)观察
如果说环境是客观存在的内容,观察则是系统对环境信息的捕捉。任何人或智能体都无法掌握环境的全部要素,都是通过视角观察来了解环境的关键信息,再利用分析引擎,进而做出决策动作。其实从智能体的角度来看,所谓的世界观可能并不会客观存在,而是物理环境对于智能体的刻画投射表征。这也就是“一千个读者心中有一千个哈姆莱特”的真实体现。因此,系统如何通过观察环境获取信号以供决策也是极为关键的环节。
(5)奖励机制
奖励机制也是强化学习系统具有特色的模块,在奖励机制出现前,众多机器学习算法是通过损失函数的梯度更新来进行模型学习的。这种损失函数优化效果带来的是模型直接收益反馈,然而不同于传统机器学习的单一任务分析,针对复杂环境的分析以及任意动作带来的奖励反馈极为动态,比如我们在驾驶场景,方向盘多转动5度所带来的奖励收益是极为复杂的,这也让众多传统机器学习算法无法对上述任务进行建模。如何设计良好的奖励机制,是强化学习系统算法建模之前就要想清楚的问题。
通过上述模块的介绍,相信读者对强化学习的相关模块有了大体了解,然而原有的强化学习算法存在很大的局限性。如何构建仿真环境以及设计奖励函数对众多应用都是极为困难的。毕竟,像围棋这样有明确操作规则与棋盘尺寸的应用场景是极为少数的,大多数场景难以仿真,奖励机制也并不显性。就以设计一个智能交互机器人来说,似乎让系统直接评价机器人生成好坏,设计对应奖励机制并不比设计一个智能机器人轻松。RLHF的出现有效缓解了这个问题,进而扩展了强化学习的应用场景。
RLHF的做法是不再像原有强化学习系统依赖机器计算奖励反馈,而是利用人工计算奖励反馈,正因为基于人工计算,所以该算法框架才被定义为基于人类反馈的强化学习框架。的确,人工计算奖励反馈确实是直觉上可行的技术路线,理应更早被人所发现,但是为什么这种框架之前都没有被设计出来呢?其主要原因就是成本极高,原先在任务微调上已经标注大量的数据,如果还需要标注大量模型生成的反馈数据,成本会成倍地提高(值得注意的是,标注反馈/评价数据往往比标注正确答案成本更高)。也正因如此,当OpenAI与DeepMind在2017年提出这个方法时并不被大众看好,它们并不会觉得有哪种场景真正值得如此巨大的标注投入。但是ChatGPT与GPT-4的横空出世,以及RLHF的助力,让我们重新思考,原来真的勤勤恳恳标注数据就可以由量变引起质变。
接下来重点介绍一下Anthropic公司于2022年4月发表的一篇介绍如何利用RLHF训练智能交互机器人的论文。之所以重点介绍这篇论文,一方面是因为Anthropic公司旗下的Claude是可以与ChatGPT在许多场景一较高下、相互媲美的明星级产品,通过对其技术路线研究,可以更好地看清强化学习是如果一步步让大型语言模型变得如此强大的。另一方面,也极为关键,那就是这篇论文的作者,也与许多Anthropic的员工一样,都是OpenAI曾经的员工。在OpenAI并没有将其技术路线详细剖析的时候,我们通过研读其曾经员工的前瞻技术研究,或许也能大体了解ChatGPT早期的技术路线。
图3-2是Anthropic设计出的基于RLHF的交互智能体数据收集与训练流程图,图中左上角是一个经过预训练的大语言模型,然后开展偏好模型的预训练,让该模型具备一定的偏好理解能力,进一步对其进行人类反馈微调训练,最终构建更好的偏好理解模型(在部分论文中也被称为裁判/奖励模型)。左上角的模型与最终微调的模型在RLHF框架中开展策略学习,RLHF框架中所使用的强化学习算法就是前文介绍过的PPO算法,不断更新完善自身生成策略。模型利用新策略生成的效果再通过人类反馈界面收集数据,进而丰富偏好反馈数据集,更新相关微调步骤,至此形成“微调—偏好模型学习—强化学习策略学习—人工评估—进一步微调”的良性循环。
其中有一个细节需要注意,那就是原始预训练的大模型(左上角)将一直作为初始策略所保留,这限制了强化学习策略的优化力度,即不能与原有大模型偏差太大,其原因与机器学习加入正则化约束一样——主要是避免出现因微调导致的过拟合现象。强化学习加入原始模型进行约束,也是避免因为策略影响导致模型生成的过度倾斜,在实践中通过采用KL离散度来约束新模型与基模的偏差值。
在介绍完RLHF训练Anthropic公司的智能对话系统之后,我们再来看一下OpenAI公司介绍其训练InstructGPT模型(ChatGPT的前身)的3个主要阶段(见图3-3),可能会有更加深刻的理解。
(1)微调训练阶段
与第2章的介绍一致,大型语言模型的训练是从任务微调开始的。但是InstructGPT 并没有将任务局限于情感识别,而是像图3-3中所示一样,需要模型生成“向一个6岁智力的模型解释强化学习”这样极为复杂的问题。更值得我们关注的是,OpenAI团队在数据标注上面投入了极大的心血,不同于别的人工智能公司设计用更加廉价、低成本的方式开展数据标注,OpenAI团队则邀请各行领域专家开展数据标注。
(2)偏好建模阶段
模型生成的多个结果,再交由人工标注生成质量好坏,再把标注本身当成一种机器学习任务加以训练学习,进而构建一个可以自动判别的偏好模型。单独训练这个偏好模型本身并不划算,尤其是在微调阶段已经耗费大量精力构建高质量样本集的前提条件下。但是在强化学习建模任务中,这又是关键环节,只有让机器自动判断行动造成的奖励得分,才能让其制定更好的生成策略。偏好标注由于需要客观统一,标注比第一阶段要更加严谨标准,标注成本极高。因此,想要构建偏好模型的提前是制定好标注规范,确保可以高效训练出可靠的偏好模型。
InstructGPT在奖励模型训练的过程中采用Pair-Wise方法进行模型训练,即对于同一个提示内容x来说,比较两个不同回应yw和yl之间的差异。假设yw在真实情况下好于yl,那么希望x+yw经过模型后的分数比x+yl经过模型后的分数要高,反之亦然。而对于奖励模型来说,标注人员对每个提示内容生成的K个(取值范围为4到9之间)回应进行排序,那么对于一个提示,就存在个pair对,具体损失函数如下。
其中,rθ(x,y)为提示内容x和回应y经过奖励模型的标量奖励值,D为人工比较数据集。
(3)强化学习优化阶段
利用第二阶段构建的偏好模型,对第一阶段的微调模型进一步开展强化学习策略优化。在环境中通过PPO策略优化第一阶段微调的模型。对于随机给出的提示内容进行回复,并根据奖励模型决定基于环境中优化的模型的奖励值,从而对模型进行更新;并且在第一阶段微调模型的每个Token输出上增加KL离散度惩罚,防止奖励模型的过度优化。具体优化如下:
其中,为强化学习策略,π为监督训练模型,D为预训练分布。在加入预训练部分参数进行整体优化时,可以使模型效果更优。
pretrain
通过偏好模型,可以让模型生成更满足偏好价值评价系统的内容,也称为人类偏好对齐。所以说,InstructGPT在第三阶段已经不是为了追求真正的正确答案,而是追求让人更加认可的答案。正是受到这种希望被认可的偏好对齐策略影响,大型语言模型在许多复杂、陌生问题求解上让所有人“眼前一亮”,在满意其答案的合理性的同时,对模型生成结果有极大的包容性。
回顾完InstructGPT的3个阶段后,不难看出,恰恰是人类反馈才构造出偏好对齐数据集,以供其在第二阶段训练偏好模型。正是有了偏好模型,才能让强化学习算法有了发挥的空间,让第一阶段的模型进一步得以提升。然而,这套方案也并非完美,ChatGPT的成功告诉世人,偏好对齐对效果提升有极大帮助,但是偏好对齐一定需要强化学习吗?偏好对齐一定需要人类反馈吗?偏好对齐一定需要训练偏好模型吗?偏好对齐一定需要大量偏好样本吗?下一节将介绍4种技术创新点,逐一解答上述问题。