赞
踩
ChatGPT的训练过程有三步,RLHF技术主要涉及第二步和第三步的内容:
chatgpt效果如此好,主要可以归结于两个原因:
强化学习需要一个交互的过程,而且要解决的是序列决策问题。这里如果要展开还会涉及到马尔科夫决策过程。
强化学习有许多在游戏上的应用。用熟悉的super mario来举个例子,我们可以操纵的游戏角色mario是可以交互的智能体agent,游戏中每一帧的画面中要交互的场景即enviroment,游戏角色依据当前环境做出新的动作,而环境会对角色的每个动作作出反馈,例如吃到了金币会有加成,而被击中则不是一个好消息,这样的反馈可以量化为奖励reward,这种奖励值可以帮助学习如何选择最合适的动作,也就是在交互中学习。
这张图说明了强化学习与我们熟悉的监督学习、无监督学习的关系。强化学习是和监督学习,非监督学习并列的第三种机器学习方法。
与熟悉的监督学习比较,来说明强化学习的一些特点:
强化学习和非监督学习的区别:
也还是在奖励值这个地方。非监督学习是没有输出值也没有奖励值的,它只有数据特征。同时和监督学习一样,数据之间也都是独立的,没有强化学习这样的前后依赖关系。
文本生成的问题,可以建模为一个token空间上的序列决策问题(选择一个token后继续选择另一个token)
强化学习可以分为基于值的方法、基于策略的方法和actor-critic方法这三类。
基于值函数的学习方法要学习一个价值函数, 去计算每个动作在当前环境下的价值,目标就是获取最大的动作价值,即我每一步采取回报最大的动作和环境进行互动。Value-Based的方法输出的是动作的价值,选择价值最高的动作。适用于非连续的动作。常见的方法有Q-learning、Deep Q Network和Sarsa。其基础网络结构如下图所示,在编码网络之后,直接用一个全连接层来为每个状态输出一个分数。
基于策略梯度的学习方法去学习策略函数,去计算当前前环境下每个动作的概率,目标是获取最大的状态价值,即该动作发生后期望回报越大越好。Policy-Based的方法直接输出下一步动作的概率,根据概率来选取动作。但不一定概率最高就会选择该动作,还是会从整体进行考虑。适用于非连续和连续的动作。常见的方法有Policy gradients。从图中可以看出来,在全连接层之后还有一个softmax层,从而将打分转化成概率。
Actor-Critic 融合了上述两种方法,价值函数和策略函数一起进行优化。价值函数负责在环境学习并提升自己的价值判断能力,而策略函数则接受价值函数的评价,尽量采取在价值函数那可以得到高分的策略。
PG算法之前,主流的基于价值的强化学习算法,在给定一个状态下,计算采取每个动作的价值,我们选择在所有状态下具有最大的期望奖励的行动。如果我们省略中间的步骤,即直接根据当前的状态来选择动作,也就引出了强化学习中的另一种很重要的算法,即策略梯度(Policy Gradient, PG)。也就是说,其目的是是直接建模与优化Policy
策略梯度它通过观测信息选出一个行为直接进行反向传播,利用reward奖励直接对选择行为的可能性进行增强和减弱,好的行为会被增加下一次被选中的概率,不好的行为会被减弱下次被选中的概率。
PG算法,我们有一个agent,他与环境互动,然后学习更新,这个过程中的policy都是同一个。因此,当我们更新参数之后,之前计算的策略的所有概率就都不对了,这时候就需要重新去采样。之前采样出来的数据都不能用了,换句话说,过程中的数据都只能用一次。这就造成了policy gradient会花很多时间在采样数据上,因为所有的数据都只能更新一次,更新一次之后就要重新采样。
PPO算法的改进原因。我们希望可以用一个旧策略收集到的数据来训练新策略,这意味着我们可以重复利用这些数据来更新策略多次,效率上可以提升很多。具体来说,PPO算法利用重要性采样的思想,在不知道策略路径的概率p的情况下,通过模拟一个近似的q分布,只要p同q分布不差的太远,通过多轮迭代可以快速参数收敛。
近线策略优化算法PPO 即属于AC框架下的算法,在采样策略梯度算法训练方法的同时,重复利用历史采样的数据进行网络参数更新,提升了策略梯度方法的学习效率。PPO重要的突破就是在于对新旧策略器参数进行了约束,希望新的策略网络和旧策略网络的越接近越好。近线策略优化的意思就是:新策略网络要利用到旧策略网络采样的数据进行学习,不希望这两个策略相差特别大,否则就会学偏。
涉及:
这篇论文解决的问题聚焦在不合理的评价指标上,在文本生成领域这同样是一个棘手的问题。随着语言模型变得越来越强大,训练和评估越来越受到用于特定任务的数据和指标的限制。例如,摘要任务训练模型使用ROUGE等一些自动化指标进行评估,但这些指标都不能完全刻画我们对摘要质量的需求。传统的通过监督学习和最大化对数似然并不是一个好的方法。因为在摘要、翻译等任务中,可能同时有几个相差很大的输出文本都是高质量的输出,而最大化对数似然只会迫使模型输出去接近训练集reference里的那个版本的文本。这篇文章专注于英文摘要任务,不采用极大化词的对数似然损失,而是利用收集到的human feedback数据通过监督学习专门训练一个打分模型来直接捕获人类的偏好,然后再使用这个模型通过强化学习来训练生成模型。
第一步是花钱招人给问题(prompt)写回答(demonstration),使用经典的预训练目标训练一个语言模型GPT3。这一步大家都懂,就不用说了。这一步可以多训几个版本,第二步会用到。
这一步里比较值得说的就是预训练模型的选择。首先,我们。对这一步的模型,OpenAI 在其第一个流行的 RLHF 模型 InstructGPT 中使用了较小版本的 GPT-3; Anthropic 使用了 1000 万 ~ 520 亿参数的 Transformer 模型进行训练;DeepMind 使用了自家的 2800 亿参数模型 。
这里可以用额外的文本或者条件对这个 LM 进行微调,例如 OpenAI 对 “更可取” (preferable) 的人工生成文本进行了微调,而 Anthropic 按 “有用、诚实和无害” 的标准在上下文线索上蒸馏了原始的 LM。这里或许使用了昂贵的增强数据,但并不是 RLHF 必须的一步。由于 RLHF 还是一个尚待探索的领域,对于” 哪种模型” 适合作为 RLHF 的起点并没有明确的答案。
接下来,我们会基于 LM 来生成训练奖励模型的数据,并在这一步引入人类的偏好信息。
在第二部中,针对问题的多个回答,我们可以使用多个模型来产生,包括初始模型、finetune模型和人工模型等,然后使用奖励模型/偏好模型来对这些回答进行打分。这个奖励模型接收prompt和response两个文本作为输入,输出一个标量奖励。奖励模型的训练是RLHF流程中非常重要的一个环节,实际上是一个监督学习过程。
在RM的训练过程中,我们可以从Prompt数据集中选取一些数据作为训练集,在输入初始模型后,可以产生多个response,这些response可以是多个语言模型生成的,也可以是generate之后采样得到的,只要保证这些response是针对同一个prompt生成的即可。接下来,我们需要对这些response进行排名,人工对这些回答进行排序,按照一些标准(比如可读性、正确性等)进行排序。这里需要注意,我们不直接对文本标注分数来训练RM,因为标注者的价值观不同会导致标注分数不准确且存在噪音。相反,我们使用排名来比较多个模型的输出,并构建更好的规范数据集。
对于排名方式,一种成功的方式是对不同模型在相同提示下的输出进行比较,并使用Elo系统建立一个完整的排名。使用pair-wise loss将rank计算为具体的分数,然后归一化为标量奖励值。InstructGPT论文使用的是pair-wise loss,也可以使用经典的ELO算法来实现。通过这些排名结果,我们可以得到针对同一个prompt的response的分数,这些分数将被用于训练RM模型。需要注意的是,这些训练数据集可以从预定义数据集中采样生成,也可以通过Amazon Mechanical Turk等渠道获得。
最后,这一奖励模型的训练对于RLHF算法的无缝接入非常重要。我们可以用端到端的方式使用LM来建模,也可以使用模块化的系统建模。这一奖励数值对于后续的RL算法来说至关重要。
接下来是最后一步:利用 RM 输出的奖励,用强化学习方式微调优化 LM。
最后一阶段是强化学习微调阶段。在这一步中,数据集规模更大,且不再需要人工参与。这一步的方法可以概括为以下四个部分:
首先,使用第一阶段监督模型的参数来初始化PPO模型的参数。接着,使用PPO模型生成回答,并使用第二阶段的RM模型对回答进行评估和打分。最后,通过打分,更新训练PPO模型的参数。
让我们将微调任务表述为强化学习问题。我们认为输入的prompt是状态(state),输出的response是动作(action),想要得到的策略(policy)就是怎么从prompt生成action能够得到最大的reward,也就是拟合人类的偏好。
这个策略的行为空间(action space)是语言模型(LM)的词表对应的所有词元,通常在50k数量级左右。所有的状态是可能的输入词元序列,也比较大(词汇量 ^ 输入标记的数量)。奖励函数是偏好模型和策略转变约束(Policy shift constraint)的组合。
PPO算法确定的奖励函数具体计算如下:将prompt输入初始LM和当前微调的LM,分别得到了输出文本。将来自当前策略的文本传递给RM,得到一个标量的奖励。将两个模型生成的文本进行比较,计算差异的惩罚项。在来自OpenAI、Anthropic和DeepMind的多篇论文中,该惩罚项被设计为输出词分布序列之间的KL散度的缩放。这一项被用于惩罚RL策略在每个训练批次中生成大幅偏离初始模型的文本,以确保模型输出合理连贯的文本。如果去掉这一惩罚项,可能会导致模型在优化中生成乱码文本来愚弄奖励模型提供高奖励值。此外,OpenAI在InstructGPT上实验了在PPO添加新的预训练梯度,以保证RL模型能够保留好的语言模型能力。可以预见到,随着RLHF研究的进展,奖励函数的公式会继续进化。
作为一个可选项,RLHF可以通过迭代RM和策略共同优化。随着策略模型的更新,用户可以继续将输出和早期的输出进行合并排名。Anthropic 在他们的论文中讨论了迭代在线 RLHF,其中策略的迭代包含在跨模型的 Elo 排名系统中。这样引入策略和 RM 演变的复杂动态,代表了一个复杂和开放的研究问题。
对这一部分,已经有许多非常优秀且深入的解析,例如以下两篇:
强化学习一:基础部分
ChatGPT背后的技术-基于人类反馈的强化学习(RLHF) 理论篇
李宏毅 (Hung-yi Lee) 课程
李宏毅深度强化学习(国语)课程(2018) :bilibili
ChatGPT 背后的“功臣”——RLHF 技术详解
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。