大语言模型---强化学习

news2024/11/26 2:33:29

本文章参考,原文链接:https://blog.csdn.net/qq_35812205/article/details/133563158

SFT使用交叉熵损失函数,目标是调整参数使模型输出与标准答案一致,不能从整体把控output质量

RLHF(分为奖励模型训练、近端策略优化两个步骤)则是将output作为一个整体考虑,优化目标是使模型生成高质量回复

引发思考:

        使用排序数据集和DPO(Direct Preference Learning)直接偏好学习或其他替代方法(如RAILF、ReST等)来训练模型。这可以帮助模型生成更高质量的回复,而不是直接使用RLHF。

        为了减少幻觉(如拒绝回答),可以构造排序数据集(如good response为拒绝话术,bad response是没拒绝的胡乱回答)进行RLHF。这种方法可以帮助模型学习在拒绝回答时如何更好地处理情况。

奖励模型训练:奖励模型通常也采用基于 Transformer 架构的预训练语言模型。在奖励模型中,移除最后一个
非嵌入层,并在最终的 Transformer 层上叠加了一个额外的线性层。无论输入的是何种文本,奖励
模型都能为文本序列中的最后一个标记分配一个标量奖励值,样本质量越高,奖励值越大。

在RLHF中(比如MOSS-RLHF)是使用奖励模型来初始化评论家模型(critic model)和奖励模型(reward model),评论家模型也使用奖励模型初始化,便于在早期提供较准确的状态值估计;但是注意PPO会对策略模型、评论家模型训练并更新;奖励模型、参考模型不参与训练。

异策略:固定一个演员和环境交互(不需要更新),将交互得到的轨迹交给另一个负责学习的演员训练。PPO就是策略梯度的异策略版本。通过重要性采样(这里使用KL散度)进行策略梯度的更新。PPO解决了传统策略梯度方法的缺点:高方差、低数据效率、易发散等问题。

PPO-clip算法通过引入裁剪机制来限制策略更新的幅度,使得策略更新更加稳定


         

强化学习基础知识

1、强化学习框架的六要素

强化学习(RL)是研究agent智能体和环境交互的问题,目标是使agent在复杂而不确定的环境中最大化奖励值。

        智能体(Agent):强化学习的主体也就是作出决定的“大脑”;
        环境(Environment):智能体所在的环境,智能体交互的对象;
        行动(Action):由智能体做出的行动;
        奖励(Reward):智能体作出行动后,该行动带来的奖励;
        状态(State):智能体自身当前所处的状态;
        目标(Objective):指智能体希望达成的目标。

串起6要素:一个在不断变化的【环境】中的【智能体】,为了达成某个【目标】,需要不断【行动】,行动给予反馈即【奖励】,智能体对这些奖励进行学习,改变自己所处的【状态】,再进行下一步行动,即持续这个【行动-奖励-更新状态】的过程,直到达到目标。

策略与价值:

  • agent在尝试各种行为时,就是在学习一个策略policy(一套指导agent在特定状态下行动的规则)
  • agent会估计价值value,即预测未来采取某个行为后所能带来的奖励

任何一个有智力的个体,它的学习过程都遵循强化学习所描述的原理。比如说,婴儿学走路就是通过与环境交互,不断从失败中学习,来改进自己的下一步的动作才最终成功的。再比如说,在机器人领域,一个智能机器人控制机械臂来完成一个指定的任务,或者协调全身的动作来学习跑步,本质上都符合强化学习的过程。

奖励模型(Reward Model)和评论模型(Critic Model)

奖励模型(Reward Model):奖励模型是强化学习中一个基本元素,它定义了智能体执行特定动作后将得到的奖励。换句话说,奖励模型为智能体在其环境中执行的每个动作提供奖励(正面)或惩罚(负面)。这个模型帮助智能体理解哪些动作是有利的,哪些不是,因此,智能体尝试通过最大化获得的总奖励来找到最优策略。

评论模型(Critic Model):评论模型是一种基于值迭代的方法,它在每个状态或动作上评估(或者"评论")期望的未来奖励。评论者用来估计一个动作或状态的长期价值,通常在演员-评论者模型(Actor-Critic Models)中使用,演员选择动作,评论者评估动作。

两者的主要区别在于,奖励模型直接反映了每个动作的即时反馈,而评论模型是对未来奖励的一个预测或估计,关注的是长期价值,通常基于数学期望来进行评估。

RLHF对齐

