利用RLHF优化大模型:提升性能与应用能力

news2024/11/25 7:06:54

在数据科学不断发展的过程中,大模型在自然语言处理、图像识别、金融预测等各个领域的应用越来越广泛。然而,大模型的训练和优化也面临着越来越多的挑战,例如数据量过大、计算资源不足、超参数调整困难等。传统的机器学习算法往往难以处理这些问题,因此需要更高效和智能的算法来应对。Reinforcement Learning from Human Feedback (RLHF) 作为一种强化学习算法,可以有效地利用人类给出的反馈信息来训练大模型,提高其性能。本文将介绍如何使用RLHF来优化大模型,为其应用提供更强大的支持。

下面是文章的结构

利用RLHF优化大模型:提升性能与应用能力

  • 预训练一个语言模型 (LM)
    • 对话的监督微调(SFT)
  • 训练奖励模型
  • 用强化学习微调
  • RLHF的优势和局限性
    • RLHF的优点:
    • RLHF的挑战和局限性:
  • 结语

预训练一个语言模型 (LM)

预训练的目标是让语言模型具备对语言的统计信息,使其能够根据上下文预测词汇的出现概率。语言模型可以看作是一个"补全机器",给定一个提示文本,它可以生成一个回应文本来完成提示。通过预训练,我们得到了一个大型的语言模型(LLM),也称为预训练模型。

一旦您拥有了预训练的语言模型,您还可以进行监督微调(STF)这一额外的可选步骤。在监督微调中,我们使用人工标注的(输入,输出)文本对对预训练的模型进行微调,使其更适应特定任务。STF被认为是RLHF的高质量初始化,为后续的RLHF过程奠定了良好的基础。

在这一步的最后,我们得到了经过训练的语言模型,即我们的主模型。这个主模型是我们希望用RLHF进一步训练的模型,通过RLHF的训练,它将不断根据人类反馈改进自己的生成能力。
在这里插入图片描述

值得一提的是,在预训练阶段,不同的研究机构可能采用不同的模型和方法。例如,OpenAI在其流行的RLHF模型 InstructGPT 中使用了较小版本的 GPT-3,Anthropic使用了参数量庞大的Transformer模型,而DeepMind则使用了自家的巨大参数模型 Gopher。此外,对预训练模型进行微调时,有的机构可能采用额外的文本或条件,比如OpenAI对“更可取”的人工生成文本进行微调,而Anthropic根据“有用、诚实和无害”的标准在上下文线索上蒸馏了原始的模型。这些微调步骤可能涉及昂贵的增强数据,但并不是RLHF的必须步骤。因为RLHF仍然是一个尚待探索的领域,对于哪种模型适合作为RLHF的起点并没有明确的答案,因此不同机构可能采用不同的方法进行实验。

对话的监督微调(SFT)

监督微调(SFT)的目标是优化预训练模型,使其能够生成用户所期望的回应。在预训练阶段,模型通过学习大量的语言数据,优化了对补全文本的预测能力。这意味着当我们给预训练模型一个问题时,比如"如何学习编程",它可以生成多种合理的完成方式,例如:

  1. 添加问题上下文:针对初学者
  2. 添加后续问题:有哪些编程语言需要学习?学习编程需要多长时间?
  3. 直接给出答案:学习编程需要掌握编程语法和算法。

在这些选项中,如果我们真正希望得到一个回答,那么第三个选项是最合适的。而监督微调的目标就是通过优化预训练模型,使其更倾向于生成用户所期望的答案。

在实施监督微调时,我们向语言模型展示不同用例(例如问答、摘要、翻译等)的示例,来告诉模型如何适当地对这些提示进行回应。这些示例的格式是(提示,回应),通常称为演示数据。OpenAI将这种监督微调方法称为"行为克隆":您向模型展示了它应该如何行为,而模型则会克隆这种行为。

举个例子,假设我们有一个预训练的语言模型,我们希望在问答场景中优化它的表现。我们可以为模型提供各种问答示例,比如:

  • 提示:“请告诉我如何制作巧克力蛋糕。”
  • 回应:“首先准备好巧克力、面粉、鸡蛋和牛奶。然后按照食谱进行操作,最后烘烤约30分钟即可。”
  • 提示:“什么是太阳系中最大的行星?”
  • 回应:“太阳系中最大的行星是木星。”

通过这样的示例,我们教导模型正确回答不同类型的问题。随着监督微调的进行,模型会逐渐学会根据提示生成用户期望的回答,从而更好地适应特定任务和用例。通过这一步骤,我们的主模型将逐渐变得更加智能和精准,为后续的RLHF阶段奠定了基础。下图为监督微调的简单图示。

