大模型 RLHF 实战!【OpenAI独家绝技RLHF!RLHF的替代算法DPO!Claude 暗黑科技 RAIHF!】

大模型 RLHF 实战

    • 大模型 RLHF 实战
    • RLHF:OpenAI独家绝技
      • RLHF 的问题
    • DPO 直接偏好优化算法:RLHF的替代算法
      • 公式 1 - 4:KL散度下奖励的最大化目标
      • 使用 DPO 微调 Llama 2
    • RAIHF

 


大模型 RLHF 实战

RLHF(基于人类反馈的强化学习)分为 3 个阶段:

  • 预训练:为了生成内容,需要一个生成式的预训练语言模型(如GPT);还会引入微调,帮助模型更好理解提示(Prompts)
  • 训练奖励函数:通过对模型生成的结果,人工标注反馈,构造训练集,用于训练奖励函数,模拟人的奖励偏好
  • 强化学习:定义策略(第一阶段语言模型输入输出)、动作空间(词表token的排列组合)、奖励函数(第二阶段训练的);对于同一个问题,会同时送入原始模型、训练模型,用奖励函数对俩者评分,分数差值用于训练策略函数。

安利下面的工具,支持主流模型(ChatGLM系列、Baichuan系列、LLaMA系列、Qwen系列、Bloom):

  • https://github.com/littepan/LLaMA-Efficient-Tuning/blob/main/README_zh.md

  • https://github.com/hiyouga/LLaMA-Factory

同时支持训练方法,包括预训练(pre-training), 有监督微调(sft)和 RLHF,微调方式均为 LoRA 或者 QLoRA、全参数。

按照ta的教程一步步操作即可。

RLHF:OpenAI独家绝技

正在更新…

RLHF 的问题

RLHF 的替代有 2 种:DPO、RAIHF。

  • RLHF:从人类反馈中学习的强化学习

  • DPO:直接偏好优化算法,专门替代传统的基于奖励的 RL 方法。

    RLHF 问题:策略和价值函数迭代步骤相当复杂,经验数据采集计算成本高。

    改进:DPO 是简化了 RLHF 步骤(不需要对奖励函数进行复杂的工程设计),但同时效果不比 RLHF 差。

  • RAIHF:RLHF不再需要人类,AI 实现标注自循环,AI标注效果一样好。

    RLHF 问题

    • 成本高昂(收集高质量人工,反馈需要大量的时间和金钱资源),RLHF通常使用数以万计的人类偏好标签
    • 样本效率低(模型需要大量的人类反馈来学习和改进其行为)
    • 人类偏见(模型可能会学习并放大人类评估者的偏见)
    • 一致性问题(不同人评估给出不一致的反馈,导致模型训练中的不确定性)
    • 可扩展性问题(对于非常复杂的任务或环境,难以获得足够的人类反馈来训练模型)
       

    改进:RAIHF 是通过 AI 排序,而非人工排序数据集,训练出来的偏好模型PM的指引下迭代模型策略。

DPO 直接偏好优化算法:RLHF的替代算法

论文地址:https://arxiv.org/abs/2305.18290

作者在训练 DPO 模型时省略了奖励模型训练的步骤,而是通过设计一种包含正负样本对比的损失函数,在训练过程中得到一个满足人类偏好的模型。

  • 你的语言模型其实是一个奖励模型
  • 不训练奖励模型,语言模型直接做偏好优化
  • 学习你的偏好,满足你的偏好

这种方法在文本总结和单轮对话任务上提高了生成结果的质量。

正样本和负样本的对比,使得模型能够更好地学习到人类偏好的特征,从而提升了生成的质量。

RLHF、DPO 差异:

左右两边最大的区别就是,有没有reward model (RM)。

DPO 是将配给 RW 的训练融合在 final LM 里面,LLM本身即是RM。

公式 1 - 4:KL散度下奖励的最大化目标

