大模型对齐方法笔记二:基于Rank的对齐方法RRHF和PRO

news2024/12/24 21:25:29

文章目录

    • RRHF
    • PRO
      • 将RLHF嫁接到PRO
    • 参考资料

RRHF

RRHF(Rank Responses to align Human Feedback)出自2023年4月的论文《RRHF: Rank Responses to Align Language Models with Human Feedback without tears》,是较早提出的不需要使用PPO来对齐人类偏好的方法。

设输入数据记为x,输出记为y,奖励函数为R(x,y),待训练模型记为 π \pi π(从模型 ρ \rho ρ​初始化得到)。

在训练前,先对输入从不同来源采样输出(response)构建数据集,来源包括待训练模型、ChatGPT、GPT-4、人工标注的高质量和低质量输出。训练时,对于一个输入x,就有k个不同的输出 y i y_i yi 1 ≤ i ≤ k 1 \le i \le k 1ik),奖励函数给每一个 y i y_i yi的打分为 R ( x , y i ) = r i R(x, y_i) = r_i R(x,yi)=ri,为了使模型与分数 { r i } k \{ r_i\}_k {ri}k对齐,让模型 π \pi π对每一个 y i y_i yi使用下式计算分数 p i p_i pi
p i = − ∑ t log ⁡ P π ( y i , t ∣ x , y i , < t ) ∣ ∣ y i ∣ ∣ ( 1.1 ) p_{i}=-\frac{\sum_{t} \log P_{\mathcal{\pi}}\left(y_{i, t} \mid x, y_{i,<t}\right)}{||y_i||} \qquad (1.1) pi=∣∣yi∣∣tlogPπ(yi,tx,yi,<t)(1.1)
p i p_i pi是模型 π \pi π y i y_i yi的对数条件概率,目的是使模型 π \pi π对高质量输出给更大概率,对低质量输出给小概率。使用如下ranking loss来优化这个目标:
L r a n k = ∑ r i < r j m a x ( 0 , p i − p j ) ( 1.2 ) L_{rank} = \sum_{r_i < r_j} max(0, p_i - p_j) \qquad (1.2) Lrank=ri<rjmax(0,pipj)(1.2)
此外要求模型从最高奖励的输出学习,损失与SFT的交叉熵损失类似:
i ′ = a r g m a x i   r i L f t = − ∑ t log ⁡ P π ( y i ′ , t ∣ x , y i ′ , < t ) ( 1.3 ) i^{\prime} = \mathop{arg max}_i\ { r_i} \\ L_{ft} = - \sum_t \log P_{\mathcal{\pi}}\left(y_{i^{\prime}, t} \mid x, y_{i^{\prime},<t}\right) \qquad (1.3) i=argmaxi riLft=tlogPπ(yi,tx,yi,<t)(1.3)
RRHF的最终目标为这两部分损失之和:
L = L r a n k + L f t ( 1.4 ) L = L_{rank} + L_{ft} \qquad (1.4) L=Lrank+Lft(1.4)

PRO

PRO(Preference Ranking Optimization)出自2023年6月的论文《Preference Ranking Optimization for Human Alignment》, 与RRHF一样,也是基于排序的对齐方法。相比于RRHF只使用两个输出进行pair-wise排序,PRO会考虑多个输出之间的排序。

在这里插入图片描述

设输入prompt为x,两个输出为 y 1 y^1 y1 y 2 y^2 y2,人工标注的偏好为 y 1 ≻ y 2   ∣   x y^1 \succ y^2\ |\ x y1y2  x,Bradley-Terry(BT)模型定义的偏好概率如下式,其目标可以看作为二分类问题奖励模型: L B T = − log ⁡ σ ( r ϕ ( x , y 1 ) − r ϕ ( x , y 2 ) ) \mathcal{L}_{BT} = -\log \sigma(r_{\phi}(x, y^1) - r_{\phi}(x, y^2)) LBT=logσ(rϕ(x,y1)rϕ(x,y2)) r ϕ r_{\phi} rϕ是奖励模型。
P P B = exp ⁡ ( r ϕ ( x , y 1 ) ) exp ⁡ ( r ϕ ( x , y 1 ) ) + exp ⁡ ( r ϕ ( x , y 2 ) ) ( 2.1 ) P_{PB} = \frac{\exp(r_{\phi}(x, y^1))} {\exp(r_{\phi}(x, y^1)) + \exp(r_{\phi}(x, y^2))} \qquad (2.1) PPB=exp(rϕ(x,y1))+exp(rϕ(x,y2))exp(rϕ(x,y1))(2.1)

