首页 > 其他分享 >人工智能LLM模型:奖励模型的训练、PPO 强化学习的训练、RLHF

人工智能LLM模型:奖励模型的训练、PPO 强化学习的训练、RLHF

时间:2023-07-17 22:57:10浏览次数:43  
标签:函数 训练 模型 RLHF 奖励 答案 RL

人工智能LLM模型:奖励模型的训练、PPO 强化学习的训练、RLHF

1.奖励模型的训练

1.1大语言模型中奖励模型的概念

在大语言模型完成 SFT 监督微调后,下一阶段是构建一个奖励模型来对问答对作出得分评价。奖励模型源于强化学习中的奖励函数,能对当前的状态刻画一个分数,来说明这个状态产生的价值有多少。在大语言模型微调中的奖励模型是对输入的问题和答案计算出一个分数。输入的答案与问题匹配度越高,则奖励模型输出的分数也越高。

1.2 奖励模型的模型架构与损失函数

1.2.1 模型架构

奖励模型(RM 模型)将 SFT 模型最后一层的 softmax 去掉,即最后一层不用 softmax,改成一个线性层。RM 模型的输入是问题和答案,输出是一个标量即分数。

由于模型太大不够稳定,损失值很难收敛且小模型成本较低,因此,RM 模型采用参数量为 6B 的模型,而不使用 175B 的模型。

1.2.2 损失函数

奖励模型的训练数据是人工对问题的每个答案进行排名,如下图所示:

对于每个问题,给出若干答案,然后工人进行排序,而奖励模型就是利用排序的结果来进行反向传播训练。奖励模型的损失函数采用 Pairwise Ranking Loss,公式如下所示:

$loss(θ)=−(K2​)1​E(x,yw​,yl​) D​[log(σ(rθ​(x,yw​)−rθ​(x,yl​)))]$

其中:
D:人工对答案进行排序的数据集;
x:数据集D中的问题;
K:每个问题对应的答案数量;
yw​yl​:问题x对应的K个答案中的两个,且yw​的排序比yl​高,由于是一对,也称 pairwiserθ​(x,y):需要训练的 RM 模型,对于输入的一对xy得到的标量分数;
θ:RM 模型需要优化的参数。

如何理解 RM 模型的损失函数呢?

RM 模型的目标是使得排序高的答案yw​对应的标量分数要高于排序低的答案yl​对应的标量分数,且越高越好,也就是使得损失函数中的rθ​(x,yw​)−rθ​(x,yl​)这个差值越大越好。将相减后的分数通过 sigmoid 函数,差值变成 - 1 到 1 之间,由于 sigmoid 函数是单调递增的函数,因此σ(rθ​(x,yw​)−rθ​(x,yl​))越大越好。σ(rθ​(x,yw​)−rθ​(x,yl​))约接近 1,表示yw​yl​排序高,属于 1 这个分类,反正属于 - 1 这个分类,所以这里也可以看成是一个二分类问题。再加上 logistic 函数,也就是相当于交叉熵损失函数。对于每个问题都有K个答案,在损失函数前除以CK2​,使得损失函数值不会因为K的变化而变化太多。损失函数的最终目标是最小化loss(θ),与最大化rθ​(x,yw​)−rθ​(x,yl​)相对应。

奖励模型中每个问题对应的答案数量即K值为什么选 9 更合适,而不是选择 4 呢?

  • 进行标注的时候,需要花很多时间去理解问题,但答案之间比较相近,假设 4 个答案进行排序要 30 秒时间,那么 9 个答案排序可能就 40 秒就够了。9 个答案与 4 个答案相比生成的问答对多了 5 倍,从效率上来看非常划算;
  • K=9时,每次计算 loss 都有 36 项rθ​(x,y)需要计算,RM 模型的计算所花时间较多,但可以通过重复利用之前算过的值(也就是只需要计算 9 次即可),能节约很多时间。

奖励模型的损失函数为什么会比较答案的排序,而不是去对每一个答案的具体分数做一个回归?

每个人对问题的答案评分都不一样,无法使用一个统一的数值对每个答案进行打分。如果采用对答案具体得分回归的方式来训练模型,会造成很大的误差。但是,每个人对答案的好坏排序是基本一致的。通过排序的方式避免了人为的误差。

1.3 总结

奖励模型通过与人类专家进行交互,获得对于生成响应质量的反馈信号,从而进一步提升大语言模型的生成能力和自然度。与监督模型不同的是,奖励模型通过打分的形式使得生成的文本更加自然逼真,让大语言模型的生成能力更进一步。

2.PPO 强化学习的训练

2.1 PPO 强化学习概念