p ∗ ( y 1 ≻ y 2 ∣ x ) = exp ⁡ ( r ∗ ( x , y 1 ) ) exp ⁡ ( r ∗ ( x , y 1 ) ) + exp ⁡ ( r ∗ ( x , y 2 ) ) p^*(y_1\succ y_2\mid x)=\frac{\exp\left(r^*(x,y_1)\right)}{\exp\left(r^*(x,y_1)\right)+\exp\left(r^*(x,y_2)\right)} p(y1y2x)=exp(r(x,y1))+exp(r(x,y2))exp(r(x,y1))

  • 人类偏好分布 p ∗ p* p
  • 模型会生成问答对,会呈现给人类标注者,并让他们给出一个答案偏好 y 1 > y 2 ∣ x y_{1}>y_{2} | x y1>y2x
  • y 1 > y 2 y_{1}>y_{2} y1>y2:更好的答案
  • 假设这些偏好是由某个潜在的奖励模型 r ∗ ( x , y 1 ) r^*(x,y_1) r(x,y1) 生成

建立奖励模型,对其参数做最大似然估计,从而将问题转换为二分类问题,同时使用负对数做似然损失:

  • L R ( r ϕ , D ) = − E ( x , y w , y l ) ∼ D [ log ⁡ σ ( r ϕ ( x , y w ) − r ϕ ( x , y l ) ) ] \mathcal{L}_{R}(r_{\phi},\mathcal{D})=-\mathbb{E}_{(x,y_{w},y_{l})\sim\mathcal{D}}\big[\log\sigma(r_{\phi}(x,y_{w})-r_{\phi}(x,y_{l}))\big] LR(rϕ,D)=E(x,yw,yl)D[logσ(rϕ(x,yw)rϕ(x,yl))]

目标函数(使用学到的奖励函数来为语言模型提供反馈):

  • max ⁡ π θ E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] − β D K L [ π θ ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] \max_{\pi_\theta}\mathbb{E}_{x\sim\mathcal{D},y\sim\pi_\theta(y|x)}\big[r_\phi(x,y)\big]-\beta\mathbb{D}_{\mathbf{KL}}\big[\pi_\theta(y\mid x)||\pi_{\mathbf{ref}}(y\mid x)\big] maxπθExD,yπθ(yx)[rϕ(x,y)]βDKL[πθ(yx)∣∣πref(yx)]

推导上式,得到:

  • π r ( y ∣ x ) = 1 Z ( x ) π r e f ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) \pi_r(y\mid x)=\frac1{Z(x)}\pi_{\mathrm{ref}}(y\mid x)\exp\left(\frac1\beta r(x,y)\right) πr(yx)=Z(x)1πref(yx)exp(β1r(x,y))
     

上述就是论文 1 - 4 的推导结果。

这个公式是从一个最大化目标函数出发来推导的,其中包含了两个部分:模型预期奖励的最大化以及KL散度的一个约束项。

KL散度是衡量两个概率分布之间差异的一个指标,在这里用于限制学习到的策略 π θ \pi_\theta πθ 与参考策略 π r e f \pi_{\mathrm{ref}} πref 之间的差异。

目标函数可以分解为两部分:

  1. max ⁡ π θ E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] \max_{\pi_\theta}\mathbb{E}_{x\sim\mathcal{D},y\sim\pi_\theta(y|x)}\big[r_\phi(x,y)\big] maxπθExD,yπθ(yx)[rϕ(x,y)]

    • 这部分表示模型试图最大化预期奖励,也就是在给定输入 x x x 的情况下,通过策略 π θ \pi_\theta πθ 生成答案 y y y 来获得尽可能高的奖励 r ϕ ( x , y ) r_\phi(x,y) rϕ(x,y)
  2. − β D K L [ π θ ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] -\beta\mathbb{D}_{\mathbf{KL}}\big[\pi_\theta(y\mid x)||\pi_{\mathbf{ref}}(y\mid x)\big] βDKL[πθ(yx)∣∣πref(yx)]

    • 这部分表示有一个正则化项,通过KL散度来限制策略 π θ \pi_\theta πθ 不能偏离参考策略 π r e f \pi_{\mathrm{ref}} πref 太远。 β \beta β 是一个正的权衡系数,决定了对偏离的惩罚程度。

目标函数最大,而公式 3 是相减,就意味着 − β D K L [ π θ ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] -\beta\mathbb{D}_{\mathbf{KL}}\big[\pi_\theta(y\mid x)||\pi_{\mathbf{ref}}(y\mid x)\big] βDKL[πθ(yx)∣∣πref(yx)] 要最小。

而要从这个目标函数推导出策略 π r ( y ∣ x ) \pi_r(y\mid x) πr(yx) 的表达式,我们需要用到拉格朗日乘子法来处理带有约束的优化问题。拉格朗日乘子法可以帮助我们求解在某些约束条件下的最优化问题。

