RLHF-基于人类反馈的强化学习

news2024/11/24 9:46:15

RLHF

文章目录

  • RLHF
    • 强化学习基础回顾
    • 为什么要使用基于人类反馈的强化学习
    • 大纲
    • RLHF的起源
      • 大预言模型中的RLHF
        • 案例
      • ChatGPT
    • RLHF中的技术细节
      • 预训练语言模型
      • 训练奖励模型
      • 基于RL进行微调
    • RLHF 的未来

强化学习基础回顾

image-20230624000300032

智能体通过采取行动与环境进行交互,并返回状态和奖励。奖励我们想要优化的目标,状态只是当前时间智能体所处环境的一种表示,智能体使用策略将该状态映射到一个动作。

强化学习的精妙之处在于其学习过程是开放式的,所以智能体只通过看到这些奖励信号并学习如何随着时间的推移对获取到的奖励进行优化,而不去关注奖励实际的来源如何。

这样可以使得我们构建一个可以解决复杂问题的智能体,这是为什么我们选用强化学习来解决场景对话这样一个开放式问题的原因,而这也是我们开始讨论RLHF(Reinforcement Learning From Human Feedback)的地方。

为什么要使用基于人类反馈的强化学习

image-20230624004936299

其中的关键问题是我们想要建模的损失函数是什么?即我们在机器学习系统中要以一种有意义的可持续的方对人类的价值观进行编码,像解决日常生活中最常见的复杂问题一样。

问题是如何创建和实现一个损失函数?一个损失函数可能要对以下方面进行评估:

  1. 什么是有趣的?
  2. 什么是符合道德标准的?
  3. 什么是安全的?

基于人类反馈的强化学习的目标是将一些复杂的数据集集成到机器学习模型中以对这些值进行编码,或者将这些值编码到模型而非函数中

我们想做的是直接与大多数人一起学习这些价值观,而不是直接将其赋予给所有人,并在某种程度上对一些价值观进行主观的甚至错误的标记。

所以基于人类反馈的强化学习的确是一种及时且有效的,能够为模型创建复杂损失函数的方法之一。

大纲

image-20230624005220087

我们将从三方面对RLHF进行介绍:

  • RLHF的起源
  • RLHF的概念概述
  • RLHF的具体细节、未来方向以及推论

RLHF的起源

RLHF起源于决策制定阶段,在深度强化学习广泛应用之前,其通过简单的非神经网络方法即评价智能体的行为来形成策略。研究者会将每一个智能体的动作标记为好或坏,这就像是创建了一个给予奖励或惩罚的模型,并基于这个模型来形成行动策略。

image-20230624011104347

在图片左侧的论文提出了一种名为Tamer的框架来解决俄罗斯方块的智能体训练问题,该框架中的奖励模型和策略存在一定程度的分离。

基于人类反馈的强化学习在深度强化学习中得到普及时,图片右侧的论文使用了基于人类轨迹反馈的奖励预测器,所以上述框架流程中的环境状态也可以被称为RL框架中的观察结果,被提供给人们对其进行标记,奖励预测器会根据这些反馈学习预期奖励,也就是在每个状态下,各种可能的动作应得到的奖励。当智能体在新的状态下需要选择动作时,它可以使用奖励预测器来预测每个可能动作的预期奖励,并选择预期奖励最高的动作。

大预言模型中的RLHF

OpenAI在早期试图使用RLHF训练一个模型来总结文本,这就像很多人在考试中做的阅读理解一样,所以这包含人类的能力在其中

案例

prompt

  • 攻读计算机科学的博士学位还是继续工作?特别是在一个人在拿到学位之后不想继续在学术界继续工作的情况。

如果你将其传递到一个刚刚经过总结训练的语言模型中,你会得到以下的输出:

  • 我想攻读计算机科学的博士学位,但是我担心未来的发展;我目前是全职工作,但是我担心未来的发展

这显然不是人们书写的逻辑和方式,并且该语言模型有时会出现语法错误, 使得阅读起来有困难

所以在此基础上,OpenAI做了一件事即对该promot写了一段人工注释案例

  • 我现在在做一份软件相关的工作,正在决定是否去攻读计算机科学的博士学位以提高自己的技能并探索新的兴趣和挑战