大语言模型完成奖励模型的训练后,下一个阶段是训练强化学习模型(RL 模型),也是最后一个阶段。大语言模型微调中训练 RL 模型采用的优化算法是 PPO(Proximal Policy Optimization,近端策略优化)算法,即对设定的目标函数通过随机梯度下降进行优化。近端策略优化是一种深度强化学习算法,用于训练智能体在复杂环境中学习和执行任务。通过智能体的训练,使得其在与环境的交互中能够最大化累积回报,从而达成指定任务目标。这里的智能体在大语言模型中指的就是 RL 模型。

2.2 PPO 强化学习原理

RL 模型的初始模型采用 SFT 微调之后的大语言预训练模型。训练 RL 模型的数据集只需要收集问题集(Prompt 集),不需要对问题进行标注。问题集通过 RL 模型生成答案文本,然后将问题和答案输入上一步训练的 RW 模型进行打分,来评价生成的文本质量,而训练 RL 模型的目标是使得生成的文本要在 RW 模型上获得尽可能高的得分。

将初始语言模型的微调任务建模为强化学习(RL)问题,需要定义策略(policy)、动作空间(action space)和奖励函数(reward function)等基本要素。

策略就是基于该语言模型,接收 prompt 作为输入,然后输出一系列文本(或文本的概率分布);而动作空间就是词表所有 token 在所有输出位置的排列组合;观察空间则是可能的输入 token 序列(即 prompt),为词表所有 token 在所有输入位置的排列组合;而奖励函数则是上一阶段训好的 RM 模型,配合一些策略层面的约束进行的奖励计算。该阶段流程如下图所示:

RL 模型训练的损失函数公式如下:

$objective(ϕ)=E(x,y)∼DπϕRL​​​[rθ​(x,y)−βlog(πϕRL​(y∣x)/πSFT(y∣x))]+γEx∼Dpretrain​​[log(πϕRL​(x))]$

其中:
πSFT:SFT 模型;
πϕRL​:强化学习中,模型叫做 Policy,πϕRL​就是需要调整的模型,即最终模型。初始化是πSFT(x,y)∼DπϕRL​​x是 RL 数据集中的问题,yx通过πϕRL​模型得到的答案;
rθ​(x,y):对问题x和答案y进行打分的 RM 模型;
πϕRL​(y∣x):问题x通过πϕRL​得到答案y的概率,即对于每一个y的预测和它的 softmax 的输出相乘;
πSFT(y∣x):问题x通过πSFT得到答案y的概率;
x∼Dpretrain​x是来自大语言模型预训练阶段的数据;
βγ:调整系数。

RL 模型的优化目标是使得损失函数越大越好,损失函数可以分为三个部分,打分部分、KL 散度部分以及预训练部分。

  • 打分部分:将 RL 模型的问题数据集x,通过πϕRL​模型得到答案y,然后再把这对(x,y)代入 RW 模型进行打分,即损失函数公式中的rθ​(x,y)。该分数越高,代表模型生成的答案越好。
  • KL 散度部分:在每次更新参数后,πϕRL​会发生变化,x通过πϕRL​生成的y也会发生变化,而rθ​(x,y)奖励模型是根据πSFT模型的数据训练而来。如果πϕRL​πSFT差的太多,则会导致rθ​(x,y)的分数估算不准确。因此需要通过 KL 散度来计算,πϕRL​生成的答案分布和πSFT生成的答案分布之间的距离,使得两个模型之间不要差的太远。损失函数公式中的log(πϕRL​(y∣x)/πSFT(y∣x))就是在计算 KL 散度。由于 KL 散度是越小越好,而训练目标是损失函数越大越好,因此在前面需要加上一个负号。
  • 预训练部分:预训练部分对应损失函数中的Ex∼Dpretrain​​[log(πϕRL​(x))]。如果没有该项,那么模型最终可能只对这一个任务能够做好,在别的任务上会发生性能下降。因此,需要将预训练阶段的目标函数加上,使得前面两个部分在新的数据集上做拟合的同时保证原始的数据也不会丢弃。

最终优化后的πϕRL​模型就是大语言模型的最终模型。

2.3 总结

通过强化学习的训练方法,迭代式的更新奖励模型(RW 模型)以及策略模型(RL 模型),让奖励模型对模型输出质量的刻画愈加精确,策略模型的输出则愈能与初始模型拉开差距,使得输出文本变得越来越符合人的认知。这种训练方法也叫做 RLHF。

目前,RLHF 技术对训练大语言模型具有极大的影响力,训练出来的效果好于之前的方法。但是,RLHF 训练出来的大语言模型仍然可能输出有害或事实上不准确的文本,需要不断不断改进。此外,在基于 RLHF 范式训练模型时,人工标注的成本还是非常高昂的,RLHF 性能最终仅能达到标注人员的知识水平。这里的人工标注主要是为 RM 模型标注输出文本的排序结果,而若想要用人工去撰写答案的方式来训练模型,那成本更是不可想象。