在这种情况下,想要的是一个新的策略 π r ( y ∣ x ) \pi_r(y\mid x) πr(yx),不仅能最大化奖励,还要满足对参考策略 π r e f ( y ∣ x ) \pi_{\mathrm{ref}}(y\mid x) πref(yx) 的约束。

为了解这个带约束的优化问题,可以构建一个拉格朗日函数:

L ( π θ ) = E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] − β D K L [ π θ ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] \mathcal{L}(\pi_\theta) = \mathbb{E}_{x\sim\mathcal{D},y\sim\pi_\theta(y|x)}\big[r_\phi(x,y)\big] - \beta \mathbb{D}_{\mathbf{KL}}\big[\pi_\theta(y\mid x)||\pi_{\mathbf{ref}}(y\mid x)\big] L(πθ)=ExD,yπθ(yx)[rϕ(x,y)]βDKL[πθ(yx)∣∣πref(yx)]

对这个函数求解最优策略 π θ \pi_\theta πθ 的表达式时,会发现最优策略具有如下形式:

  • 公式 3 到 公式 4 的详细推导:https://zhuanlan.zhihu.com/p/644911957

π r ( y ∣ x ) = 1 Z ( x ) π r e f ( y ∣ x ) exp ⁡ ( 1 β r ϕ ( x , y ) ) \pi_r(y\mid x) = \frac{1}{Z(x)}\pi_{\mathrm{ref}}(y\mid x) \exp\left(\frac{1}{\beta}r_\phi(x,y)\right) πr(yx)=Z(x)1πref(yx)exp(β1rϕ(x,y))

这里的 Z ( x ) Z(x) Z(x) 是规范化因子(相当于做了归一化,取值 0-1),确保 π r ( y ∣ x ) \pi_r(y\mid x) πr(yx) 是一个有效的概率分布。

这个推导使用了变分原理,其中 π r ( y ∣ x ) \pi_r(y\mid x) πr(yx) π θ ( y ∣ x ) \pi_\theta(y\mid x) πθ(yx) 的一个特殊形式,它使得拉格朗日函数 L ( π θ ) \mathcal{L}(\pi_\theta) L(πθ) 被最大化。

意思是,可以通过一个加权的参考策略来构造一个新的策略,该策略会偏向于高奖励的行为,同时保持与参考策略的相似性。

权重由奖励函数和温度参数 β \beta β 共同决定。

正在更新…

使用 DPO 微调 Llama 2

请猛击:https://github.com/huggingface/blog/blob/main/zh/dpo-trl.md

RAIHF

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

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

相关文章

Springboot管理系统数据权限过滤(三)——0业务入侵实现部门数据权限过滤

上一章,讲解了SQL拦截器的,做了一个简单的SQL改造。本章要实现: 仅对指定的service方法内执行的SQL进行处理;完成对部门权限的过滤; 以下简单用一个图说明了整个处理过程,红色框住的部分,就是…

CPU缓存一致性问题

什么是可见性问题? Further Reading :什么是可见性问题? 缓存一致性 内存一致性 内存可见性 顺序一致性区别 CPU缓存一致性问题 由于CPU缓存的出现,很好地解决了处理器与内存速度之间的矛盾,极大地提高了CPU的吞吐能…

CompleteFuture与Future的比较

CompleteFuture的介绍CompleteFuture的特点CompleteFuture的应用场景CompletableFuture的优缺点Future的介绍Future的特点Future的应用场景Future的优缺点CompletableFuture和Future的区别CompletableFuture和Future的关联关系CompletableFuture和Future的使用示例CompletableF…

css实现边框彩虹跑马灯效果

效果展示 代码实战 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-…

台湾虾皮卖什么比较好

虾皮&#xff08;Shopee&#xff09;平台在台湾地区广受欢迎&#xff0c;吸引了大量的消费者和卖家。该平台上有许多热销产品类别&#xff0c;这些产品在台湾市场上具有巨大的销售潜力。在本文中&#xff0c;我们将介绍虾皮平台上一些热门的产品类别&#xff0c;并提供一些建议…

大数据Doris(三十八):Aggregate 和 Uniq 模型中的 ROLLUP

文章目录 Aggregate 和 Uniq 模型中的 ROLLUP 一、获得每个用户的总消费

〖大前端 - 基础入门三大核心之JS篇(57)〗- 继承

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;哈哥撩编程&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xff0c;目前在公司…

