LLM中的RLHF(原理篇)

1. 前言

大模型训练三步走,pre-training、SFT、RLHF。今天来到了第三步,即基于人工反馈的强化学习(Reinforcement learning from human feedback)。对于NLP从业者来说,前两步还是比较熟悉的,无非是模型大点、数据多些,但是整个模型的架构、原理和一些tricks还是比较容易理解的。但是对于RLHF,因为其中涉及到了强化学习,所以对于没有接触过强化学习的,理解起来还是比较困难的。下面我们就从NLPer的视角,理解RLHF的原理。

2 RLHF

2.1 强化学习基础

对于RLHF来说,强化学习是其核心,所以要想理解RLHF,必须对强化学习有一点了解。强化学习中的几个概念

  • 智能体(Agent):它是强化学习中与环境交互、并执行策略的主体,跳棋中的棋子,gpt中的gpt模型本身;

  • 环境(Environment):某一时刻的空间状态,跳棋中整个棋盘、规则等,gpt中的所有上下文以及模型状态;

  • 状态(state):状态空间,当有可选的状态集合,跳棋中的上下左右,gpt中词表;

  • 动作(Action):下一个选择的状态,跳棋中的动作,gpt中预测的下一个token;

  • 奖励(Reward):根据agent的动作得到的反馈,跳棋中赢下的概率,gpt中输出好句子的概率;

  • 累积奖励(Cumulative Reward):智能体在一系列连续决策中获得的所有奖励之和,目标是最大化这个值。

在强化学习过程中,智能体通过尝试不同的动作,观察环境对其行为的奖励,并根据获得的奖励进行学习,从而调整其策略以期望在未来获得更高的累积奖励。通过反复迭代这一过程,智能体能够学会在不同状态下的最优行为策略。类比跳棋就是,通过大量棋局的学习,跳棋会在当前步骤选出最优的下一个动作;GPT也是可以在当前上下文状态下,生成最优的token。

简单介绍完,强化学习的一些概念之后,我们进入RLHF中的每个细节,首先Agent没什么疑问就是LLM,状态当前的context(prompt+前面生成的token),动作也比较好理解就是预测下一个Token,那么如何得到奖励那,以及优化策略和算法是什么,下面主要看这两个问题。

2.2 RM

RLHF的Reward是通过一个Reward model模型生成,Reward model最好和agent的model能力相似,能对agent的结果进行打分。

模型:奖励模型是对LLM的输出做判断,奖励模型决定了LLM的上限,所以理论上,奖励模型越大越好。但是模型太大可能面临资源消耗过大,训练不稳定等(在instruct-gpt 论文中, 作者提到175B的模型训练不稳定因此只使用了6B的模型作为RM, 这里应该是作者当时把RM作为critic 起始点, 使得PPO需要同时训练actor & critic 两个大模型, 从而很不稳定)。另外,建立模型的主要任务是做判别式排序,任务难度相对较小,所以通常比被评估的语言大模型小一些(deepspeed的示例中,语言大模型66B,奖励模型只有350M)。所以,Reward model一般也是一个参数量较小的transformer模型(instructGPT的Reward_model:GPT-3-6B,deepspeed中的OPT-13B的Reward_model:OPT-350M)。

数据:数据要求格式是prompt,LLM生成K个(K是4-9,这里可以调节温度系数等输出不同答案)答案,人工对LLM的答案进行排序。这里的prompt一般来自问答数据集,比如Anthropic的Prompt,GPT的数据来自于OpenAI自家的API用户数据。没有直接对答案进行打分的原因是OpenAI发现由于标注人员的认知和价值观的差异,直接标得分,会有很多脏数据,改成排序会好很多。

虽然数据是排序的,但是,这些不同的排序结果会通过某种归一化的方式变成标量信号(即point-wise)丢给模型训练。

损失函数:上面说了数据的格式,模型需要做的就是对输入的prompt和一好一坏的两个答案进行分类(可以理解成二分类),那么直观的一个损失就是用交叉熵损失(cross entropy loss)。

但是作者发现这么做很容易过拟合;也不高效,因为每比较一次都要重新过一下reward model。