我们现在知道了早期的实验在做什么,而现在我们要使用RLHF来组合这些以获得更好的、更人性化的输出结果:

  • 现在处于工作状态,但是正在考虑是否要攻读计算机科学的博士学位以免陷入没有居留签证的尴尬局面。有谁出于研究的目的攻读博士学位但是在毕业之后不想加入学术界的吗?

现实中有大量这样的例子,所以很明显,使用RLHF在这样的任务上有很好的效果,特别是当你问到了一些比较关键和重要的话题,你可能不想获得没有用处的或者错误的信息

ChatGPT

OpenAI告诉我们可以在大模型中使用RLHF,但是我们并不清楚其中的细节,显然在这件事情上OpenAI没有那么的open。

但是有一些关于ChatGPT中使用RLHF的猜测:

  • OpenAI在人工添加注释上面花费了大量的资金
  • OpenAI修改了RLHF的训练过程

很明显使用了RLHF之后语言模型的效果有着显著的提升,使用过ChatGPT的人能够明确的感受到

RLHF中的技术细节

image-20230626213836185

RLHF 是一项涉及多个模型和不同训练阶段的复杂概念,这里我们按三个步骤分解:

  • 预训练一个语言模型 (LM)
  • 聚合问答数据并训练一个奖励模型 (Reward Model,RM)
  • 强化学习 (RL) 方式微调 LM

预训练语言模型

image-20230626214048027

通常语言模型基于transformer进行构建,在训练过程中涉及以下内容:

  • 无监督的序列预测
  • 从网站上进行数据爬取
  • 对于模型的尺寸没有一个最佳的答案(业界的模型参数涵盖范围从100亿到2800亿)

image-20230626214230747

Language model pretraining : dataset

Dataset:

- Reddit, other forums, news, books
- Optionally include human-written text from predefined prompts

Prompts & Text Dataset -> Train Language Model(Initial Language Model)

				|						^

				|-----------------------|

			  Human Augmented Text(Optional)

人类增强文本是可选步骤,使用它只是为了覆盖我们原有的数据集。人类增强文本中包含提示原始的文本数据集,这使得这个数据集看起来像从Reddit、其他论坛或新闻中获取的。这样的组合可以为语言模型提供更丰富和多样化的输入,使其更好地理解和模仿真实世界中的对话和讨论

image-20230626214323985

关于该可选步骤,公司可以雇佣一些数据标注人员对数据进标注,即对其中的重要问题或重要的提问进行回答和标注,这些处理后的数据将是真正的高质量的训练语料,可以基于此进一步的训练语言模型,一些论文将其称之为监督式微调

接下来我们来讨论怎么使用特定的数据集来训练奖励模型引入人类的偏好信息并降低损失,因为我们刚讨论了怎么从人类不同的价值观中降低损失,而不是使用具体的损失函数

训练奖励模型

image-20230626214414790

RM 的训练是 RLHF 区别于旧范式的开端,该模型的目标是将一段输入文本序列映射到奖励值,数值上对应人的偏好。我们可以用端到端的方式用 LM 建模,或者用模块化的系统建模 (比如对输出进行排名,再将排名转换为奖励) 。这一奖励数值将对后续无缝接入现有的 RL 算法至关重要。

image-20230626214536804

RM 的提示 - 生成对文本是从预定义数据集中采样生成的,并用初始的 LM 给这些提示生成文本。即该奖励模型的训练数据集与语言模型预训练中使用的数据集不同,它包含更多期望输出的目标数据,这和互联网上的一些偏好数据集类似,也和一些聊天机器人类似,他们在更具体的场景使用更加具体的数据集和语料

这些数据集和语言模型预训练使用的数据集相比在数量上要少几个数量级,因为它们更关注于获得具体的内容,就像一种真正人性化交互式的文本类型,而不是互联网上的大多数较为嘈杂并难以处理的数据。

image-20230627232827874

经过从预定义数据集中的采样之后,语言模型会基于一个prompt将输出多个文本,之后我们会对其进行排名。这有点像我们将一个prompt输入到多个语言模型中,这些模型将生成不同的文本,然后我们标记这些输出并进行相应的排名。

image-20230626214647187

在得到模型的多个输出之后,我们可以采用一些排序方法,例如Elo对它们进行逐个比较排序,有很多种排序方法都可以使用,但本质上都是使用一个较为人工的方式将文本映射到下游的分数。

image-20230626214806157

