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

文章目录

    • 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.mzph.cn/news/844478.shtml

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

相关文章

nginx安装部署问题

记一次nginx启动报错问题处理 问题1 内网部署nginx&#xff0c;开始执行make&#xff0c;执行不了&#xff0c;后面装了依赖的环境 yum install gcc-c 和 yum install -y pcre pcre-devel 问题2&#xff0c;启动nginx报错 解决nginx: [emerg] unknown directive “stream“ in…

Keil5 ~STM32报错Solutions#1

一、error: #268: declaration may not appear after executable statement in block

Thingsboard规则链:Customer Details节点详解

在物联网&#xff08;IoT&#xff09;平台Thingsboard的规则引擎体系中&#xff0c;Customer Details节点是一个功能强大的组件&#xff0c;它专为处理与客户&#xff08;Customer&#xff09;实体相关的综合信息而设计。这个节点不仅能够读取客户的基本属性&#xff0c;还能提…

【NumPy】全面解析subtract函数:高效数组减法指南

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

GPT-4o:人工智能新纪元的开端

引言 近年来&#xff0c;人工智能领域的发展日新月异&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;各种生成预训练模型不断推陈出新。自OpenAI发布GPT-3以来&#xff0c;生成预训练模型在文本生成、语言理解等任务中展现了强大的能力。近期&a…

网工内推 | 国企信息安全工程师,CISP认证优先

01 浙江省公众信息产业有限公司 &#x1f537;招聘岗位&#xff1a;安全运营工程师 &#x1f537;职责描述&#xff1a; 1. 负责公司内部安全运营平台及其子系统的安全事件管理、事件发现分析、应急响应和系统维护等&#xff1b; 2. 负责风险和漏洞管理&#xff0c;包括漏洞预…

一行命令将已克隆的本地Git仓库推送到内网服务器

一、需求背景 我们公司用gitea搭建了一个git服务器&#xff0c;其中支持win7的最高版本是v1.20.6。 我们公司的电脑在任何时候都不能连接外网&#xff0c;但是希望将一些开源的仓库移植到内网的服务器来。一是有相关代码使用的需求&#xff0c;二是可以建设一个内网能够查阅的…

2019美亚

1.何源是一名 25 岁的客服人员&#xff0c;在一间电讯公司工作。某日&#xff0c;何源在用 iPhone 手机在政府建筑物 中偷拍车牌期间被警员截停&#xff0c;盘问期间警员检查手机相册发现多张车牌图片&#xff0c;何源情绪紧张&#xff0c;趁 警员不被&#xff0c;抢过手机丢入…

模型实战(22)之 C++ - tensorRT部署yolov8-cls 目标分类

C++ - tensorRT部署yolov8-cls 目标分类 在检测应用场景中如果有同等类别不同形态的目标,单纯的目标检测可能达不到实用或者想要的精度,这就需要衔接一步分类python环境下如何直接调用推理模型转换并导出:pt -> onnx ->.engineC++ tensorrt 部署分类模型1.Python环境下…

OrangePi Kunpeng Pro 开发板测评 | AI 边缘计算 大模型部署

0 前言 此次很幸运能够参与 OrangePi Kunpeng Pro 开发板的测评&#xff0c;感谢 CSDN 给予这次机会。 香橙派联合华为发布了基于昇腾的 OrangePi Kunpeng Pro 开发板&#xff0c;具备 8TOPS 的 AI 算力&#xff0c;能覆盖生态开发板者的主流应用场景&#xff0c;具备完善的配…

ai写作助手有哪些,5款强大的ai写作工具为你所用

在科技日新月异的时代&#xff0c;人工智能已经悄然走进我们的生活&#xff0c;为我们带来了诸多便利。其中&#xff0c;AI写作助手作为一种创新的工具&#xff0c;正在改变着我们的写作方式。它们不仅能够提供创意灵感&#xff0c;还能帮助我们提高写作效率&#xff0c;让文字…

【RAG论文】文档树:如何提升长上下文、非连续文档、跨文档主题时的检索效果

RAPTOR Recursive Abstractive Processing for Tree-Organized RetrievalICLR 2024 Stanfordhttps://arxiv.org/pdf/2401.18059 RAPTOR&#xff08;Recursive Abstractive Processing for Tree-Organized Retrieval&#xff09;是一种创建新的检索增强型语言模型&#xff0c;它…

《Intel开发手册卷3》读书笔记3

1、中断和异常的概述 中断和异常是强制性的执行流的转移&#xff0c;从当前正在执行的程序或任务转移到一个特殊的称作句柄的例程或任务。当硬件发出信号时&#xff0c;便产生中断&#xff0c;中断的产生同正在执行的程序是异步的&#xff0c;即中断的产生是随机的。其用于处理…

JVM(四)

在上一篇中&#xff0c;介绍了JVM组件中的运行时数据区域&#xff0c;这一篇主要介绍垃圾回收器 JVM架构图&#xff1a; 1、垃圾回收概述 在第一篇中介绍JVM特点时&#xff0c;有提到过内存管理&#xff0c;即Java语言相对于C&#xff0c;C进行的优化&#xff0c;可以在适当的…

【Postman接口测试】第四节.Postman接口测试项目实战(上)

文章目录 前言一、项目介绍 1.1 项目界面功能介绍 1.2 项目测试接口介绍 1.3 项目测试接口流程二、HTTP协议三、接口测试中接口规范四、项目合同新增业务介绍 4.1 登录接口调试 4.1 登录接口自动关联 4.1 添加课程接口调试 4.1 上传合同…

Leetcode算法题笔记(3)

目录 矩阵101. 生命游戏解法一解法二 栈102. 移掉 K 位数字解法一 103. 去除重复字母解法一 矩阵 101. 生命游戏 根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子…

.NET 直连SAP HANA数据库

前言 上个项目碰到的需求&#xff0c;IT部门要求直连SAP的HANA数据库&#xff0c;以只读的权限读取SAP部门开发的CDS视图&#xff0c;是个有点复杂的工程&#xff0c;需要从成品一直往前追溯到原材料的产地&#xff0c;和交货单、工单、采购订单有相当程度上的关联 IT部门要求…

基于java实现图片中任意封闭区域识别

需求&#xff1a; 在浏览器中给用户呈现一张图片&#xff0c;用户点击图片中的某些标志物&#xff0c;需要系统给出标志物的信息反馈&#xff0c;达到一个交互的作用。 比如下图中&#xff0c;点击某个封闭区域时候&#xff0c;需要告知用户点击的区域名称及图形形状特性等等。…

【因果推断python】2_因果关系初步2

目录 偏差 关键思想 偏差 偏差是使关联不同于因果关系的原因。幸运的是&#xff0c;我们的直觉很容易理解。让我们在课堂示例中回顾一下我们的平板电脑。当面对声称为孩子提供平板电脑的学校会获得更高考试成绩的说法时&#xff0c;我们可以反驳说&#xff0c;即使没有平板电…

【ai】livekit:Agents 3 : pythonsdk和livekit-agent的可编辑模式下的安装

livekit-agent 依赖于livekit、livekit-api、livekit-protocol 其中livekit就是livekkit-rtc: 包含俩sdk 实时互动sdkReal-time SDK for connecting to LiveKit as a participant livekit-api : 服务端sdk https://pypi.org/project/livekit-api/ livekit的python sdk