1. 训练奖励模型和RL

用奖励模型训练SFT模型,生成模型使用奖励或惩罚来更新策略,以便生成更高质量、符合人类偏好的文本。

奖励模型RL强化学习
作用(1)学习人类兴趣偏好,训练奖励模型。由于需要学习到偏好答案,训练语料中含有response_rejected不符合问题的答案。 (2)奖励模型能够在RL强化学习阶段对多个答案进行打分排序。根据奖励模型,训练之前的sft微调模型,RL强化学习阶段可以复用sft的数据集
训练语料{‘question’: ‘土源性线虫感染的多发地区是哪里?’, ‘response_chosen’: ‘苏北地区;贵州省剑河县;西南贫困地区;桂东;江西省鄱阳湖区;江西省’, ‘response_rejected’: ‘在热带和亚热带地区的农村。’},根据奖励模型,训练之前的sft微调模型,RL强化学习阶段可以复用sft的数据集

RLHF(reinforcement learning from human feedback)

分为三个步骤:

  • step1 我做你看:有监督学习,从训练集中挑出一批prompt,人工对prompt写答案。其实就是构造sft数据集进行微调。
  • step2 你做我看:奖励模型训练,这次不人工写答案了,而是让GPT或其他大模型给出几个候选答案,人工对其质量排序,Reward model学习一个打分器;这个让机器学习人类偏好的过程就是【对齐】,但可能会导致胡说八道,可以通过KL Divergence等方法解决。

  • step3 自学成才:PPO训练,利用第二阶段的奖励模型RM计算奖励分数,同时使用PPO(近端策略优化)更新第一步训练得到的sft模型,最大优化该目标函数:

常见的公开偏好数据集

源自《Llama 2: Open Foundation and Fine-Tuned Chat Models》Table 6:

如:https://huggingface.co/datasets/lvwerra/stack-exchange-paired

PPO近端策略优化

PPO思想:保证策略改进同时,通过一些约束来控制策略更新的幅度;在每次迭代中,通过采样多个轨迹数据来更新策略:

  • 使用当前策略对环境交互,收集多个轨迹数据
  • 利用第一步的轨迹数据计算当前策略和旧策略之间的KL散度,通过控制KL散度大小来限制策略更新的幅度
  • 使用优化器对策略进行更新,使其更加接近当前的样本策略

        

近端策略优化PPO涉及到四个模型:

(1)策略模型(Policy Model),生成模型回复。
(2)奖励模型(Reward Model),输出奖励分数来评估回复质量的好坏。
(3)评论模型(Critic Model/value model),来预测回复的好坏,可以在训练过程中实时调整模型,选择对未来累积收益最大的行为。
(4)参考模型(Reference Model)提供了一个 SFT 模型的备份,帮助模型不会出现过于极端的变化。

近端策略优化PPO的实施流程如下:   

环境采样:策略模型基于给定输入生成一系列的回复,奖励模型则对这些回复进行打分获得奖励。


优势估计:利用评论模型预测生成回复的未来累积奖励,并借助广义优势估计(Generalized Advantage Estimation,GAE)算法来估计优势函数,能够有助于更准确地评估每次行动的好处。


GAE:基于优势函数加权估计的GAE可以减少策略梯度估计方差

优化调整:使用优势函数来优化和调整策略模型,同时利用参考模型确保更新的策略不会有太大的变化,从而维持模型的稳定性。

相关强化学习概念对应:

  • Policy:现有LLM接受输入,进行输出的过程。
  • State:当前生成的文本序列。
  • Action Space:即vocab,也就是从vocab中选取一个作为本次生成的token。

KL散度(Kullback-Leibler Divergence),可以衡量两个概率分布之间的差异程度。在 PPO 算法中,KL 散度(Kullback-Leibler Divergence)的计算公式如下

其中,π_old 表示旧的策略,π_new 表示当前的样本策略。KL 散度的含义是用 π_old 的分布对 π_new 的分布进行加权,然后计算两个分布之间的差异程度。


具体来说,KL 散度的计算方法是首先计算 π_old(i) / π_new(i) 的比值,然后对其取对数并乘以 π_old(i) 来进行加权。最后将所有加权后的结果相加,即可得到 KL 散度的值。这里的KL散度值是一个【惩罚项】,即经过RL训练后模型和SFT后模型的KL散度(繁殖两个模型偏差太多,导致模型效果下降,RLHF的主要目的是alignment)。