在我们有了一些输出结果的排名之后,我们就需要考虑使用输入输出对来训练监督学习模型,具体的我们实际训练一系列的文本并将其作为输入,基于Transformer模型对其进行解码操作,得到输出后将根据奖励的特定标量值对其进行训练,最后我们就得到了奖励模型或称之为偏好模型。

image-20230626214831505

奖励模型也是一种非常大的基于Transformer的语言模型,因此它也可以有很多的参数,例如50B。但其参数量大小也会有变化,例如chatGPT的奖励模型有6B个参数,但最关键的是其从输入文本到输出标量中实际训练方式的变化

基于RL进行微调

image-20230708211224714

最后一步我们基于RL进行微调,在其中状态和操作都是语言,奖励模型将环境信息从语言转换到标量奖励值。

image-20230708211641317

我们希望从用户的prompt或模型的输出中获取一些有用的信息,然后通过策略来传递这些信息。该策略是一个经过训练的的大型语言模型,它会生成一些文本,我们将其传入奖励模型并获取相应的标量值,该奖励模型也使用文本进行训练,然后将其放入反馈循环中,以便我们可以随着时间的推移对其进行更新。

image-20230708212204873

与此同时还有其他一些较为重要的步骤,其中之一已经被人们广泛的使用到,并且几乎该方向的论文都使用了这种方法的某种变体,即KL散度

KL散度在机器学习中较为常用,它是分布之间的距离度量。当用户传入一个prompt时,语言模型会生成一个时间序列,一个随时间变化的分布,我们可以查看这些分布相对于彼此的差异。在上图中我们试图限制灰色板块中的语言模型的策略,因为当我们随着时间的推移对其进行迭代,其与已知具有准确的文本描述能力的初始语言模型的输出分布差异较大。

采取KL散度对语言模型的输出分布进行评估可以有效的防止出现异常,即语言模型即使输出乱码也能从奖励模型中获得高奖励,而我们希望的是在它给出有效的文本信息后从奖励模型中获得高奖励。因此采取KL散度对语言模型进行约束可以使我们处于理想的优化环境。

现在我们有了奖励模型的输出和KL散度对模型的约束,然后我们将奖励的标量与KL比例因子进行结合,这表达了我们对奖励模型给予的奖励值和尾部约束的关心程度。实际我们可以选择向KL散度和奖励模型的求和运算中添加更多的输入。例如chatGPT为经过训练的模型的文本输出添加了奖励项,该模型将进行迭代更新以匹配他们付费人工编写的一些高质量注释,对于具体的prompt,就像上述关于就业和读博问题的总结那样,他们希望文本能够与所有人性化文本相匹配,但这显然非常依赖于数据。

最后我们将奖励输入到RL优化器中,RL优化器处理该奖励会像处理来自环境中的奖励一样,之后经过一个RL循环,其中语言模型是策略,奖励模型和文本采样技术是环境,我们得到状态和奖励,并随着RL更新规则正常工作。其中有一些技巧,例如该RL策略可能会冻结一些参数对环境进行优化使其更容易处理,但实际上这就像只将PPO应用到语言模型上,这是一种策略分级添加算法。

PPO算法是一种相对较旧的强化学习算法,当数据通过系统时仅根据该数据计算梯度,而不保留最近转化的重放缓冲区。PPO算法适用于连续或离散操作,这就是为什么它可以处理之前的语言数据。

PPO 算法确定的奖励函数具体计算如下:将提示 x 输入初始 LM 和当前微调的 LM,分别得到了输出文本 y1, y2,将来自当前策略的文本传递给 RM 得到一个标量的奖励 r_θ。将两个模型的生成文本进行比较计算差异的惩罚项,在来自 OpenAI、Anthropic 和 DeepMind 的多篇论文中设计为输出词分布序列之间的KL散度的缩放。此外,OpenAI 在 InstructGPT 上实验了在 PPO 添加新的预训练梯度,可以预见到奖励函数的公式会随着 RLHF 研究的进展而继续进化。

作为一个可选项,RLHF 可以通过迭代 RM 和策略共同优化。随着策略模型更新,用户可以继续将输出和早期的输出进行合并排名。Anthropic 在他们的论文中讨论了迭代在线 RLHF,其中策略的迭代包含在跨模型的 Elo 排名系统中。这样引入策略和 RM 演变的复杂动态,代表了一个复杂和开放的研究问题。