因此instractGPT作者的做法是,在一个batch里面,把每个Prompt对应的所有的模型输出,都过一遍Reward model,并把所有两两组合都比较一遍。比如一个Prompt有K个模型输出,那么模型则只需要处理K个样本就可以一气儿做 次比较。loss的设计如下:

Reward Model的初始化:6B的GPT-3模型在多个公开数据((ARC, BoolQ, CoQA, DROP, MultiNLI, OpenBookQA, QuAC, RACE, and Winogrande)上fintune。不过Paper中提到其实从预训练模型或者SFT模型开始训练结果也差不多。

2.2 PPO算法

强化学习的优化算法分三大类,这里主要说一下基于基于策略的PPO算法(即ChatGPT中用到的算法)。PPO算法是基于Actor-Critic算法做的,Actor-Critic算法是进阶版的Policy Gradient算法。

Policy Gradient(PG)算法

2.1中提到,agent会与环境交互作出动作,和环境交互后是根据什么策略做动作那。PG算法的核心是用“Reward”作为权重,最大化策略网络所做出的动作的概率。

虽然在强化学习算法中对每一步都有一个即时的“reward”,但是每一步对后面的可能状态都是有影响的。所以会将未来的奖励累计到当前的奖励上,累计需要乘以一个小于1的做折损。

这里需要注意:

Actor-Critic (AC)算法

关于优势函数——GAE

PPO

AC算法存在稳定性问题,特别是深度模型。为了优化这一点PPO算法的做法包括两种,一种是:用拉格朗日乘数法直接将 KL 散度的限制放进了目标函数中,这就变成了一个无约束的优化问题,在迭代的过程中不断更新 KL 散度前的系数:

另一种做法比较简单直接,在目标函数中进行限制,以保证新的参数和旧的参数的差距不会太大:

以上就是PPO算法的发展和简单的原理介绍。

2.3 RLHF的PPO

在上面提到的PPO算法中我们需要三个模型网络RM、actor_model(SFT后的LLM)、critic_model。

上面提到的PPO算法在LLM还存在一个问题,就是LLM可能会被训练变“废”,LLM会生成奇怪的文本来骗RM得到好的奖励,为了解决这么问题,引入了一个网络来控制一下actor_model让它更新不要太偏离原本的SFT后的LLM,所以通过KL散度(作用是控制两个分布之间的差异)。所以正式的奖励如下:

转化为 loss 就是:

至此RLHF中的四个网络就都出现了,分别是:

Actor model:SFT后的LLM,需要训练的LLM,参数可变;

Ref model:SFT后的LLM,用于限制actor model的KL散度,参数冻结;

RM model:奖励模型,用于强化学习的奖励提供,参数冻结;

Critic model:用于期望奖励生成,参数可变;

RLHF中有四个模型,这就是为什么它需要显存大了,四个模型中Actor model和Ref model初始化一致,RM model和Critic model初始化一致。

把这四个网络,结合reward的构造,带入到上面提到的PPO算法中,整个过程就如下:

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

<think>好的,用户让我介绍一下LLM Reranker。首先,我需要明确什么是LLM Reranker。根据之前的知识,Reranker通常是在信息检索或搜索系统中用于对初步检索结果进行重新排序的组件,以提高结果的相关性。而LLM指的是大语言模型,如GPT、BERT等。所以LLM Reranker应该是利用大语言模型来优化搜索结果排序的技术。 接下来,我需要验证这个理解是否正确。可能需要查阅相关文献或资料,确认LLM Reranker的具体应用场景和工作原理。例如,传统检索系统可能先用BM25或者向量检索得到候选文档,然后用Reranker进一步精排。而使用LLM作为Reranker,可能通过计算查询和文档的相关性分数,或者生成一些特征来进行排序。 然后,我需要考虑用户可能的背景。他们可能对信息检索有一定了解,但不熟悉最新的LLM应用。需要解释清楚LLM Reranker的优势,比如为什么比传统方法好,具体如何实现,以及实际应用中的效果。 还需要注意用户的问题结构,是否希望了解技术细节、应用案例,还是比较不同Reranker方法的差异。根据用户的问题,可能更倾向于概述性的介绍,包括定义、工作原理、优势、应用场景等。 另外,要确保回答符合系统级指令,比如数学公式的正确使用。例如,在解释相关性评分时,可能需要用到公式,如$$P(relevant|q,d)$$,需要用$$包裹并单独成段。同时,行内公式如$s(q,d)$需要正确格式。 还需要检查是否有混淆概念的地方,比如LLM作为Reranker和传统的神经网络排序模型(如BERT-based Cross-Encoder)的区别。需要指出LLM的参数量更大,生成能力更强,可能通过指令微调或zero-shot方式应用。 最后,组织回答结构,分点说明,确保逻辑清晰,用户容易理解。可能需要包括定义、工作原理、优势、应用场景、挑战等部分,每个部分简明扼要。</think>好的!我将为您介绍LLM Reranker的相关知识,并尽量分步骤解释。 --- ### 1. **什么是LLM Reranker?** **LLM Reranker**(大语言模型重排序器)是一种利用**大语言模型**(Large Language Model, LLM)对初步检索结果进行重新排序的技术。它通常应用于信息检索系统(如搜索引擎、问答系统)中,通过LLM对候选文档或答案的相关性进行精细化评分,从而优化最终排序结果。 --- ### 2. **为什么需要Reranker?** 在传统检索流程中,系统通常分两步: 1. **召回(Retrieval)**:快速从海量数据中筛选出少量候选(如使用BM25、向量检索)。 2. **排序(Ranking)**:对候选结果进行精细化排序。 传统排序模型(如TF-IDF、简单神经网络)可能无法捕捉复杂语义关联,而**LLM Reranker**通过其强大的语义理解能力,显著提升排序准确性。 --- ### 3. **工作原理** LLM Reranker的核心是**利用LLM计算查询(Query)与候选文本(Document)的相关性分数**,典型流程如下: 1. **输入格式**:将查询$q$和文档$d$拼接为特定模板,例如: $$ \text{Query: } q \quad \text{Document: } d \quad \text{Relevant: [MASK]} $$ 2. **相关性评分**:通过LLM预测相关概率(如填充`[MASK]`为“Yes”/“No”的概率)。 3. **重排序**:按分数对候选文档降序排列,输出最终结果。 --- ### 4. **与传统方法的对比** | 方法 | 优点 | 局限性 | |---------------------|-----------------------------|--------------------------| | **传统Reranker** | 计算速度快,资源消耗低 | 语义理解能力有限 | | **LLM Reranker** | 语义理解强,支持复杂上下文推理 | 计算成本高,需优化推理效率 | --- ### 5. **关键技术点** - **Prompt设计**:模板需引导LLM关注相关性,例如: > *“判断以下文档是否与问题相关:问题:{q} 文档:{d} 相关与否?”* - **高效推理**:使用模型压缩(如量化)、批处理(Batch Inference)降低延迟。 - **微调策略**:对特定领域数据微调LLM,提升领域相关性判断能力。 --- ### 6. **应用场景** 1. **搜索引擎**:提升长尾查询结果的准确性。 2. **问答系统**:从多候选答案中筛选最优解。 3. **推荐系统**:基于用户历史行为重排序推荐内容。 --- ### 7. **挑战与解决方案** - **计算开销**:通过蒸馏小模型、缓存机制缓解。 - **延迟问题**:使用异步处理或两阶段(粗排+精排)架构。 - **模型偏见**:引入人工反馈强化学习(RLHF)进行纠偏。 --- ### 8. **示例代码逻辑** ```python # 伪代码:基于LLM的Reranker def llm_reranker(query, candidates, llm_model): scores = [] for doc in candidates: prompt = f"Query: {query}\nDocument: {doc}\nRelevant:" score = llm_model.predict(prompt, target_token="Yes") scores.append(score) reranked = sorted(zip(candidates, scores), key=lambda x: -x[1]) return reranked ``` --- ### 总结 LLM Reranker通过结合大语言模型的深度语义理解能力,显著提升了检索系统的效果,尤其适合对相关性要求高的场景。未来随着LLM轻量化技术的发展,其实用性将进一步提高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值