注意:KL 散度是一个非对称的度量,即 KL(π_old || π_new) 与 KL(π_new || π_old) 的值可能不相等。在 PPO 算法中,我们通常使用 KL(π_old || π_new) 来控制策略更新的幅度,因为 KL(π_old || π_new) 的值通常比 KL(π_new || π_old) 更容易控制,并且更能够反映出策略改变的方向。

DPO、PPO 和 BPO 都是用于训练强化学习代理的算法,但它们在算法原理和实现上有一些不同之处。

  1. DPO(Direct Policy Optimization):DPO 是一种直接策略优化方法,它通过直接优化策略函数来提高代理的性能。与值函数(价值函数)相比,DPO 不需要估计状态值或状态动作值,而是直接优化策略函数来最大化长期累积奖励。DPO 可能包括各种方法,如 REINFORCE 算法、TRPO(Trust Region Policy Optimization)等。

  2. PPO(Proximal Policy Optimization):PPO 也是一种策略优化方法,它专注于近端策略优化。PPO 通过限制每次策略更新的大小来确保稳定性和收敛性,这通常通过一种叫做“近端策略裁剪”的方法来实现。PPO 在训练过程中不需要使用价值函数,而是直接优化策略函数。PPO 的设计目标是简化和提高算法的稳定性。

  3. BPO(Batch Policy Optimization):BPO 是一种批量策略优化方法,它使用离线收集的数据批次进行策略更新。与在线方法不同,BPO 不需要与环境交互来收集数据,而是使用事先收集的大量数据进行策略更新。BPO 可以更有效地利用离线数据,但也面临着样本效率和数据偏差等挑战。

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

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

相关文章

java数组与集合框架(二)-- 集合框架,Iterator迭代器,list

集合框架: 用于存储数据的容器。 Java 集合框架概述 一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊端,而…

小狐狸ChatGPT付费AI创作系统V2.8.0独立版 + H5端 + 小程序前端

狐狸GPT付费体验系统的开发基于国外很火的ChatGPT,这是一种基于人工智能技术的问答系统,可以实现智能回答用户提出的问题。相比传统的问答系统,ChatGPT可以更加准确地理解用户的意图,提供更加精准的答案。同时,小狐狸G…

09_Web组件

文章目录 Web组件Listener监听器ServletContextListener执行过程 Filter过滤器Filter与Servlet的执行 案例(登录案例) 小结Web组件 Web组件 JavaEE的Web组件(三大Web组件): Servlet → 处理请求对应的业务Listener →…

图论做题笔记:dfs

Leetcode - 797:所有可能的路径 题目: 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序) graph[i] 是一个从节点 i 可以访问的所有节…

公司官网怎么才会被百度收录

在互联网时代,公司官网是企业展示自身形象、产品与服务的重要窗口。然而,即使拥有精美的官网,如果不被搜索引擎收录,就无法被用户发现。本文将介绍公司官网如何被百度收录的一些方法和步骤。 1. 创建和提交网站地图 创建网站地图…

el-select的错误提示不生效、el-select验证失灵、el-select的blur规则失灵

发现问题 在使用el-select进行表单验证的时候&#xff0c;发现点击下拉列表没选的情况下&#xff0c;他不会提示没有选择选项的信息&#xff0c;我设置了rule如下 <!--el-select--><el-form-item label"等级" prop"level"><el-select v-m…

代码随想录算法训练营Day39|LC62 不同路径LC63 不同路径II

一句话总结&#xff1a;不是太难&#xff0c;状态转移方程好想。 原题链接&#xff1a;62 不同路径 位置为(i, j)的点只能从上面或者左边过来&#xff0c;由此可列出状态转移方程。状态转移方程的初始化为所有第一排和第一列的点都初始化为1即可。 class Solution {public i…

MATLAB 点云高程渲染赋色(50)

MATLAB 点云高程渲染赋色(50) 一、算法介绍二、算法实现1.步骤2.代码3.效果一、算法介绍 自己写的高程渲染算法,点云的渲染效果更接近软件中的效果,具体的算法步骤和实现代码,以及最后的实现效果如下所示: 二、算法实现 1.步骤 1 首先读取了原始的点云数据 CSDN.ply…

【御控物联】JavaScript JSON结构转换(12):对象To数组——键值互换

文章目录 一、JSON结构转换是什么&#xff1f;二、核心构件之转换映射三、案例之《JSON对象 To JSON数组》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换…