FTP连接报530错误 Permission denied 解决方案

文章目录 1.检查vsftpd状态2.检查配置文件 1.检查vsftpd状态 service vsftpd status图中是已经启动的状态&#xff0c;如果没有启动&#xff0c;输入以下命令之一启动&#xff1a; service vsftpd start service vsftpd restart如果没安装vsftpd&#xff0c;请先安装&#xf…

自助式可视化开发,ETLCloud的集成之路

自助式可视化开发 自助式可视化开发是指利用可视化工具和平台&#xff0c;使非技术人员能够自主创建、定制和部署数据分析和应用程序的过程。 传统上&#xff0c;数据分析和应用程序开发需要专业的编程和开发技能。但是&#xff0c;自助式可视化开发工具的出现&#xff0c;使…

HTML有哪些列表以及具体的使用!!!

文章目录 一、HTML列表二、列表的应用1、无序列表2、有序列表3、自定义列表 三、总结 一、HTML列表 html的列表有三种&#xff0c;一种是无序列表&#xff0c;一种是有序列表&#xff0c;还有一种为自定义列表。 二、列表的应用 1、无序列表 <ul> <li>无序列表…

nodejs 使用 ws/socket.io 模块 websocket 即时通讯

源码 koa-mongodb-template ws 模块 下载 npm install ws简单使用 服务端代码 const WebSocket require("ws"); const WebSocketServer WebSocket.WebSocketServer;const wss new WebSocketServer({ port: 8080 });// 监听客户端连接 wss.on("connectio…

【Linux】冯诺依曼体系结构与操作系统及其进程

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解冯诺依曼体系结构与操作系统&#xff0c;掌握…

我为什么从来不给患者方子?

有的患者问&#xff1a;“大夫我给您几百块钱处方费&#xff0c;拿您的方子自己去抓&#xff0c;行吗&#xff1f;” 我笑着回答&#xff1a;“不行的&#xff0c;跟钱没有关系&#xff0c;原因有以下四个。” 【1】 有的患者带方子走后&#xff0c;找抓药的人或者别的中医对…

用bash写脚本

本章主要介绍如何使用bash写脚本。 了解通配符 了解变量 了解返回值和数值运算 数值的对比 判断语句 循环语句 grep的用法是“grep 关键字 file”&#xff0c;意思是从file中过滤出含有关键字的行。 例如&#xff0c;grep root /var/log/messages&#xff0c;意思是从/var/log/…

【工作流Activiti】MyActivit的maven项目

1、Idea新建一个项目MyActivit的maven项目 2、安装插件 在 idea 里面&#xff0c;activiti 的插件叫 actiBPM&#xff0c;在插件库里面把它安装好&#xff0c;重启 idea 就行了。 3、 maven 项目中&#xff0c;并更改 pom.xml。pom 中依赖如下&#xff1a; <?xml version…

Postman使用总结-断言

让 Postman 工具 代替 人工 自动判断 预期结果 和 实际结果 是否一致 断言代码 书写在 Tests 标签页中。 查看断言结果 Test Results 标签页

安防视频云平台/可视化监控云平台EasyCVR获取设备录像失败,该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。GB28181音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视…

Ubuntu安装ARM交叉编译器

Ubuntu安装交叉编译器 更新apt # 更新apt sudo apt update安装gcc sudo apt install build-essential查看gcc版本 gcc -v下载交叉编译工具 复制到用户目录 解压 tar -xvf gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xz移动到/opt/下 sudo ./gcc-linaro-5.…

14、Kafka 请求是怎么被处理的

Kafka 请求是怎么被处理的 1、处理请求的 2 种常见方案1.1、顺序处理请求1.2、每个请求使用单独线程处理 2、Kafka 是如何处理请求的&#xff1f;3、控制类请求和数据类请求分离 无论是 Kafka 客户端还是 Broker 端&#xff0c;它们之间的交互都是通过 “请求 / 响应” 的方式完…

Home Assistant HAOS版如何安装HACS

环境&#xff1a; Home Assistant 11.2 SSH & Web Terminal 17.0 问题描述&#xff1a; Home Assistant HAOS版如何安装HACS 解决方案&#xff1a; 1.打开WEB 里面的终端输入下面命令 wget -O - https://hacs.vip/get | bash -如果上面的命令执行后卡住不动&#xff…