在这里插入图片描述

训练奖励模型

在这里插入图片描述
在这一步中,我们的目标是收集一个包含(输入文本,输出文本,奖励)三元组的数据集。

如上图所示:使用输入文本数据(最好是生产数据),通过您的模型生成相应的输出文本,并由人工为生成的输出文本分配一个奖励值。

奖励值一般取0~5之间,也可以用0/1来表示。

奖励模型(RM)的任务是用一对(prompt,response)和一个奖励分数来训练一个模型,在给定输入上输出分数是机器学习中一个非常常见的任务,可以将其看作是分类或回归任务。该模型为每一个文本输入到文本输出的结果打分,来评估模型的性能

为了计算出最优的奖励模型,我们使用不同参数的大模型(不同微调或者不微调的)输出不同的response,奖励分数可能也不一样。优化奖励模型的目的就是为了尽可能让同一个prompt输入到不同的大模型下输出的response,最后得到的奖励差不多。

假设: r θ r_\theta rθ 为正在训练的奖励模型,模型参数为 θ \theta θ

x x x:prompt
y w y_w yw:winning response 表示这些大模型输出中得到奖励最高的response
y l y_l yl:losing response 表示这些大模型输出得到奖励最低的response

对于每个训练样本 ( x , y w , y l ) (x, y_w, y_l) (x,yw,yl),有:

s w = r θ ( x , y w ) s_w=r_\theta(x,y_w) sw=rθ(x,yw):奖励模型对于winning response的分数
s l = r θ ( x , y l ) s_l=r_\theta(x,y_l) sl=rθ(x,yl):奖励模型对于losing response的分数

损失值: − l o g ( σ ( s w − s l ) ) −log(\sigma(s_w−s_l)) log(σ(swsl))

为了更好地理解这个损失函数的作用,我们来进行可视化。设 d = s w − s l d=s_w−s_l d=swsl。以下是 f ( d ) = − l o g ( σ ( d ) ) f(d)=−log(\sigma(d)) f(d)=log(σ(d))的图表。对于负的d,损失值较大,这鼓励奖励模型不能使winning response的分数降低于losing response的分数。

关于训练奖励数值方面,这里需要人工对 LM 生成的回答进行排名。

对具体的排名方式,一种成功的方式是对不同 LM 在相同提示下的输出进行比较,然后使用 Elo 系统建立一个完整的排名。这些不同的排名结果将被归一化为用于训练的标量奖励值。

ELo机制玩王者荣耀,英雄联盟的应该再熟悉不过了

通过得到奖励模型,我们为后续的RLHF过程提供了一种可靠的衡量标准。

用强化学习微调

强化学习微调是RLHF的关键步骤之一。它有助于训练语言模型,使其能够根据用户提示生成更合适的回应。然而,由于输出的奖励本身并不是可微的,我们需要使用强化学习(RL)来构建一个损失函数,以便能够对LM进行反向传播。

大佬们通过Kullback-Leibler(KL)散度和近端策略优化(PPO)来实现强化学习技术。

为了更好的说明为什么可以将强化学习用到LM中,我们首先将微调任务表述为 RL 问题。

该策略 (policy) 是一个接受提示并返回一系列文本 (或文本的概率分布) 的 LM。这个策略的 行动空间 (action space) 是 LM 的词表对应的所有词元 (一般在 50k 数量级) ,观察空间 (observation space) 是可能的输入词元序列,也比较大 (词汇量 ^ 输入标记的数量) 。奖励函数 是偏好模型和策略转变约束 (Policy shift constraint) 的结合。

如下图所示,对比通用的强化学习来看,你会更理解了
在这里插入图片描述在这里插入图片描述
在训练开始,我们将创建一个与LM完全相同且其可训练权重被冻结的LM。这个模型将有助于防止可训练的LM完全改变其权重,并开始输出一些无意义的文本来满足奖励模型。

我们通过计算冻结的LM和没有冻结的LM值之间的文本输出分布序列(概率分布)的KL散度作为损失函数。

有了奖励和KL损失,我们现在可以应用强化学习来使奖励损失可微分。

为了使损失可微分,我们采用了近端策略优化(Proximal Policy Optimization,PPO)算法!下面是整个微调的详细步骤:

  • 第一步:利用奖励模型

首先,用户输入或提示被发送到RL策略,这实际上是LM的调整版本。RL策略生成一个回应,该回应与初始LM的输出一起由奖励模型评估。然后,奖励模型生成一个标量奖励值,对应于回应的质量。

  • 第二步:引入反馈循环