Adobe Illustrator 2023 for Mac/Win:创意无限,设计无界

在数字艺术与设计领域&#xff0c;Adobe Illustrator 2023无疑是一颗璀璨的明星。这款专为Mac和Windows用户打造的矢量图形设计软件&#xff0c;以其强大的功能和卓越的性能&#xff0c;赢得了全球设计师的广泛赞誉。 Adobe Illustrator 2023在继承前代版本优点的基础上&#…

【DETR系列目标检测算法代码精讲】01 DETR算法01 DETR算法框架和网络结构介绍

为什么要有DETR 总所周知&#xff0c;传统的目标检测算法非常依赖于anchor和nms等手工设计操作&#xff0c;非常费时费力&#xff0c;自然而然的就产生了取消这些操作的想法。但是我们首先需要思考的是&#xff0c;为什么我们需要anchor和nms&#xff1f; 因为我们是没有指定…

正大国际:期货入门的基础知识是什么?

期货的概念很简单&#xff0c;就是一种远期合同&#xff0c;买卖双方约定交易物、交易价格与交易时间。难就难在如何理解它具备的杠杆率&#xff0c;人们是如何在这上面暴富或破产的 很多人抱有这么个错觉&#xff0c;觉得期货是一个小众市场。但其实&#xff0c;世界上所发生…

P-MapNet:Far-seeing Map Generator Enhanced by both SDMap and HDMap Priors

主页&#xff1a;homepage 参考代码&#xff1a;P-MapNet 动机与出发点 在感知系统中引入先验信息是可以提升静态元素感知网络的上限的&#xff0c;这篇文章对SD地图采用栅格化表示&#xff08;也就是图像形式&#xff09;&#xff0c;之后用CNN网络去抽取栅格化SD地图的信息&…

软件测试面试——你准备好了吗?

软件的生命周期 计划阶段-〉需求分析-〉设计阶段-〉编码->测试->运行与维护 测试用例&#xff1a;用例ID&#xff0c;测试项&#xff0c;重要级别&#xff0c;优先级别&#xff0c;预置条件&#xff0c;测试标题&#xff0c;操作步骤&#xff0c;预期结果。&#xff08…

Mybatis (1)

mybatis 1、入门2、事务管理机制3、日志和junit配置3、mybatis工具类4、CRUD4.1 insert4.1.1 map方式4.1.2 对象方式 4.2 delete4.3 update4.4 select&#xff08;Retrieve&#xff09;4.4.1 查询一个结果4.4.2 查询多个结果 4.5 命名空间 1、入门 ①创建一个空项目&#xff1…

java电话号码的字母组合(力扣Leetcode17)

电话号码的字母组合 力扣原题链接 问题描述 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 示例 1&#xff1a;…

理解游戏服务器架构-部署架构

目录 前言 我所理解的服务器架构 什么是否部署架构 部署架构的职责 进程业务职责 网络链接及通讯方式 与客户端的连接方式 服务器之间连接关系 数据落地以及一致性 数据库的选择 数据访问三级缓存 数据分片 读写分离 分布式数据处理 负载均衡 热更新 配置更新 …

flowable-ui后台显式非中文

把flowable-ui的war包发布后&#xff0c;后台界面显示的是非中文 用的是6.7.2版本&#xff0c;经过了解该版本是有国际化配置文件的&#xff0c;支持中文 猜测可能是浏览器语言导致未显示中文&#xff0c;在控制台输入navigator.language&#xff0c;查看到果然是英文 解决方案…

[项目实践]---RSTP生成树

[项目实践] 目录 [项目实践] 一、项目环境 二、项目规划 三、项目实施 四、项目测试 |验证 ---RSTP生成树 一、项目环境 Jan16 公司为提高网络的可靠性&#xff0c;使用了两台高性能交换机作为核心交换机&#xff0c;接入层交 换机与核心层交换机互联&#xff0c;形成冗…

【Linux】生产者消费者模型{基于BlockingQueue的PC模型/RAII风格的加锁方式/串行,并行,并发}

文章目录 1.认识PC模型2.基于BlockingQueue的PC模型2.1串行&#xff0c;并行&#xff0c;并发2.2理解linux下的并发2.2RAII风格的加锁方式2.3阻塞队列2.4深入理解pthread_cond_wait2.5整体代码1.Task.hpp2.lockGuard.hpp3.BlockQueue.hpp4.pcModel.cc 3.总结PC模型 1.认识PC模型…