3.关键知识点

  1. 大语言模型微调中的奖励模型训练:1.奖励模型输入问答对,输出得分 2.奖励模型的损失函数目的是使得得分较高的答案比得分较低的答案尽可能大,3.奖励模型是判别式模型

  2. 奖励模型是:监督学习、强化学习、判别式模型

  3. 大语言模型训练中的PPO强化学习:1.在大语言模型训练中,强化学习模型架构与SFT监督微调的模型一样,2.RLHF中训练强化学习模型阶段不需要标注问题的答案 3.RLHF中的初始策略就是SFT模型

  4. 关于RLHF方法中RL模型训练的损失函数:1.RL模型的损失函数包含三个部分 2.RL模型的损失函数需要计算策略更新后的RL模型与SFT模型输出的KL散度 3.RL模型的损失函数需要计算大语言模型预训练阶段的损失函数 4.RL模型的损失函数要使得RL模型生成的文本在奖励模型中的得分越高越好

  5. RLHF本质上是通过人类的反馈来优化模型,生成的文本会更加的自然。

更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。

标签:函数,训练,模型,RLHF,奖励,答案,RL
From: https://www.cnblogs.com/ting1/p/17561520.html

相关文章

  • 大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解
    大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍1.大语言模型的预训练1.LLM预训练的基本概念预训练属于迁移学习的范畴。现有的神经网络在进行训练时,一般基于反向传播(BackPropagation,BP)算法,先对网络中的参数进行随机初始......
  • 数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化|附代码数
    原文链接:http://tecdat.cn/?p=24127最近我们被客户要求撰写关于预测鲍鱼年龄的研究报告,包括一些图形和统计输出。鲍鱼是一种贝类,在世界许多地方都被视为美味佳肴养殖者通常会切开贝壳并通过显微镜计算环数来估计鲍鱼的年龄。因此,判断鲍鱼的年龄很困难,主要是因为它们的大小不仅......
  • 思维训练
    思维训练T1 在\([l,r]\)区间中找两个不同的数\(x,y\),使得\(l\le\gcd(x,y)\ler\)\(solution\): 只需要判断\(2\timesl\)在不在这个区间里面就可以,可以证明出这个是最小的一组满足条件的数了。T23533KLO-Bricks 贪心和优先队列可以再洛谷上过去,但是\(ACwing......
  • 在 3ds Max 中对链模型进行摆放姿势处理
    推荐:NSDT场景编辑器助你快速搭建可二次开发的3D应用场景建模和“摆姿势”3D链可能看起来是一项繁琐的工作,但实际上可以通过使用阵列工具并将链中的链接视为骨骼来轻松完成。在本教程中,我将向您展示如何对链条进行建模,并通过几个简单的步骤对其进行装配。这使您可以以有效的方式......
  • 3ds max高级教程:创建带有骨骼动画的机器人模型
    推荐:NSDT场景编辑器助你快速搭建可二次开发的3D应用场景然而,下面我们示例机器人腿的第一个版本不是很现实,因为它会像没有肌肉的骨骼结构一样坍塌。在第二个版本中,我们将添加一些机器人“肌肉”,第三个版本将包括软管。点击部分图片下方的下载链接,下载相应场景。1.一条人的腿当......
  • 【9.0】Django框架之模型层
    【一】前言Django自带的sqlite3数据对日期格式不敏感,处理的时候容易出错【1】测试脚本测试脚本当我们只想要测试Django中的某一个py文件的内容时,我们可以不需要书写前后端交互的形式,而是直接写一个测试脚本即可测试环境的准备在测试文件中书写下面内容这内容其......
  • 代码随想录算法训练营第三十二天| 343. 整数拆分 96.不同的二叉搜索树
     343.整数拆分要求:将一个正数拆分成N个正整数,使得这N个正整数的乘机是最大的思路:DP数组:dp[n]N的时候,它的乘机最大值注意:不是i*dp[n-i]就是最大值,因为如果用dp就证明要开始拆分了,如果我不拆分,就是用的这两个数的话,那么就是单纯的i*(n-i)代码:1//要求:将N拆分成K......
  • 常用语言的线程模型(Java、go、C++、python3)
    背景知识软件是如何驱动硬件的?硬件是需要相关的驱动程序才能执行,而驱动程序是安装在操作系统内核中。如果写了一个程序A,A程序想操作硬件工作,首先需要进行系统调用,由内核去找对应的驱动程序驱使硬件工作。而驱动程序怎么让硬件工作的呢?驱动程序作为硬件和操作系统之间的媒介,可以......
  • 人工智能自然语言处理:N-gram和TF-IDF模型详解
    人工智能自然语言处理:N-gram和TF-IDF模型详解1.N-gram模型N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设......
  • THU训练营预选赛2023
    比赛地址ATag:排列置换遍历排列中每个置换环,找到每个元素需要跳几次才能回到与之相同的元素(最多为环的长度个数)对每个元素所的次数取max点击查看代码//https://tsinghua.contest.codeforces.com/group/sTsHnFxwiH/contest/453495/problem/A#include<iostream>#......