这个过程在反馈循环中迭代,奖励模型为尽可能多的样本分配奖励,以资源允许的方式。随着时间的推移,获得更高奖励的回应将引导RL策略,帮助其生成更符合人类期望的回应。

  • 第三步:使用KL散度衡量差异

Kullback-Leibler(KL)散度是衡量两个概率分布之间差异的统计方法,在此起着至关重要的作用。在RLHF中,使用KL散度比较RL策略当前回应的概率分布与表示理想或最符合人类期望回应的参考分布之间的差异。

  • 第四步:使用近端策略优化进行微调

微调的一个重要部分是近端策略优化(PPO)。PPO是一种著名的强化学习算法,以其在高维状态和动作空间的复杂环境中优化策略的有效性而闻名。PPO在RLHF微调过程中尤其有用,因为它在训练过程中有效地平衡了探索和利用。对于RLHF代理来说,这种平衡对于从人类反馈和试错探索中学习至关重要。因此,整合PPO可以实现更快和更强大的学习。

  • 第五步:避免不合适的回应

微调过程有助于阻止语言模型产生不合适或荒谬的输出。由于低奖励的回应不太可能被重复,语言模型被驱使产生更符合人类期望的输出。

其中PPO算法计算损失公式和图解释(用于对LM进行小幅度更新)如下所示:

  1. 将“Initial probs”设为“New probs”来初始化。
  2. 计算新输出文本概率与初始输出文本概率之间的比率。
  3. 根据公式 l o s s = r θ ( y ∣ x ) − λ K L D K L ( π p p o ( y ∣ x ) ∣ ∣ π b a s e ( y ∣ x ) ) loss =r_\theta(y|x)- \lambda_{KL}D_{KL}(\pi_{ppo}(y|x)||\pi_{base}(y|x)) loss=rθ(yx)λKLDKL(πppo(yx)∣∣πbase(yx))计算损失
  4. 通过反向传播来更新LM的权重。
  5. 使用新更新的LM计算“New probs”(即新的输出文本概率)。
  6. 重复步骤2至步骤5 N 次(通常,N=4)。

这里的probs就是LM模型的文本输出概率 π ( y ∣ x ) \pi(y|x) π(yx)

在这里插入图片描述

RLHF的优势和局限性

从人类反馈中进行强化学习(RLHF)为完善AI系统提供了强大的方法论。然而,就像任何其他方法一样,它既有明显的优点,也存在潜在的挑战。

RLHF的优点:

  1. 适应性:RLHF是一种动态学习策略,可以根据收到的反馈进行适应。这种适应性使其非常适合各种任务,并使其能够根据实时交互和反馈调整其行为。
  2. 减少偏见:理论上,RLHF有助于减少模型的偏见。通过精心选择和多样化的人类反馈,这些模型可以从更广泛、更代表性的角度学习,减少在初始训练数据中固有的过度泛化或偏见。
  3. 持续改进:RLHF模型具有持续改进的能力。随着这些模型与用户的互动并获得更多反馈,它们可以学习和适应,从而提高性能和用户体验。
  4. 安全性:RLHF可以在增强AI系统的安全性方面发挥关键作用。通过人类反馈,这些系统可以避免潜在的有害或不适当的行为,使其对交互和使用更安全。

RLHF的挑战和局限性:

1. 可扩展性:可扩展性仍然是RLHF面临的一个重大挑战。由于这些模型依赖于人类反馈进行学习,将其扩展以适应更大或更复杂的任务可能会耗费大量资源和时间。
2. 依赖于人的因素:RLHF模型严重依赖于人类反馈的质量。无效或不足的反馈可能导致性能不佳,甚至在模型中无意间培养出有害行为。
3. 人类偏见:偏见引入的潜在问题是RLHF的一个关键关注点。由人类评估者提供的反馈可能带有固有偏见,导致学习的偏差。这些偏见可以采取多种形式,包括选择性偏见、确认偏见、评估者间变异性和反馈有限性。

然而,值得注意的是,存在有效的策略来减轻这些偏见。选择多样化的评估者、共识评估、评估者的校准、对反馈过程和代理性能的定期评估以及平衡反馈与其他来源的方法都有助于减少RLHF中偏见的影响。这些策略强调了RLHF的周密和系统的方法,强调了在过程中持续评估和调整的重要性。

