大模型(LLMs)强化学习面试
来源:AiGC面试宝典 作者:宁静致远 日期:2024年01月27日
1 简单介绍强化学习?
强化学习(Reinforcement Learning,RL):一种机器学习的方法,通过从外部获得激励来校正学习方向,从而获得一种自适应的学习能力。
📝通俗解释:强化学习就像训练一只小狗。当小狗做对了事情(比如坐下),我们就给它奖励(零食);做错了就批评它。通过不断的奖励和惩罚,小狗逐渐学会什么行为是对的,什么行为是错的。强化学习算法就是这样通过"奖励信号"来调整模型行为,使其越来越聪明。
2 简单介绍一下 RLHF?
RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习):构建人类反馈数据集,训练一个奖励模型,模仿人类偏好对结果打分,这是 GPT-3 后时代大语言模型越来越像人类对话的核心技术。
📝通俗解释:RLHF 就像是一个老师教学生写作文。老师不是直接告诉学生每个字怎么写,而是给学生写的作文打分(好/不好),学生根据分数调整自己的写作方式。RLHF 就是用这种方式,让 AI 学会生成人类更喜欢的内容。
3. 奖励模型需要和基础模型一致吗?
不同实现方式似乎限制不同。(待实践确认)Colossal-AI 的 COATI 中需要模型有相同的 tokenizer,所以选模型只能从同系列中找。在 PPO 算法实现方式上据说 TRLX 是最符合论文的。
📝通俗解释:奖励模型和基础模型需要使用相同的"语言"才能沟通。如果两个模型用的分词器(tokenizer)不同,就像两个人说不同的语言,无法有效地传递信息。所以通常会选择同系列或使用相同分词器的模型。
4. RLHF 在实践过程中存在哪些不足?
- 不足点 1:人工产生的偏好数据集成本较高,很难量产;
- 不足点 2:三个阶段的训练(SFT → RM → PPO)过程较长,更新迭代较慢;
- 不足点 3:PPO 的训练过程同时存在 4 个模型(2 训练,2 推理),对计算资源的要求较高。
📝通俗解释:RLHF 的主要问题可以概括为"三个贵":1) 人工标注数据贵;2) 训练流程长、时间贵;3) 显存和算力要求高,硬件贵。这就是为什么研究者们一直在寻找更高效的替代方案。
5. 如何解决人工产生的偏好数据集成本较高、很难量产问题?
- 解决方法:AI 专家替代派
- 代表方法:
1. RLAIF
该方法的核心在于通过 AI 模型监督其他 AI 模型,即在 SFT 阶段,从初始模型中采样,然后生成自我批评和修正,然后根据修正后的反应微调原始模型。在 RL 阶段,从微调模型中采样,使用一个模型来评估生成的样本,并从这个 AI 偏好数据集训练一个偏好模型。然后使用偏好模型作为奖励信号对 RL 进行训练,即 RL from AI Feedback(RLAIF)。
📝通俗解释:RLAIF 就像让 AI 自己当老师教自己。不再需要人类来标注数据,而是让一个 AI 来评估另一个 AI 生成的答案。这样可以大大降低成本,实现数据"量产"。
2. RRHF
RRHF(Rank Response from Human Feedback)不需要强化学习,可以利用不同语言模型生成的回复,包括 ChatGPT、GPT-4 或当前的训练模型。RRHF 通过对回复进行评分,并通过排名损失来使回复与人类偏好对齐。RRHF 训练好的模型可以同时作为生成语言模型和奖励模型使用。
📝通俗解释:RRHF 的思路更简单直接——不需要复杂的强化学习过程,只需要让模型学会对不同回复进行排序。这样训练出来的模型既会"说话"(生成),又会"打分"(评价),一举两得。
6. 如何解决三个阶段的训练(SFT → RM → PPO)过程较长、更新迭代较慢问题?
- 解决方法:微调数据优化派
- 方法介绍:该类方法的核心在于仅仅通过优质数据集的获取和产生,以训练得到一个效果较好的 SFT 模型,而无需进行 RM 和 PPO 的训练。
- 代表方法:
1. LIMA
LIMA(Less Is More for Alignment)即浅层对齐假说,即一个模型的知识和能力几乎完全是在预训练中学习的,而对齐则是教会它与用户交互时如何选择子分布。如果假说正确,对齐主要关于学习方式,那么该假说的一个推论是,人们可以用相当少的样本充分调整预训练的语言模型。因此,该工作假设,对齐可以是一个简单的过程,模型学习与用户互动的风格或格式,以揭示在预训练中已经获得的知识和能力。
📝通俗解释:LIMA 的核心思想是"以少胜多"。就像一个大学生已经学了很多专业知识,只需要稍微培训一下沟通技巧就能上岗。预训练模型已经学到了足够的知识,只需要少量高质量数据调整对话风格即可。
2. MAYBE ONLY 0.5% DATA IS NEEDED
本文主要从数据角度来探讨如何降低 LLM 训练阶段的成本,提高数据效率。为了实现该目的,作者通过从现有数据中识别出最有价值的核心样本来帮助模型获取下游任务的知识,并仅用少量数据来实现可比甚至更好的性能。
📝通俗解释:这篇文章的结论是:训练数据不在于多,而在于精。就像学习数学不需要做完所有题目,找出最有代表性的经典题目就能掌握核心知识点。
7. 如何解决 PPO 的训练过程同时存在 4 个模型(2 训练,2 推理),对计算资源的要求较高问题?
- 解决方法:训练过程改造派
- 方法介绍:该类方法通常通过改造模型的训练方式(如只保留 SFT 和 RM),以提高训练效率并减少训练成本。
- 代表方法:
1. RAFT
RAFT(Reward rAnked FineTuning),它基于通过奖励和监督微调对样本进行排序的组合。
2. DPO
DPO(Direct Preference Optimization)提出了一种使用二元交叉熵目标来精确优化 LLM 的方法,以替代基于 RL HF 的优化目标,从而大大简化偏好学习 pipeline。
📝通俗解释:DPO 的核心思想是"既然奖励模型已经学会了评价好坏,为什么不直接用它来指导训练,反而要绕一圈用 PPO 呢?"这就相当于:不需要复杂的考试流程,直接用老师的评语来改进学生的答题方式。
8. 强化学习跟大语言模型的本质联系是什么?
9. 大语言模型与强化学习的本质联系?
📝这两个问题本质相同,合并回答:
大语言模型都是生成式任务,也就是给定一段话的前提下,预测这段话的下一个字是什么;而如何进行下一个字预测,通常是通过词表中各个词的概率来反映。那么我们将大语言模型代入强化学习视角:
- "给定的一段话" = 我们当前的状态(State)
- "预测下一个词" = 我们将要进行的行动(Action)
- 大语言模型 = 机器人本身(Agent)
📝通俗解释:可以把大语言模型想象成一个"接话痨"。比如别人说"今天天气真",模型要根据这个"状态"预测下一个最可能的"动作"——可能是"好"、"不错"、"晴朗"等。选择哪个词取决于哪个概率最高。这和强化学习中选择动作的逻辑是一模一样的!
10. GPT 到底是基于概率的还是基于价值的?
通过第一个问题我们可以知道,大语言模型,例如 GPT 等,他们的采样过程其实和基于概率的决策过程非常一致;即在给定一个句子的情况下(状态),选择其后面紧接哪一个词(行为)是最优的。
| Reinforcement Learning | GPT | |
|---|---|---|
| Observation(观察) | 机器人当前所在的位置(状态) | 当前给定的句子 |
| Action(行动) | 往哪里移动 | 续写哪一个字 |
| Reward(奖励) | 移动后的奖励(遇到宝藏还是陷阱?) | 续写后的奖励(句子是否更通顺?) |
📝通俗解释:GPT 是"基于概率"的。想象你在玩一个游戏:每个动作都有一定概率被选中,好动作概率高,差动作概率低,但不是绝对选中。GPT 正是这样:给定前文,每个词都有一定概率被选中,概率高的词更容易被选中,但偶尔也会选概率低的(这叫"探索")。
11. 强化学习究竟是如何与大语言模型做结合的?
在瓦力(机器人)选择路径的过程中会产生 N 个行为,但实际每次完整的路径只有一个得分;那么如果把总得分和每次的路径(行为)是如何对应的呢?这里引出强化学习中的概念——折扣奖励(discount reward)。这里存在一些猜测,可能是越靠近最末端的行为对得分的影响越大;也可能是越靠前的行为对得分的影响越大,于是我们根据实际情况与猜测为每一次行为就乘以一次折扣因子 $\gamma$。
同样,代入大语言模型视角,在生成一个完整句子的过程中,也会依次选择 N 个词;但我们只会对最后生成的完整句子进行打分;这里我们在生成每个词时默认生成的每个词都同等重要,因此大语言模型的折扣因子取 1.0。
📝通俗解释:这就像评价一篇作文。传统强化学习是"每走一步都打分",但大语言模型是"只对整篇文章打分"。那怎么给每个词打分呢?方法是把总分按照某种规则分配给每个词。折扣因子可以理解为"越早写的词对最终结果影响越小"或"越大",在大语言模型中通常假设每个词同等重要,所以折扣因子为1.0。
12. 强化学习与大模型的结合在公式中是如何体现?
通过加入概率差异(KL Penalty)以稳定 RL 训练。
根据 OpenAI 的 [Learning to summarize from human feedback] 的论文,除了最终生成句子的得分基础外,在每生成一个词/字的时候,需要计算 RL 模型和 SFT 模型在生成当前词/字的概率差异,以此来当作生成当前词/字的当前步奖励。
$$R(x, y) = r_\theta(x, y) - \beta \log\left[\frac{\pi_\phi^{\text{RL}}(y|x)}{\pi^{\text{SFT}}(y|x)}\right]$$
其中:
- $r_\theta(x, y)$ 是奖励模型给出的分数
- $\beta$ 是 KL 散度的权重系数
- $\pi_\phi^{\text{RL}}(y|x)$ 是 RL 模型的生成概率
- $\pi^{\text{SFT}}(y|x)$ 是 SFT 模型的生成概率
📝通俗解释:这个公式的核心是"既要又要":$r_\theta$ 让模型生成人类喜欢的回答,而 KL 项让模型不要偏离 SFT 太远。这就像父母教育孩子:既要听老师的话(奖励导向),又不能完全变个人(保持原来的优点)。
13. 强化学习与大模型的结合的好处?
- 避免模型重复输出相同的字(解决"幻觉"和重复问题)
- 限制 RL 不要探索得离一开始的模型太远
SFT 的作用是控制生成的句子通顺度,RL Model 的作用是控制生成句子的偏好,概率差异相当于在句子通顺度和人类偏好中取了一个平衡。但是理论上来说,如果 RM 足够强大,其实可以完全放开概率限制并让其自由探索。
📝通俗解释:强化学习就像给模型装了一个"导航仪":一方面告诉它什么是好的(奖励模型),另一方面限制它不要乱跑太远(KL散度)。这样既能让模型学会新技能,又不会让它变成一个"脱缰的野马"。
14. reward 模型训练步骤中,为什么这一步骤在标注数据过程中不让人直接打分,而是去标排列序列呢?
受不同标注员主观因素影响,比起绝对的分数,相对的顺序更利于模型预测。
这里举个例子,假设我们想让模型说出对榴莲的评价,模型生成了 ABCD 四个句子,而我们想要训练一个对榴莲都生成正面评价的 reward 模型:
A: 榴莲具有浓郁香味和奶油般的口感。
B: 成熟的榴莲可以有甜美的味道,对一些人而言,这是其吸引之处。
C: 榴莲的强烈气味是一些人无法忍受的。
D: 一些人可能不喜欢榴莲的奶油质地和特殊口感。
如果现在有两个标注员打分,结果可能如下:
| 生成句子 | 标注员1 | 标注员2 |
|---|---|---|
| A | 5 | 4.5 |
| B | 4.5 | 4 |
| C | 1 | 0.5 |
| D | 1.5 | 1 |
如果标注员只对生成好坏进行排序,得到的结果则如下:
| 生成句子对 | 标注员1 | 标注员2 |
|---|---|---|
| A B C D | A>B>D>C | A>B>D>C |
显而易见,对于打分的情况,模型是很容易疑惑的,到底应该是几分;而排序基本能得到统一的结果,更利于模型学习。
📝通俗解释:打分就像让不同人给同一个人的颜值打分,有人打90分,有人打80分,标准不一。但排序就简单多了——大家都同意"刘亦菲比凤姐好看"。排序避免了绝对分数的争议,让模型更容易学到统一的偏好。
15. reward 模型的 loss 是怎么计算的?
reward 模型训练步骤中,我们需要标注员对生成的句子进行排序,那么排序的结果怎么计算 loss 呢?此处引出 Rank Loss。
假定根据排序 A>B>D>C,我们需要训练其对应的打分模型,模型生成的分要满足 r(A) > r(B) > r(D) > r(C)。
损失函数公式:
$$\text{loss}(r_\theta) = -E_{(x, y_0, y_1, i) \sim D}[\log(\sigma(r_\theta(x, y_i) - r_\theta(x, y_{1-i})))]$$
其中,$y_i$ 代表排序排在 $y_{1-i}$ 前面的所有句子。
我们代入上面的例子 A>B>D>C:
loss = r(A)-r(B) + r(A)-r(C) + r(A)-r(D) + r(B)-r(D) + r(D)-r(C)
loss = -loss为了更好地归一化差值,每两项差值都需要过一个 sigmoid 函数,将值拉到 0-1 之间。
下面我们来解释一下 loss 前面的负号是什么含义:这个 loss 设计的目的是期望模型能够最大化好句子得分和坏句子得分的差值。而梯度下降做的是最小化操作,所以我们对 loss 取负数,就可以实现最大化差值的效果了。
📝通俗解释:Rank Loss 的逻辑很简单——"好的要比差的多得分"。比如 A 是最好的,B 是第二好的,那就让 r(A) - r(B) 越大越好。负号是因为我们用梯度下降来"最小化损失",所以要把"最大化分差"的目标反过来写。
16. 直接用训练 reward model 的数据精调模型,而不用强化学习,是否可行?为什么?
16.1 reward模型、强化学习、SFT分别的作用?
- SFT(有监督微调):基于有监督知识微调大语言模型,用于生成句子
- reward 模型:通过对不同偏好进行排序标注,再用 reward 模型来学习偏好强化
- 强化学习:作为探索大语言模型生成句子的学习方式,用于控制大语言模型生成的偏好
16.2 reward 模型、强化学习、SFT 之间如何配合?
RLHF 的完整流程:
- SFT 阶段:预训练模型 → 有监督微调(SFT)
- RM 阶段:用人类排序数据训练奖励模型(Reward Model)
- PPO 阶段:使用奖励模型作为信号,通过强化学习(PPO)进一步优化 SFT 模型
📝通俗解释:三者的关系可以这样理解:
- SFT 就像"学说话"——教会模型说什么
- reward 模型就像"评分标准"——告诉模型什么是好的
- 强化学习就像"实战练习"——让模型在反馈中不断改进
直接用 reward 数据精调就像"背答案",可以应付考试但不会真正理解;强化学习则让模型真正"学会"如何给出好答案。
17. 假如 reward model 不太准,怎么办?
这里提供一种思路:
- 减少 reward 的影响:参照第12个问题中的公式,我们可以把 KL 散度的权重(调和率)$\beta$ 调低一些:
$$R(x, y) = r_\theta(x, y) - \beta \log\left[\frac{\pi_\phi^{\text{RL}}(y|x)}{\pi^{\text{SFT}}(y|x)}\right]$$
当 $\beta$ 较小时,即使 reward 模型不太准,其影响也会被削弱,模型更依赖 SFT 的原有能力。
📝通俗解释:如果奖励模型不靠谱,就像请了一个不专业的老师。与其完全听老师的,不如让"家长"(SFT模型)多管一点。降低 $\beta$ 就是减少对"不靠谱老师"的依赖,让模型保持更多的"自我判断"。
18. chatGPT 强化学习训练阶段还有什么改进的空间和思路吗?
解决方案可以从四个方向考虑:
数据:数据增强工作,比如数据合成、数据扩增、self-train、模拟数据、领域迁移来扩充人工产生的数据集,从而减少对人工产生数据的需求。
采样优化:通过主动学习(通过不确定性采样、多样性采样等算法选择那些对模型训练最有帮助的样本进行标注)等算法选择最具价值的样本重新标注再加入训练。
模型优化:通过在线学习(利用实际用户交互数据改进模型)、在 LLM 微调过程中加入强化学习损失等方法优化模型。
简化人工:建立可通用的人工规则进行自训练或直接用模型的评分;人工规则通过众包或者协作机制提高效率,并通过科学的审核机制规避不合理标注等。
📝通俗解释:这四个方向可以理解为:
- 数据:让 AI 自己生成更多训练数据
- 采样:只让人类标注最有价值的样本(省力)
- 模型:让模型边用边学(在线学习)
- 简化人工:用规则代替人工,或者用 AI 代替人工
19. 现阶段 LLM 的对齐阶段分为 SFT 和 RLHF 阶段,我们可以跳过 SFT 阶段直接进行 RLHF 么?
现阶段来看是不太可能的。
SFT 可以类比 RL 中的模仿学习,RLHF 就是在此基础上纯跟环境交互的 RL。那么和 LLM 对齐阶段相似的过程有两个,第一个是 AlphaGo,第二个是自动驾驶。
它们两个现实中的人工智能技术,开始的时候都是先做模仿学习,第二步进行跟环境交互的强化学习。它们都有一个共同特点:环境复杂,模型如果纯进行 RL 的话,搜索空间过于庞大,消耗资源较多。
尽管 AlphaGo 后续有 Zero-AlphaGo 算法,但是建立的基础是 reward model 是客观的,且不计成本的进行空间搜索。在 LLM 环境下,由于不存在天然的 reward model,所以建立 reward model 的人工成本较大,所以不适合不计成本的空间搜索。
所以利用 SFT 首先做模仿学习缩小搜索空间,再利用 RLHF 进行进一步对齐是必要的。
📝通俗解释:这就和学车一样:
- SFT 就像在驾校学基本操作(模仿教练)
- RLHF 就像实际上路练习(和真实环境交互)
如果你不会基本操作就直接上路,不仅危险,而且需要尝试无数种可能(搜索空间巨大)。但如果你先在驾校学会基本功,再上路练习就高效多了。LLM 的训练也是同样的道理。
致谢
感谢 AiGC 面试宝典提供的面试资料