RLHF 的未来

尽管 RLHF 取得了一定的成果和关注,但依然存在局限。这些模型依然会不确定性地输出有害或者不真实的文本。这种不完美也是 RLHF 的长期挑战和发展的动力 —— 在人类的固有领域中运行意味着永远不会到达一个完美的标准。

收集人类偏好数据的质量和数量决定了 RLHF 系统性能的上限。RLHF 系统需要两种人类偏好数据:人工生成的文本和对模型输出的偏好标签。生成高质量回答需要雇佣兼职人员 (不能依赖产品用户和众包) 。另一方面,训练 RM 需要的奖励标签规模大概是 50k 左右,所以并不那么昂贵 (当然这远超学术实验室的预算) 。

目前相关的数据集只有一个基于通用 LM 的 RLHF 数据集 (来自Anthropic和几个较小的子任务数据集 (如来自 OpenAI的摘要数据集) 。另一个挑战来自手工标注者的偏见,不同的人类标注者对于一个文本可能有不同的意见,导致了训练数据存在一些潜在差异。

抛开数据方面的限制,一些有待开发的设计可以让 RLHF 取得长足进步。例如对 RL 优化器的改进方面,PPO 是一种较旧的算法,但目前没有什么结构性原因让其他算法可以在现有 RLHF 工作中更具有优势。另外,微调 LM 策略的一大成本是策略生成的文本都需要在 RM 上进行评估,通过离线 RL 优化策略可以节约这些大模型 RM 的预测成本。

最近,出现了新的 RL 算法如隐式语言 Q 学习 (Implicit Language Q-Learning,ILQL) 也适用于当前 RL 的优化。在 RL 训练过程的其他核心权衡,例如探索和开发 (exploration-exploitation) 的平衡也有待尝试和记录。探索这些方向至少能加深我们对 RLHF 的理解,更进一步提升系统的表现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言督学营 第十八天】考研408排序大题初探(将排序思想融入题目)

文章目录 题目一分析代码实战 题目二分析代码实战 补充(快排与归并)数据结构大题注意点!!!(评分标准) 题目一 分析 (1)算法的基本设计思想 由题意知,将最小的nl2个元素放在Ai中,其余的元素放在A2中&#x…

FreeRTOS实时操作系统(十三)任务通知

系列文章目录 文章目录 系列文章目录任务通知任务通知值和通知状态任务通知值通知状态 任务通知API函数发送通知函数接收通知函数 实验测试模拟二值信号量实验模拟计数型信号量模拟事件标志组实验模拟消息邮箱实验 任务通知 任务通知:用来通知任务的,任…

ATMEGA16 Proteus仿真自动人体感应电风扇DS18B20温度 -0069

ATMEGA16 Proteus仿真自动人体感应电风扇DS18B20温度 -0069 Proteus仿真小实验: ATMEGA16 Proteus仿真自动人体感应电风扇DS18B20温度 -0069 功能: Protues版本:7.8 程序编写:ICCAVR:7.12 硬件组成:ATMEGA16单片机…

嵌入式开发之编码器速度采集

光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。这是应用最多的传感器,光电编码器是由光源、光码盘和光敏元件组成。光栅盘是在一定直径的圆板上等分地开通若干个长方形孔。由于光电码盘与电动机同轴,…

spark和zeppelin认证不一致:Only one of --proxy-user or --principal can be provided

spark和zeppelin认证不一致:Only one of --proxy-user or --principal can be provided 如果配置principal认证方式,zeppelin走的是hadoop权限,如果配置proxy-user认证方式,zeppelin走的是当前登录用户的权限(ranger控…

GitHub上cambel的ur3项目调试经验

按照https://github.com/cambel/ur3/wiki/Compile-from-source配置环境时,遇到以下问题: catkin clean时报错 [clean] Error: The current or desired workspace could not be determined. Please run catkin clean from within a catkin workspace or…

【学会动态规划】第 N 个泰波那契数(1)

目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 4. 空间优化 写在最后 动态规划怎么学? 学习一个算法没有捷径,更何况是学习动态规划, 跟…

MySQL 中索引是如何实现的,有哪些类型的索引,如何进行优化索引

MySQL 中的索引 前言 上篇文章聊完了 MySQL 中的锁,这里接着来看下 MySQL 中的索引。 一般当我们数据库中的某些查询比较慢的时候,正常情况下,一顿分析下来,大多数我们会考虑对这个查询加个索引,那么索引是如何工作的呢…

从零开始的前后端分离项目学习(前后端从零环境搭建)

一、 前后端分离介绍: 前端独立编写客户端代码(用户交互数据展示),后端独立编写服务端代码(提供数据处理接口),并提供数据接口就行。 前端通过Ajax访问后端数据借口,将model展示到…

使用VESD脉冲离子风机5年内至少可节省一半的维护成本

之前的文章有给大家详细介绍过,来自VESD的脉冲离子风机,它有着特殊的设计:插拔式结构和可水洗针架,因此对我们的很多客户来说,这款风机性价比是非常高的。 早在15年以前,VESD就对市面上大部分风机进行过测试…

解决Google浏览器网页覆盖问题

在使用 Google 进行搜索的时候出现打开新页面会覆盖当前页面的问题 针对此问题,解决方法如下: 1、首先在浏览器的地址栏中随便搜索内容 2、页面的 右上角有个⚙️的设置图标,点进去 点击 “查看所有设置” 3、在结果打开方式中进行勾选 设…

uniapp打包APP实现应用内整包更新或热更新

思路: 1.首先要理解更新方式的区别 静默更新、弱更新以及强制更新。 APP更新机制-静默更新、弱更新、强更新 - 知乎 2.其次要理解不同更新方式要用到的插件----------这里推荐插件应用市场的插件。 app升级、整包更新和热更新组件 支持vue3 支持打开安卓、苹果应…

使用 SMT求解机 根据变迁关系生成迁移后系统的状态

本文的例子来源于2011年发布的论文 IC3: Where Monolithic and Incremental Meet 文章目录 Ⅰ、变迁系统的介绍状态图变迁公式 Ⅱ、SMT求解机简介公式的计算计算另一状态 结果展示参考文献 Ⅰ、变迁系统的介绍 状态图 论文中给出了一个系统的状态迁移图和它的的变迁公式。现在…

【近场社交项目】数据库系统期末设计——概念设计部分

数据库系统期末设计——概念设计部分😎 前言🙌项目设计(1)各个实体属性ER图(2)各个业务功能的ER图 总结撒花💞 😎博客昵称:博客小梦 😊最喜欢的座右铭&#x…

【Redis】特殊数据类型 Geo (地理位置)

🎯前言 除了五中基本的数据类型外,Redis还支持两种特殊的数据类型,第一种 Geo (地理位置):用于存储地理位置相关的数据,例如经纬度、距离等。第二种 Stream (流):是一个高级的列表类型,支持对列…

Python基于pandas库导出excel文件

将Pandas数据框架导出到Excel文件中 让我们看看如何将Pandas数据框架导出到Excel文件中。 实列代码: import time import pandas as pd from io import BytesIO from flask import make_response,def export_navi():# 所有DataFrame合并集合df_list []# 创建一个数…

理工大学|校企联手创典范,布局存储新未来

某理工大学地质灾害防治与地质环境保护国家重点实验室的前身是1989年由原国家计委、国家教委批准,在某理工大学(原某地质学院)“地质工程”国家重点学科基础上建立的国家专业实验室,该实验室是我国地质灾害防治领域目前唯一的国家…

唯一无副作用禁用Win10/11更新方法,一键暂停1000周

作为一个现代化的系统,Windows 很早便配备了自动更新功能以快速获取新功能、修复安全漏洞。 不过到实际使用中嘛,自动弹出、重启自动进行、新版本大量 Bug … 体验十分糟糕。 种种原因导致,经常就有朋友要禁止 Win10/11 自动更新方法。 我们…

MySQL-存储函数练习

创建表并插入数据 ​ 字段名 数据类型 主键 外键 非空 唯一 自增 ​ id INT 是 否 是 是 否 ​ name VARCHAR(50) 否 否 是 否 否 ​ glass VARCHAR(50) 否 否 是 否 否mysql>…

vue项目启动前端时让本地局域网其他设备访问本项目时的配置

文章目录 编辑package.json优化 编辑package.json "dev": "vite --host [本机ip]" ,案例 优化 这样的话实用性更好,我们访问的话依然可以正常访问服务端的ip "dev": "vite --host 0.0.0.0" ,