在RLHF的不断发展过程在RLHF的不断发展过程中,还存在一些其他挑战和局限性需要解决:

  1. 解释性和透明性:随着模型规模的增大和复杂性的提高,大型语言模型往往变得更加晦涩难解。这使得解释模型的决策过程变得困难,特别是在使用RLHF进行微调后。对于一些应用场景,特别是在需要解释性和透明性的领域,这可能会成为一个限制因素。
  2. 奖励设计:设计有效的奖励函数是RLHF中的一个关键问题。奖励函数需要能够准确地反映出模型的性能,并且要具有足够的区分度,以便对不同回应进行排序。但是,设计奖励函数并不总是直观和简单的,特别是在复杂的任务和多样化的回应情况下。
  3. 对抗性样本:强化学习往往对对抗性样本攻击具有一定的脆弱性。在RLHF中,如果模型被针对性地攻击,可能会导致生成不符合期望的回应。这需要在RLHF训练过程中对模型进行鲁棒性和安全性的考虑,以防止对抗性攻击。
  4. 训练效率:由于大型模型的训练需要大量的计算资源和时间,RLHF的训练成本可能会很高。这对于一些资源受限的环境和应用场景来说可能是一个挑战。

尽管存在这些挑战,但RLHF作为一种强大的学习方法仍然在不断演进和改进。研究人员和开发者正在努力解决这些问题,以进一步推动RLHF的应用和发展。同时,社会对于人工智能系统的可信度和可控性也在不断增加,对于解释性、透明性和可解释性的要求也将在RLHF的发展过程中得到更多关注。

在未来,我们可以期待看到更多创新和改进,以使RLHF成为更加普遍且可信赖的方法,为各个领域的应用提供更强大的支持和推动人工智能技术的持续进步。

结语

随着数据科学和人工智能领域的不断发展,大型语言模型和RLHF作为强大的工具正逐渐成为各种领域的重要组成部分。通过预训练和微调,大型语言模型能够具备丰富的语言表达能力,而RLHF则能够根据人类反馈持续改进模型的性能,使其更加智能和适应不同任务。

然而,我们也必须认识到RLHF仍然面临着一些挑战,如可扩展性、人类偏见、解释性等问题。解决这些问题需要跨学科的研究和合作,以确保RLHF的应用能够安全、可靠、高效地应对现实世界的挑战。

在未来,我们有理由相信,随着技术的不断进步和对人工智能的深入理解,RLHF将继续发展壮大,为人类社会带来更多的福祉和创新。同时,我们也需要密切关注其发展过程中可能带来的道德和社会问题,并持续推动科技的发展与社会价值的平衡。只有这样,RLHF才能真正成为人工智能技术发展的助推器,为人类创造更美好的未来。

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

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

相关文章

(学习笔记-IP)IP基础知识

基本认识 IP在TCP/IP参考模型中处于第三层,也就是网络层。 网络层的主要作用是:实现主机与主机之间的通信,也叫点对点的通信。 网络层与数据链路层的关系: MAC的作用是实现直连的两个设备之间通信,而IP负责没有直连的…

dbeaver下载及安装

dbeaver下载及安装 dbeaver下载安装执行 【近期收到公司通知,需要卸载navicat,找其他免费开源数据库管理工具】 dbeaver下载 地址: https://dbeaver.io/download/迅雷下载会快很多 安装 一步一步安装就行了: 启动 执行

IDE /完整分析C4819编译错误的本质原因

文章目录 概述基本概念代码页标识符字符集和字符编码方案源字符集和执行字符集 编译器使用的字符集VS字符集配置 有何作用编译器 - 源字符集编译器 -执行字符集 Qt Creator下配置MSVC编译器参数动态库DLL字符集配置不同于可执行程序EXE总结 概述 本文将从根本原因上来分析和解…

安全是最珍贵的 ,不要让自己的自己的秘密成为“梨润”的来源!!!

近日,某高校毕业生在校期间窃取学校内网数据,收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注。在大数据时代,算法分发带来了隐私侵犯,在享受消费生活等便捷权利的同时,似乎又有不…

顺序表(增删改查)

目录 1.线性表 2.顺序表 2.1静态顺序表 2.2动态顺序表 3.顺序表接口 4.顺序表实现 4.1初始化 4.2销毁 4.3打印 4.4尾插 4.5尾删 4.5.1尾删改进 4.6检查是否存满 4.7头插 4.8头删 4.9 1.线性表 线性表 (inear ist)是n个具有相同特性的数据元素的有限序列。线…

【JavaEE】基于Servlet与MySQL实现一个简易网站

目录 前言 一、实现表白墙的前期准备工作 1、约定前后端交互的接口 1.1、接口一:页面获取当前所有的留言消息 1.2、接口二:提交新消息给服务器 二、前端和后端代码的实现 1、数据的永久化保存 2、小结 前言 之前小编在写前端页面的时候&#x…