如果输入prompt x对应n个可能的输出 { y i } \{ y^i\} {yi},且有偏好标注顺序 y 1 ≻ y 2 ≻ ⋯ ≻ y n y^1 \succ y^2 \succ \cdots \succ y^n y1y2yn,则可以定义 y 1 y^1 y1和偏好排序在其之后的输出满足 y 1 , 2 : n = y 1 ≻ y 2 , ⋯   , y n y^{1,2:n}=y^1 \succ {y^2, \cdots, y^n} y1,2:n=y1y2,,yn,那么Bradley-Terry(BT)的目标将变成下式:
P ( y 1 , 2 : n ∣ x ) = exp ⁡ ( r ( x , y 1 ) ) ∑ i = 1 n exp ⁡ ( r ( x , y i ) ) ( 2.2 ) P(y^{1, 2:n}|x) = \frac {\exp(r(x, y^1))}{ \sum^n_{i=1}\exp (r(x, y^i))} \qquad (2.2) P(y1,2:nx)=i=1nexp(r(x,yi))exp(r(x,y1))(2.2)
我们可以很容易想到上述目标没有完全利用排序信息,只使用了 y 1 ≻ y 2 , ⋯   , y n y^1 \succ {y^2, \cdots, y^n} y1y2,,yn,而剩余的n-2个排序如 y 2 ≻ y 3 , ⋯   , y n y^2 \succ {y^3, \cdots, y^n} y2y3,,yn y n − 1 ≻ y n y^{n-1} \succ y^n yn1yn则没有被使用,所以PRO的作者将上式扩展为下式:
P ( y 1 , ⋯   , n ∣ x ) = ∏ k = 1 n − 1 P ( y k , k + 1 : n ∣ x ) = ∏ k = 1 n − 1 exp ⁡ ( r ( x , y k ) ) ∑ i = k n exp ⁡ ( r ( x , y i ) ) ( 2.3 ) \begin{aligned} P(y^{1, \cdots ,n}|x) &= \prod_{k=1}^{n-1}P(y^{k,k+1:n}|x) \\ &= \prod_{k=1}^{n-1} \frac {\exp(r(x, y^k))}{ \sum^n_{i=k}\exp (r(x, y^i))} \qquad (2.3) \end{aligned} P(y1,,nx)=k=1n1P(yk,k+1:nx)=k=1n1i=knexp(r(x,yi))exp(r(x,yk))(2.3)
PRO定义 r π PRO ( x , y k ) r_{\pi_{\text{PRO}}}(x, y^k) rπPRO(x,yk)为以目标LLM π PRO \pi_{\text{PRO}} πPRO为参数的函数,即LLM π PRO \pi_{\text{PRO}} πPRO通过将 π PRO \pi_{\text{PRO}} πPRO生成的每个token的概率相乘来计算输出 y k y^k yk的分数。
r π PRO ( x , y k ) = 1 ∣ y k ∣ ∑ t = 1 ∣ y k ∣ log ⁡ P π PRO ( y t k ∣ x , y < k k ) ( 2.4 ) r_{\pi_{\text{PRO}}}(x, y^k) = \frac{1}{|y^k|} \sum^{|y^k|}_{t=1} \log P_{\pi_{\text{PRO}}} (y^k_t | x, y^k_{<k}) \qquad (2.4) rπPRO(x,yk)=yk1t=1yklogPπPRO(ytkx,y<kk)(2.4)
PRO的优化目标如下式:
L ( y 1 , ⋯   , n ∣ x ) = L PRO + β L SFT ( 2.5 ) \mathcal{L}(y^{1,\cdots, n}|x) = \mathcal{L}_{\text{PRO}} + \beta \mathcal{L}_{\text{SFT}} \qquad (2.5) L(y1,,nx)=LPRO+βLSFT(2.5)
L SFT \mathcal{L}_{\text{SFT}} LSFT是使用top 1候选输出得到的NLL损失, β \beta β是用来平衡文本质量和人类偏好的超参, L PRO \mathcal{L}_{\text{PRO}} LPRO的定义如下(即前面2.3式的对数形式):
L PRO = ∑ k = 1 n − 1 log ⁡ exp ⁡ ( r π PRO ( x , y k ) ) ∑ i = k n exp ⁡ ( r π PRO ( x , y i ) ) ( 2.6 ) \mathcal{L}_{\text{PRO}} = \sum_{k=1}^{n-1} \log \frac {\exp(r_{\pi_{\text{PRO}}}(x, y^k))}{ \sum^n_{i=k}\exp (r_{\pi_{\text{PRO}}}(x, y^i))} \qquad (2.6) LPRO=k=1n1logi=knexp(rπPRO(x,yi))exp(rπPRO(x,yk))(2.6)

