强化学习是什么?强化学习之基于人类反馈的强化学习及其应用(1)
通过有监督微调,大语言模型已经初步具备了服从人类指令,并完成各类型任务的能力。然而有监督微调需要大量指令和所对应的标准回复,获取大量高质量的回复需要耗费大量的人力和时间成本。由于,有监督微调通常采用交叉熵损失做为损失函数,目标是调整参数使得模型输出与标准答案完全相同,不能从整体上对模型输出质量进行判断。因此,模型不能适用自然语言多样性,也不能解决微小变化的敏感性问题。强化学习则将模型输出文本作为一个整体进行考虑,其优化目标是使得模型生成高质量回复。此外,强化学习方法还不依赖于人工编写的高质量回复。模型根据指令生成回复,奖励模型针对所生成的回复给出质量判断。模型也可以生成多个答案,奖励模型对输出文本质量进行排序。模型通过生成回复并接收反馈进行学习。强化学习方法更适合生成式任务,也是大语言模型构建中必不可少的关键步骤。本章将介绍基于类人反馈的强化学习基础概念、奖励模型以及近端策略优化方法,并在此基础上介绍面向大语言模型强化学习的PPO-Max 框架实践。
1.1 基于人类反馈的强化学习
强化学习(Reinforcement Learning,RL)研究的问题是智能体(Agent)与环境(Environment)交互的问题,其目标是使智能体在复杂且不确定的环境中最大化奖励(Reward)。强化学习基本框架如图6.1所示,主要由两部分组成:智能体和环境。在强化学习过程中,智能体与环境不断交互。智能体在环境中获取某个状态后,会根据该状态输出一个动作(Action),也称为决策(Decision)。动作会在环境中执行,环境会根据智能体采取的动作,给出下一个状态以及当前动作所带来的奖励。智能体的目标就是尽可能多地从环境中获取奖励。本节中将介绍强化学习的基本概念、强化学习与有监督学习的区别,以及在大语言模型中基于人类反馈的强化学习流程。
强化学习基本框架
1.1.1 强化学习概述
在现实生活中,经常会遇到需要通过探索和试错来学习的情境。例如,孩子学会骑自行车的过程,或是教机器狗如何玩飞盘。机器狗一开始对如何抓飞盘一无所知,但每当它成功抓住飞盘时,都可以给予它一定的奖励。这种通过与环境交互,根据反馈来学习最佳行为的过程正是强化学习的核心思想。通过机器狗学习抓飞盘的例子,可以引出一些强化学习中基本概念:
(1) 智能体与环境:在机器狗学习抓飞盘的场景中,机器人狗就是一个智能体(Agent),它做出决策并执行动作。而它所在的场景,包括飞盘的飞行轨迹和速度,以及其他可能的因素,则构成了环境(Environment)。环境会根据智能体的行为给予反馈,通常以奖励的形式。
(2) 状态、行为与奖励:每次机器狗尝试抓飞盘,它都在评估当前的状态(State),这可能包括飞盘的位置、速度等。基于这些信息,它会采取某种动作(Action),如跳跃、奔跑或待在原地。根据机器狗所执行的动作,环境随后会给出一个奖励(Reward),这可以是正面的(成功抓住飞盘)或负面的(错过了飞盘)。
(3) 策略与价值: 机器狗在尝试各种行为的过程中,其实是在学习一个策略(Policy)。策略可以视为一套指导其如何在特定状态下行动的规则。与此同时,智能体还试图估计价值(Value)函数,也就是预测在未来采取某一行为所能带来的奖励。总体来说,强化学习的目标就是让智能体通过与环境的互动,学习到一个策略,使其能够在将来获得的奖励最大化。这使得强化学习不总是关注近期奖励,而是在短期的奖励与远期奖励之间找到平衡。智能体与环境的不断交互过程中,会获得很多观测oi。针对每一个观测,智能体会采取一个动作ai,也会得到一个奖励ri。可以定义历史Ht 是观测、动作、奖励的序列:
智能体在采取当前动作的时候会依赖于它之前得到的历史,因此可以把环境整体状态St 看做关于历史的函数:
St = f(Ht)
智能体能够观察到环境的所有状态时,称环境是完全可观测的(Fully Observed),这时观测ot 等于St。当智能体只能看到部分的观测,称这个环境是部分可观测的(Partially Observed),这时观测对状态的部分描述。整个的状态空间使用S 进行表示。
在给定的环境中,有效动作的集合经常被称为动作空间(Action Space),使用A 进行表示。例如围棋(Go)这样的环境具有离散动作空间(Discrete Action Space),智能体的动作数量在这个空
间中是有限的。智能体在围棋中的动作空间只有361 个交叉点。而在物理世界中则通常是连续动作空间(Continuous Action Space)。在连续动作空间中,动作通常是实值的向量。例如,在平面中,机器人可以向任意角度进行移动,其动作空间为连续动作空间。策略是智能体的动作模型,决定了智能体的动作。策略也可以用函数进行表示,该函数将输入的状态变成动作。策略可分为两种:随机性策略和确定性策。随机性策略(Stochastic Policy)用π函数表示,即π(a|s) = p(at = a|st = s),输入一个状态s,输出一个概率,表示智能体所有动作的概率。利用这个概率分布进行采样,就可以得到智能体将采取的动作。确定性策略(Deterministic Policy)是智能体直接采取最有可能的动作,即a∗ = arg max π(a|s)。
价值函数的值是对未来奖励的预测,可以用它来评估状态的好坏。价值函数可以只根据当前的状态s 决定,使用Vπ(s) 表示。也可以根据当前状态s 以及动作a 表示,使用Qπ(s, a) 表示。Vπ(s)和Qπ(s, a) 的具体定义如下:
其中,γ 为折扣因子(Discount Factor),针对短期奖励和远期奖励进行折中;期望E 的下标为π函数,其值反映在使用策略π 时所能获得的奖励值。根据智能体所学习的组件的不同,可以把智能体归类为:基于价值的智能体、基于策略的智能体和演员-评论员智能体。基于价值的智能体(Value-based Agent)显式地学习价值函数,隐式地学习策略。其策略是从所学到的价值函数推算得到的。基于策略的智能体(Policy-based Agent)则是直接学习策略函数。策略函数的输入为一个状态,输出为对应动作的概率。基于策略的智能体并不学习价值函数,价值函数隐式的表达在策略函数中。演员-评论员智能体(Actor-critic Agent)则
是把基于价值的智能体和基于策略的智能体结合起来,既学习策略函数又学习价值函数都,通过两者的交互得到最佳的动作。
1.1.2 强化学习与有监督学习的区别
随着ChatGPT、Claude 等通用对话模型的成功,强化学习在自然语言处理领域获得了越来越多的注意力。在深度学习中,有监督学习和强化学习不同,可以用旅行方式进行更直观的对比,有监督学习和强化学习可以看做两种不同旅行方式,每种旅行都具备着自己独特的风景、规则和探索方式。
旅行前的准备:数据来源
监督学习: 这如同旅行者们拿着一本旅行指南书,其中明确标注了各个景点、餐厅和交通方式。在这里,数据来源就好比这本书,提供了清晰的问题和答案对。
强化学习: 旅行者们进入了一个陌生的城市,手上没有地图,没有指南。所知道的只是他们的初衷,比如找到城市中的一家餐厅或博物馆。这座未知的城市,正是强化学习中的数据来源,充满了探索的机会。
路途中的指引:反馈机制
监督学习: 在这座城市里,每当旅行者们迷路或犹豫时,都会有人告诉他们是否走对了路。这就好比每次旅行者提供一个答案,监督学习都会告诉他们是否正确。
强化学习: 但在另一座城市,没有人会直接告诉旅行者们如何走。只会告诉他们结果是好还是坏。比如,走进了一家餐厅,吃完后才知道这家餐厅是否合适。需要通过多次尝试,逐渐学习和调整策略。
旅行的终点:目的地
监督学习: 在这座城市的旅行目的非常明确:掌握所有的答案,就像参观完旅行指南上提及的所有景点。
强化学习: 在未知的城市,目标是学习如何在其中有效地行动,寻找最佳的路径,无论是寻找食物、住宿还是娱乐。与有监督学习相比,强化学习能够给大语言模型带什么哪些好处呢?针对这个问题,2023 年4月OpenAI 联合创始人John Schulman 在Berkeley EECS 会议上所做的报告《Reinforcement Learning from Human Feedback: Progress and Challenges》,分享了OpenAI 在人类反馈的强化学习方面的进展,分析了监督学习和强化学习各自存在的挑战。基于上述报告以及相关讨论,强化学习在大语言模型上的重要作用可以概括为以下几个方面:
(1)强化学习比有监督学习更可以考虑整体影响:有监督学习针对单个词元进行反馈,其目标是要求模型针对给定的输入给出的确切答案。而强化学习是针对整个输出文本进行反馈,并不针对特定的词元。这种反馈粒度的不同,使得强化学习更适合大语言模型,既可以兼顾表达多样性,还可以增强对微小变化的敏感性。自然语言十分灵活,可以用多种不同的方式表达相同的语义。而有监督学习很难支持上述学习方式。强化学习则可以允许模型给出不同的多样性表达。另外一方面,有监督微调通常采用交叉熵损失做为损失函数,由于总和规则,造成这种损失对个别词元变化不敏感,如果改变个别的词元,只会对整体损失产生小的影响。但是,一个否定词可以完全改变文本的整体含义。强化学习则可以通过奖励函数达到同时兼顾多样性和微小变化敏感性两个方面。
(2)强化学习更容易解决幻觉问题:用户在大语言模型时主要有三类输入:
(a)文本型(Text-Grounded):用户输入相关文本和问题,让模型基于所提供的文本生成答案(例如,“本文中提到的人名和地名有哪些”);
(b)求知型(Knowledge-Seeking):用户仅提出问题,模型根据内在知识提供真实回答(例如,“流感的常见原因是什么”);
(c)创造型(Creative):用户为提供问题或说明,让模型进行创造性输出(例如,“写一个关于... 的故事”)。有监督学习算法非常容易使得求知型查询产生幻觉。在模型并不包含或者知道答案的情况下,有监督训练仍然会促使模型给出答案。而使用强化学习方法,则可以通过定制奖励函数,将正确答案赋予非常高的分数,放弃回答的答案赋予中低分数,不正确的答案赋予非常高的负分,使得模型学会依赖内部知识选择放弃回答,从而在一定程度上缓解模型幻觉问题。
(3)强化学习可以更好的解决多轮对话奖励累积问题:多轮对话能力是大语言模型重要的基础能力之一,多轮对话是否达成最终目标,需要考虑多次交互过程的整体情况,因此很难使用有监督学习方法构建。而使用强化学习方法,可以通过构建奖励函数,将当前输出考虑整个对话的背景和连贯性。
1.1.3 基于人类反馈的强化学习流程
大规模语言模型在进行监督微调后,模型具备了遵循指令和多轮对话的能力,具备了初步与用户进行对话的能力。然而,大规模语言模由于庞大的参数量和训练语料,其复杂性往往难以理解和预测。当这些模型被部署时,它们可能会产生严重的后果,尤其是当模型变得日渐强大、应用更加广泛、并且频繁地与用户进行互动。因此,研究者追求将人工智能与人类价值观进行对齐,文献[24] 提大语言模型输出的结果应该满足帮助性(Helpfulness)、真实性(Honesty)以及无害性(Harmless)的3H 原则。由于上述3H 原则体现出了人类偏好,因此基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)很自然的被引入到通用对话模型的训练流程中。
基于人类反馈的强化学习主要分为奖励模型训练和近端策略优化两个步骤。奖励模型通过由人类反馈标注的偏好数据来学习人类的偏好,判断模型回复的有用性以及保证内容的无害性。奖励模型模拟了人类的偏好信息,能够不断地为模型的训练提供奖励信号。在获得奖励模型后,需要借助强化学习对语言模型继续进行微调。OpenAI 在大多数任务中使用的强化学习算法都是近端策略优化算法(Proximal Policy Optimization, PPO)。近端策略优化可以根据奖励模型获得的反馈优化模型,通过不断的迭代,让模型探索和发现更符合人类偏好的回复策略。近端策略优化的流程如图1.2所示。
近端策略优化涉及到四个模型:(1)策略模型(Policy Model),生成模型回复。(2)奖励模型(Reward Model),输出奖励分数来评估回复质量的好坏。(3)评论模型(Critic Model),来预测回复的好坏,可以在训练过程中实时调整模型,选择对未来累积收益最大的行为。(4)参考模型(Reference Model)提供了一个SFT 模型的备份,帮助模型不会出现过于极端的变化。
近端策略优化的实施流程如下:
(1) 环境采样:策略模型基于给定输入生成一系列的回复,奖励模型则对这些回复进行打分获得奖励。
图1.2 近端策略优化算法实施流程
(2) 优势估计:利用评论模型预测生成回复的未来累积奖励,并借助广义优势估计(Generalized Advantage Estimation,GAE)算法来估计优势函数,能够有助于更准确地评估每次行动的好处。
(3) 优化调整:使用优势函数来优化和调整策略模型,同时利用参考模型确保更新的策略不会有太大的变化,从而维持模型的稳定性。
1.2 奖励模型
基于人类反馈训练的奖励模型可以很好的人类的偏好。从理论上来说,可以通过强化学习使用人类标注的反馈数据直接对模型进行微调。然而,受限于工作量和时间的限制,针对每次优化迭代,人类很难提供足够的反馈来。更为有效的方法是构建奖励模型(Reward Model),模拟人类的评估过程。奖励模型在强化学习中起着至关重要的作用,它决定了智能体如何从与环境的交互中学习并优化策略,以实现预定的任务目标。本节中将从数据收集和模型训练两个方面介绍大语言模型奖励模型的实现。
1.2.1 数据收集
针对文献[24] 所提出的大语言模型应该满足的HHH 原则,如何构建用于训练奖励模型的数据是奖励模型训练的基础。本节介绍的奖励模型数据集收集细节主要根据Anthropic 团队在文献[157] 中介绍的HH-RLFH 数据集构建过程。主要针对有用性和无害性,分别收集了不同人类偏好数据集。
(1) 有用性:有用性意味着模型应当遵循指令;它不仅要遵循指令,还要能够从少量的示例提示或其他可解释的模式中推断出意图。然而,给定提示背后的意图经常不够清晰或存在歧义,这就是为什么需要依赖标注者的判断,他们的偏好评分构成了主要的衡量标准。在数据收集过程中,让标注人员使用模型,期望模型帮助用户完成纯粹基于文本的任务(比如回答问题、
撰写编辑文档、讨论计划和决策)。
(2) 无害性:无害性的衡量也具有挑战性。语言模型造成的实际损害程度通常取决于它们的输出在现实世界中的使用方式。例如,一个生成有毒输出的模型在部署为聊天机器人时可能会有害,但如果被用于数据增强,以训练更精确的毒性检测模型,则可能是有益的。在数据收集过程中,让标注人员通过一些敌对性的询问,比如计划抢银行,引诱模型给出一些违背规则的有害性回答。
有用性和无害性往往是对立的。过度追求无害性可以得到更安全的回复(比如回答不知道),但是却无法满足提问者的需求。相反的,过度强调有用性可能导致模型产生有害/有毒的输出。将两个数据集(有用性和无害性训练集)混合在一起训练奖励模型时,模型可以既表现出帮助性,又可以礼貌地拒绝有害请求。
HH-RLHF 数据集是一种将强化学习与人类反馈结合的数据集,旨在提供复杂情境下符合人类直觉的有效表达。在面对复杂情况时,人们能够自然地产生一些直觉,但这些直觉难以被形式化和自动化,这时人类反馈相对于其他技术将具有很大优势。同时,这意味着在收集人类反馈时,应选择那些直观且熟悉的任务。因此,奖励模型的数据收集选择采用自然语言对话作为反馈方式,而且这种方法的通用性非常广泛。实际上,几乎所有基于文本的任务都可以通过对话来呈现,甚至在对话中嵌入一些相关的源语料,以更好地完成任务。这样的选择不仅能够捕捉人类的直觉,还具备广泛的适用性,使模型在训练过程中能够更好地理解人类反馈在不同任务上的表现。
Anthropic 的数据收集主要是通过Amazon Mechanical Turk 上的聊天工具生成的。如图1.3所示,标注者可以通过聊天的形式与图中模型进行使用自然语言进行交流,向它们寻求在各种文本任务中的帮助。当模型需要回应时,标注者会看到两个模型的回答,然后从中选择一个继续对话。这两个回答可以来自同一个模型,也可以来自两个不同的模型。然后,标注者可以提出后续问题或者提供更多提示输入给模型。在每次对话任务中,都包括两个关键部分,这些部分会在对话中多次重复:
(1) 标注者向模型写聊天消息,要求它们执行任务、回答问题,或者讨论感兴趣的话题。
(2) 标注者看到两种不同的回答,并被要求选择更有帮助和真实的回答(或者在无害性测试情况下,选择更有害的回答)。
Anthropic 团队收集了两份不同的数据。在“有用性”数据集中,要求标注者和模型进行开放式对话,寻求帮助、建议,或者要求模型完成任务。然后,标注者需要从两个模型的回应中选择哪个更有帮助。在“无害性”数据集中,Anthropic 团队要求标注者尝试引导模型给出有害的回应,然后选择模型提供的更有害的回应。聊天交互工具允许众包工作者表达他们对两个模型回答偏好的强度。只有在偏好强度高于最弱选项时,才会把这些比较放入数据集中。收集数据的时候,不会记录偏好强度;只把数据集中的每个比较都当作二选一,并且权重相同(数据集中不包括平局的情况)。需要注意的是,这意味着“有用性”数据集往往会把对话推向更有益的方向,而“无害性”数据集中,人们的回应会让对话朝着更有害的方向发展。表1.1给出了HH-RLHF 的数据样本,针对同样的问题,包含chosen 和rejected,训练集数据总量为16.1 万条。
图1.3 Anthropic 数据收集平台
1.2.2 模型训练
奖励模型通常也采用基于Transformer 架构的预训练语言模型。在奖励模型中,移除最后一个非嵌入层,并在最终的Transformer 层上叠加了一个额外的线性层。无论输入的是何种文本,奖励模型都能为文本序列中的最后一个标记分配一个标量奖励值,样本质量越高,奖励值越大。文献[158] 提出训练奖励模型通常需要使用由相同输入生成的两个不同输出之间的配对比较数据集。在这个数据集中,每一对包括一个首选样本和一个非首选样本,利用这些数据来建模奖励模型的训练损失。具体而言,每一对样本的模型损失可以定义为:
表1.1 HH-RLHF 数据样本
其中σ 是sigmoid 函数,r 代表参数为ψ 的奖励模型的值,r (x, y) 表示针对输入提示x 和输出y所预测出的单一标量奖励值。
此外,文献[159] 提出了引入了模仿学习的思想。在模仿学习中,训练数据包含了输入和相应的期望输出,即专家生成的正确答案。模型的目标是学习从输入到输出的映射,以便能够在类似的输入上生成类似的输出。这种方法对于每一对输出,都首选在输出上引入了自回归的语言模型损失,从而使得模型能够在每个句子对中模仿出首选的输出。在实际操作中,在语言模型损失上
引入了系数βrm,以调节其影响。可以得到如下的奖励模型损失:
其中Drm 表示训练数据集的经验分布。r′ 是与r 相同的模型,只有最顶层的线性层与r 有所不同,该线性层的维度与词汇表的大小相对应。在r′ 模型中,r′ (x, yw) 表示在给定输入提示x 和首选输出yw 的条件下的似然概率,这个似然概率表达了模型生成给定输出的可能性。另外,还可以引入一个附加项到奖励函数中,该附加项基于学习得到的强化学习策略πRLϕ 与初始监督模型πSFT 之间的Kullback-Leibler(KL)散度,从而引入了一种惩罚机制。总奖励可以根据文献[160] 通过如下方式表达:
其中η 代表KL 奖励系数,它用于调整KL 惩罚的强度。这个KL 散度项在这里发挥着两个重要的作用。首先,它作为一个熵奖励,促进了在策略空间中的探索,避免了策略过早地收敛到单一模式。其次,它确保强化学习策略的输出不会与奖励模型在训练阶段遇到的样本产生明显的偏差,从而维持了学习过程的稳定性和一致性。这种KL 惩罚机制在整个学习过程中起到了平衡和引导的作用,有助于取得更加稳健和可靠的训练效果。
1.2.3 开源数据
针对奖励模型已经有一些开源数据集合可以使用,主要包括OpenAI 针对摘要任务提出的Summarize from Feedback 数据集以及针对WebGPT 任务构建的类人反馈数据集。此外,还有Anthropic有用性和无害性的的HH-RLHF 数据集和Stanford 开放出来的质量判断数据集。
OpenAI 在2020 年就将RLHF 技术引入到摘要生成中,提出了Summarize from Feedback 数据集[161]。首先通过人类偏好数据训练了一个奖励模型,再利用奖励模型训练一个与人类偏好相匹配的摘要模型。该数据集分为两部分:对比部分和轴向部分。对比部分共计17.9 万条数据,标注人员从两个摘要中选择一个更好的摘要。轴向部分则有共计1.5 万条数据,使用Likert 量表为摘要的质量评分。需要注意的是,对比部分仅有训练和验证划分,而轴向部分仅有测试和验证划分。
WebGPT[25] 使用人类反馈训练了一个奖励模型,来指导模型来提升长文档问答能力,使其与人类的偏好相符。该数据集包含在WebGPT 项目结束时被标记为适合奖励建模的所有对比数据,总计1.9 万条数据。
Anthropic 的HH-RLHF 数据集主要分为两大部分。第一部分是关于有用性和无害性的人类偏好数据,共计17 万。这些数据的目标是为强化学习的训练提供奖励模型,但并不适合直接用于对话模型的训练,因为这样可能会导致模型产生不良行为。第二部分是由人类生成并注释的红队测试对话。这部分数据可以帮助我们了解如何对模型进行更深入的鲁棒性测试,并发现哪些攻击方式更有可能成功。
Stanford Human Preferences(SHP)数据集包含了38.5 万条来自18 个不同领域的问题和指令,覆盖了从烹饪到法律建议的多个话题。这些数据衡量了人们对哪个答案更有帮助的偏好,旨在为RLHF 奖励模型和自然语言生成评估模型提供训练语料。具体来说,每条数据都是Reddit 的一篇帖子。这篇帖子中会有一个问题或指示,以及两条高赞评论作为答案。SHP 数据构造时通过一定的筛选规则,选择赞更多的评论作为人类更加偏爱的回复。SHP 和Anthropic 的HH-RLHF 有所不同。最大的差异在于SHP 里的内容都是Reddit 用户自然产生的,而HH-RLHF 中的内容则是机器生成的。这意味着这两个数据集的内容风格和特点都大有不同,可以互为补充。
- 点赞
- 收藏
- 关注作者
评论(0)