大模型入坑指南 大厂vs初创公司

大模型竞争激烈,创业公司随时可能倒掉,造成项目烂尾,EB3.5已经跟国内其他模型拉开了差距… 人工智能是当前时代的重要热点之一,它正在改变着我们的生活和工作。在人工智能领域,有一种技术尤其引人注目,那就…

RocketMq 事务消息原理

Rocketmq 事务消息API使用 使用TransactionMQProducer类。 实现TransactionListener 接口覆盖其方法executeLocalTransaction和checkLocalTransaction 即可。 其中executeLocalTransaction 执行本地方法和checkLocalTransaction 事务状态回查。 玩法 简历一张本地事务表&…

Centos报错:[Errno 12] Cannot allocate memory

执行一个脚本刚开始正常,后面就报[Errno 12] Cannot allocate memory 如果内存不足,可能需要增加交换内存。或者可能根本没有启用交换。可以通过以下方式检查您的交换: sudo swapon -s如果它为空,则表示您没有启用任何交换。添加 1GB 交换…

构建自己的ChatGPT:从零开始构建个性化语言模型

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

FPGA XDMA 中断模式实现 PCIE3.0 QT上位机视频传输 提供工程源码和QT上位机源码

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案图像产生、发送、缓存XDMA简介XDMA中断模式图像读取、输出、显示QT上位机及其源码 5、vivado工程详解6、上板调试验证7、福利:工程代码的获取 1、前言 PCIE(PCI Express)采…

【微服务系统设计】系统设计基础:速率限制器

什么是速率限制器? 速率限制是指防止操作的频率超过定义的限制。在大型系统中,速率限制通常用于保护底层服务和资源。速率限制一般在分布式系统中作为一种防御机制,使共享资源能够保持可用性。 速率限制通过限制在给定时间段内可以到达您的 A…

java学习路程之篇三、进阶知识、面向对象高级、接口新特性、代码块、内部类、Lambda表达式、窗体、组件、事件

文章目录 1、接口新特性2、代码块3、内部类4、Lambda表达式5、窗体、组件、事件 1、接口新特性 2、代码块 3、内部类 4、Lambda表达式 5、窗体、组件、事件

python 压测 +paramiko 远程监下载日志 +js 测试报告

目录 前言: 关于压测客户端 netty nio 压测端 python tornado 异步框架压测 python 协程压测端 远程监控 js 解析日志 前言: 在软件开发中,压测和测试是非常重要的一个环节,它可以帮助我们更加全面地检测软件中的安全漏洞…

SR04 超声波测距模块

文章目录 前言一、SR04 模块介绍二、设备树设置三、驱动程序四、测试程序五、上级测试及效果总结 前言 超声波测距模块 是利用超声波来测距。模块先发送超声波,然后接收反射回来的超声波,由反射经历的时间和声音的传播速度 340m/s,计算得出距…

剑指offer40.最小的k个数

简直不要太简单了这道题,先给数组排个序,然后输出前k个数就好了。我用的是快排,这是我的代码: class Solution {public int[] getLeastNumbers(int[] arr, int k) {int n arr.length;quickSort(arr, 0, n-1);int[] res new int…

Mysql 简介

Mysql 简介 学习目的 MySQL作为目前最流行的关系型数据库管理系统之一,因其开源免费的特性,成为小型Web应用的重点关注对象。几乎所有的动态Web应用基本都在使用MySQL作为数据管理系统。学习MySQL的目的也是为了更好地理解数据库相关的SQL注入漏洞&…

【性能优化】MySQL百万数据深度分页优化思路分析

业务场景 一般在项目开发中会有很多的统计数据需要进行上报分析,一般在分析过后会在后台展示出来给运营和产品进行分页查看,最常见的一种就是根据日期进行筛选。这种统计数据随着时间的推移数据量会慢慢的变大,达到百万、千万条数据只是时间问…

关于脑电睡眠分期,你应该知道的还有这些

导读 基于电生理信号(EEG,EOG和EMG)对睡眠阶段进行识别的建议源自Rechtschaffen和Kales手册,由美国睡眠医学学会于2007年发布,并定期更新多年。这些建议对于评估不同类型的睡眠/觉醒主观评定中的客观标志物非常重要。凭借研究的简单、可重复…

windows/linux/mac上编译open3d 0.17.0

目录 写在前面准备编译windows:linux/mac:注: 参考完 写在前面 1、本文内容 windows/linux/mac上编译open3d 0.17.0 2、平台 通过cmake构建项目,跨平台通用 3、转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/1318918…