将RLHF嫁接到PRO

PRO不需要奖励模型就可以直接在人类标注偏好排序序列上进行优化,但作者也进行了试验发现将RLHF嫁接到PRO给其带来更多的灵活性,所以作者提出了如下三种可能的结合方式:

  • Affordable Preference Ranking。PRO只依赖于人类偏好排序序列,但其数据来源没有被限定,即可以通过人工方式生成不同质量的多个输出,也可以利用已有LLM如ChatGPT、Alpaca等来生成不同的输出。生成的输出再由一个奖励模型 r ϕ r_{\phi} rϕ来排序。

  • Differentiated Contrast。前面2.6式 L PRO \mathcal{L}_{\text{PRO}} LPRO的定义将全部满足 y i ≺ y k y^i \prec y^k yiyk的输出作为 y k y^k yk的负样本并施加相同的惩罚。这种处理方式可能不合理,比如 y k + 1 y^{k+1} yk+1只比 y k y^k yk的效果差一点点,而 y n y^n yn y k y^k yk效果差很多,与 y k y^k yk比较时模型应该轻微地惩罚 y k + 1 y^{k+1} yk+1而重重地惩罚 y n y^n yn。于是PRO作者将式2.6修改为下式,由奖励模型 r ϕ r_{\phi} rϕ得到的分数 r ϕ ( x , y i ) r_{\phi}(x, y^i) rϕ(x,yi)表明 y i y^i yi的数值偏好。
    L PRO = ∑ k = 1 n − 1 log ⁡ exp ⁡ ( r π PRO ( x , y k ) T k k ) ∑ i = k n exp ⁡ ( r π PRO ( x , y i ) T k i ) ( 2.7 ) \mathcal{L}_{\text{PRO}} = \sum_{k=1}^{n-1} \log \frac {\exp \left( \frac{r_{\pi_{\text{PRO}}}(x, y^k)}{\mathcal{T}^k_k} \right)} { \sum^n_{i=k}\exp \left( \frac{r_{\pi_{\text{PRO}}}(x, y^i)}{\mathcal{T}^i_k} \right)} \qquad (2.7) LPRO=k=1n1logi=knexp(TkirπPRO(x,yi))exp(TkkrπPRO(x,yk))(2.7)
    上式中
    T k i > k = 1 r ϕ ( x , y k ) − r ϕ ( x , y i ) T k k = min ⁡ i > k T k i \mathcal{T}^{i>k}_k = \frac {1}{r_{\phi}(x, y^k) - r_{\phi}(x, y^i)} \\ \mathcal{T}^{k}_k = \min_{i>k} \mathcal{T}^{i}_k Tki>k=rϕ(x,yk)rϕ(x,yi)1Tkk=i>kminTki
    也就是将原有的 L PRO \mathcal{L}_{\text{PRO}} LPRO添加了动态温度参数,如果 r ϕ ( x , y k ) r_{\phi}(x, y^k) rϕ(x,yk) r ϕ ( x , y i ) r_{\phi}(x, y^i) rϕ(x,yi)之间的差值增加, y k y^k yk y i y^i yi之间的偏好差距更明显,温度 T k i \mathcal{T}^i_k Tki减小放大了正例 y k y^k yk相比于 y i y_i yi的惩罚。 T k k \mathcal{T}^k_k Tkk​定义为所有负例里的最小温度值有助于维持分子和分母的平衡。

  • Self-bootstrapping Augmentation。PRO对于偏好序列的长度要求不是固定的,所以可以将RLHF里的自举(self-bootstrapping)优势应用到PRO,即给定prompt x和当前模型,采样输出 y ^ \hat{y} y^将其添加到输出集 { y 1 , ⋯   , y n } \{y^1, \cdots, y^n \} {y1,,yn},并使用奖励模型重新排序输出集得到 p ( y ^ 1 , ⋯   , n + 1 ∣ x ) p(\hat{y}^{1, \cdots, n+1} | x) p(y^1,,n+1x) L PRO \mathcal{L}_{\text{PRO}} LPRO相应地变成:
    L PRO ( y 1 , ⋯   , n ∣ x ) ⇒ L PRO ( y ^ 1 , ⋯   , n + 1 ∣ x ) \mathcal{L}_{\text{PRO}}(y^{1, \cdots, n}|x) \Rightarrow \mathcal{L}_{\text{PRO}}(\hat{y}^{1, \cdots, n+1} | x) LPRO(y1,,nx)LPRO(y^1,,n+1x)
    其训练过程如下图
    在这里插入图片描述

参考资料

  1. RRHF:arxiv, github
  2. PRO:arxiv, github

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

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

相关文章

五个超级好用的Prompt网站,让你的GPT效率碾压旁人!

五个超级好用的Prompt网站&#xff0c;让你的GPT效率碾压旁人&#xff01; 1. 150 Best ChatGPT Prompts for All Kinds of Workflow 该网站包含了150个能够显著提升工作流程效率的ChatGPT Prompt。从制作引人入胜的内容到简化项目&#xff0c;这些提示应该有助于将 ChatGPT …

【高频】redis快的原因

相关问题&#xff1a; 1.为什么Redis能够如此快速地进行数据存储和检索&#xff1f; 2.Redis作为内存数据库,其内存存储有什么优势吗? 3.Redis的网络模型有何特点,如何帮助提升性能? 一、问题回答 Redis使用了内存数据结构&#xff0c;例如字符串、哈希表、列表、集合、有…

QT系列教程(5) 模态对话框消息传递

模态对话框接受和拒绝消息 我们创建一个模态对话框&#xff0c;调用exec函数后可以根据其返回值进行不同的处理&#xff0c;exec的返回值有两种&#xff0c;Qt的官方文档记录的为 QDialog::Accepted QDialog::RejectedAccepted 表示接受消息&#xff0c; Rejected表示拒绝消息…

可视化大屏:随意堆数据,错!要主次分明、重点突出,动静结合。

可视化大屏是一种展示数据的方式&#xff0c;它的设计应该遵循一些原则&#xff0c;以确保信息的传递和理解效果最佳。以下是一些关键点&#xff0c;可以帮助设计出主次分明、重点突出、动静结合的可视化大屏&#xff1a; 定义目标和重点&#xff1a; 在开始设计可视化大屏之前…

【ESP32之旅】ESP32 PlatformIO 固件单独烧录

背景 有时候使用PIO编写的代码需要发给客户去验证&#xff0c;相比较于发送源码直接发送bin文件&#xff0c;更加的安全而且高效。不用担心源码的泄漏&#xff0c;也不用帮客户配置PIO环境。 操作方法 1.编译 首先进行代码编译&#xff0c;如编译成功会在 .pio\build\airm2…

LazyVim笔记

回到上次编辑的位置 gi非常的方便。 neo-tree KeyDescriptionMode<leader>beBuffer Explorern<leader>eExplorer NeoTree (Root Dir)n<leader>EExplorer NeoTree (cwd)n<leader>feExplorer NeoTree (Root Dir)n<leader>fEExplorer NeoTree (c…

【C language】统计某数中二进制1的个数

题解&#xff1a;统计某数中二进制1的个数(取模法 看某位是1/0法 干掉最右边的1法) 目录 1.题目2.取模法3.看某位是1/04.干掉最右边的1 1.题目 题目&#xff1a;设计一个程序&#xff0c;统计某数中二进制1的个数 2.取模法 int main() {int num 15;int count 0;while (n…

计算机毕业设计 | SpringBoot+vue仓库管理系统(附源码)

1&#xff0c;绪论 1.1 项目背景 随着电子计算机技术和信息网络技术的发明和应用&#xff0c;使着人类社会从工业经济时代向知识经济时代发展。在这个知识经济时代里&#xff0c;仓库管理系统将会成为企业生产以及运作不可缺少的管理工具。这个仓库管理系统是由&#xff1a;一…

浏览器修改后端返回值

模拟接口响应和网页内容 通过本地覆盖可以模拟接口返回值和响应头&#xff0c;无需 mock 数据工具&#xff0c;比如&#xff08;Requestly&#xff09;&#xff0c;无需等待后端支持&#xff0c;快速复现在一些数据下的 BUG 等。在 DevTools 可以直接修改你想要的 Fetch/XHR 接…

React-基础样式控制

组件基础样式方案 React组件基础的样式控制有两种方式 1、行内样式&#xff08;不推荐&#xff09; 属性名是多个单词的需要使用驼峰写法 也可以把样式都提取到一个变量里&#xff0c;再赋值到style里 2、class类名控制

应急手持气象站:现代气象监测的便携神器

TH-SQ5手持气象站&#xff0c;作为现代气象监测技术的杰出代表&#xff0c;凭借其独特的便携性、全面的功能以及精准的数据采集能力&#xff0c;已经成为了气象监测领域的得力助手。这款小巧而强大的设备&#xff0c;不仅集成了风速、风向、温度、湿度、气压和海拔等多项气象要…

Linux网络编程: udp,tcp协议原理

Linux网络编程: udp,tcp协议原理 一.udp和tcp的介绍1.udp介绍1.udp的特点2.udp的适用场景3.udp效率分析 2.tcp介绍1.tcp的特点2.tcp的适用场景 二.udp协议原理1.udp协议段格式2.udp的缓冲区和全双工通信 三.tcp协议段1.tcp协议段格式2.发送接收缓冲区3.确认应答ACK机制,窗口大小…

Shell脚本的分支语句,循环语句

分支语句 if 表达式 then 命令表 fi 如果表达式为真&#xff0c;则执行命令表中的命令&#xff0c;否则退出。执行fi后的语句。 给文件权限:chmod 0777 文件名 输出: ./文件名 grep 查找用户名&#xff0c;管道wc -l 统计字符 2.多路分支语句 记得给文件名权限喔&#x…

2024年四川省三支一扶报名流程图解✅

2024年四川省三支一扶报名流程图解✅ &#x1f534;时间安排 1、报名时间&#xff1a;5月31日—6月4日17:00 2、资格初审时间&#xff1a;5月31日—6月5日17:00 3、准考证打印时间&#xff1a;6月25日—6月29日 4、笔试时间&#xff1a;6月30日 5、笔试成绩&#xff1a;7…

智能家居ZigBee网关选型定制指南:主控,操作系统,天线设计,助力IoT开发者

随着科技的发展和人们生活水平的提高&#xff0c;智能家居以其便捷、舒适、安全等特点&#xff0c;逐渐走进千家万户&#xff0c;成为家装消费品换新升级的重要方向。在智能家居系统中&#xff0c;网关扮演着中枢控制器的角色&#xff0c;负责将各种设备连接到互联网上&#xf…

目标检测 | R-CNN、Fast R-CNN与Faster R-CNN理论讲解

☀️教程&#xff1a;霹雳吧啦Wz ☀️链接&#xff1a;https://www.bilibili.com/video/BV1af4y1m7iL?p1&vd_sourcec7e390079ff3e10b79e23fb333bea49d 一、R-CNN R-CNN&#xff08;Region with CNN feature&#xff09;是由Ross Girshick在2014年提出的&#xff0c;在PAS…

居间人从事光伏行业需要了解的关键因素

随着国家对光伏新能源的大力推广&#xff0c;光伏电站装机量逐渐上升&#xff0c;居间人这个角色开始进入大家的视线&#xff0c;很多人集中式光伏的居间人这个行业蠢蠢欲动&#xff0c;那么究竟怎么判断自己适不适合从事光伏行业的居间人呢&#xff1f; 首先要了解集中式光伏…

《web应用技术》第九次作业

一、将前面的代码继续完善功能 1.采用XML映射文件的形式来映射sql语句&#xff1b; <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis…

同比和环比

1、概述 同比和环比是两种常见的数据分析方法&#xff0c;用于衡量数据在不同时间段的变化情况。通过同比和环比的计算&#xff0c;可以更清晰地了解数据在不同时间段的增长或下降情况&#xff0c;从而为决策提供依据。 2、同比 同比&#xff08;Year-on-Year, YoY&#xff09…

el-upload上传文件使用http-request方法,formdata传集合List到后台

el-upload上传文件 前言1、使用el-upload上传文件1.1代码演示1.2回显列表2、formdata传集合List到Springboot后台前言 在使用el-upload上传文件,会遇到必须使用:action="upload_url"远端链接的问题,本章我们讲解怎样不适用远端链接,通过上传获取到本地的file文件…