当前位置: 首页 > news >正文

由浅入深学习大语言模型RLHF(PPO强化学习- v1浅浅的)

        最近,随着DeepSeek的爆火,GRPO也走进了视野中。为了更好的学习GRPO,需要对PPO的强化学习有一个深入的理解,那么写一篇文章加深理解吧。纵观网上的文章,要么说PPO原理,各种复杂的公式看了就晕,要么说各种方式命名的模型,再要么默认你是个NLPer。这导致RLer和NLPer之间学习大语言模型强化学习产生了巨大的gap。于是,我们单纯说说大语言模型里面的PPO吧。

        其实PPO也是在训练模型,和SFT一样,都是为了获得最终一个用于推理部署的模型。SFT训练模型时一般需要一个base【模型】和【损失函数】,这里先这么浅显地说,因为PPO也需要这些,我们通过这些相同的部分来弥补NLP和RL之间的gap吧。

一、模型

SFT(Only one model)

        SFT模型一般是一个已经预训练过的大语言模型(例如GPTs、BERT等),或者是一个未经训练的小模型(LSTM)。

PPO(Four Models)

        PPO训练时总共有四个模型分别是Policy Model(Actor)、Reward Model、Reference Model、Critic Model。这里和SFT模型相似的也就是Policy Model,这个模型也是经过预训练的模型且用于未来实际使用的模型。其他三个模型都是用来辅助Policy Model模型训练的。那么其他三个模型的作用是什么呢?Let's talk step by step.

        Reward Model

        Fine! 你肯定早就听过这个模型。我们说PPO是根据好的和坏的样本对来进行训练的,从来让模型产生输出好样本的偏好,那么如何识别好样本和坏样本呢?是的,依靠Reward Model。让我们看看下边的例子。

s1: 中国的首都是哪里?北京。->过于简洁,但正确,2分

s2: 中国的首都是哪里?中国的首都是北京。->比较中肯,3分

s3: 中国的首都是哪里?中国的首都不是广州和武汉,是北京。->很多废话,0分

s4: 中国的首都是哪里?中国的首都不是广州,是北京。->一点点废话,1分

        上面我按照自己的偏好给每个句子进行了打分。Reward Model在这里的作用就是学习我打分的风格,然后产生一个数值或者概率,这里可以用各种方法,先不说具体咋做,可以线按照你想的方法产生一个分数,然后我们接着往下走。好了,我们现在有一个模型可以产生奖励了,我们可以给Policy Model模型产生的输出打分了,然后对这个分数进行优化,即奖励较大时加大对损失的权重,奖励较大时给损失乘以一个较小的权重。这样,模型就可以达到L1级别(借用自动驾驶等级概念)的偏好学习了。

        看似我们的方法已经可以work了,但仅仅是看似。实际上在模型训练的过程中可能会因为Reward打分不准导致Policy Model训练出现偏差或者Policy Model过于追求奖励大的而出现性能下降的现象。

        所以这么不稳定的训练,需要再加入另外一个模型Reference Model来维护一下训练的稳定性。

        Reference Model

        Reference Model被用于维持训练的稳定性。我们知道PPO被用在大语言模型是为了维持模型回答的风格,这种风格应该是朝着某种方向去的。比如,我们需要训练一个模型,他的风格需要是安全型的,即在特定情况下,他应该对用户的输入做出拒答。但是当训练不稳定时,模型可能对用户所有的输入都做出拒答。显然,这不是我们想要的模型效果。所以,我们需要一个基准模型,这个模型给Policy Model当作参考,告诉他不要在训练的时候偏离基准模型太远,即保留基准模型的一些能力。

        于是Reference Model(参考模型)呼之欲出,那么这个与Reference Model控制距离的方法如何实现呢?我们简单的猜一下,控制距离的方法。我这里给出一个简单的猜测,我们可以将输入同时送入到Reference Model和Reward Model中,然后根据两个句子输出的logits计算距离,如果距离过大时应该被拉近,距离适当时可以保持。当然,作为Reference Model在训练的时候是不需要更新参数的,不然就被一起拉着跑偏了。

        看着我们的模型可以训练起来了,正式进入L2级别。

        Critic Model

        没错,我们的模型其实完全可以训练了,至于为什么要多次一举,加个Critix Model。我也不是特别的理解。那么,让我们问问DeepSeek吧。

 

        DeepSeek告诉我们Critic Model可以降低方差?那么为什么呢?为什么前面的方法会出现高方差,以及Critic Model是如何降低方差的呢?

        我们打个比方,比如我们日常在与人交流的时候,可能一不小心说出了话,让他人不开心,后来通过各种方法找补回来,让别人理解了我们的内心想法。先说错话找补回来让对方理解和直接让对方理解我们真实的想法,这二者最后的结果是一样的(即奖励,Reward Model的打分),但是过程是不一样的。这个Critic Model的作用可以类比为教我们如何正确的表达,而不仅仅是会说的对。

        至于优势估计和价值引导,可以看到优势估计可以衡量特定动作(输出特定token)对于平均情况的优势,价值引导是提供长期回报(即输出某个token的长期回报),这两者也都是面向token级别(Critic Model),而不是句子级别(Reward Model给整个句子打分)的优化。


       至此,我们理解了这四个模型的大致作用,下面我们从具体说说是PPO如何做的。

二、损失函数

        施工中...

相关文章:

由浅入深学习大语言模型RLHF(PPO强化学习- v1浅浅的)

最近,随着DeepSeek的爆火,GRPO也走进了视野中。为了更好的学习GRPO,需要对PPO的强化学习有一个深入的理解,那么写一篇文章加深理解吧。纵观网上的文章,要么说PPO原理,各种复杂的公式看了就晕,要…...

网络安全三件套

一、在线安全的四个误解     Internet实际上是个有来有往的世界,你可以很轻松地连接到你喜爱的站点,而其他人,例如黑客也很方便地连接到你的机器。实际上,很多机器都因为自己很糟糕的在线安全设置无意间在机器和系统中留下了“…...

瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库

目录 1 环境搭建 2 交叉编译opencv 3 模型训练 4 模型转换 4.1 pt模型转onnx模型 4.2 onnx模型转rknn模型 4.2.1 安装rknn-toolkit 4.2.2 onn转成rknn模型 5 升级npu驱动 6 C++推理源码demo 6.1 原版demo 6.2 增加opencv读取图片的代码 7 交叉编译x264 ffmepg和op…...

【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析⑤】

ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase05 作者:车端域控测试工程师 更新日期:2025年02月15日 关键词:UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023 TC10-005测试用例 用例ID测试场景验证要点参考条款预期…...

python-leetcode 35.二叉树的中序遍历

给定一个二叉树的根节点root,返回它的中序遍历。 方法一:递归 二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过…...

glob 用法技巧

目录 处理大量文件节省内存 匹配多个文件扩展名 遍历多种格式文件 遍历某一个文件: 查找当前目录和子目录 6. 排除特定文件 7. 大小写不敏感匹配 8. 获取绝对路径 9. 处理特殊字符 处理大量文件节省内存 技巧:用 iglob 替代 glob,逐…...

CodeGPT 使用教程(适用于 VSCode)

CodeGPT 使用教程(适用于 VSCode) CodeGPT 是一个 VSCode 插件,可以让你在代码编辑器中直接调用 GPT 进行代码补全、优化、调试等操作。以下是详细的安装和使用步骤: 1. 安装 CodeGPT 方式 1:从 VSCode 插件市场安装…...

以下是MySQL中常见的增删改查语句

以下是MySQL中常见的增删改查语句: 增加数据(INSERT) 基本语法: INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...); 示例:向名为 students 的表中插入一条学生记录, id 为1&am…...

Vue3 与 TypeScript 实战:核心细节与最佳实践

引言 Vue3 的 Composition API 与 TypeScript 的强类型支持完美契合,极大提升了代码的可维护性和开发体验。本文将深入探讨 Vue3 TypeScript 的关键细节,并通过实际代码示例展示如何高效结合二者。 一、组合式 API 与类型推导 Vue3 的 setup 函数与 T…...

23种设计模式 - 解释器模式

模式定义 解释器模式(Interpreter Pattern)是一种行为型设计模式,用于为特定语言(如数控系统的G代码)定义文法规则,并构建解释器来解析和执行该语言的语句。它通过将语法规则分解为多个类,实现…...

常用的 React Hooks 的介绍和示例

目录 1. useState2. useEffect3. useContext4. useReducer5. useCallback6. useMemo7. useRef8. useImperativeHandle9. useLayoutEffect10. useDebugValue 常用的 React Hooks 的介绍和示例: 1. useState useState 是一个用于在函数组件中添加状态的 Hook。 impo…...

ChatGLM-6B模型

ChatGLM-6B 是由 清华大学人工智能研究院(THU AI) 和 智源研究院(BAAI) 开发的一款中文对话生成大语言模型。它是ChatGLM系列的一个版本,其核心特点是基于GLM(General Language Model)架构&…...

编译安装php

前置准备 这里的可能不全,每个人安装的模块不一致,依赖也不不相同,按实际情况调整 yum install libxml2 -y yum install libxml2-devel -y yum install openssl-devel -y yum install sqlite-devel -y yum install libcurl-devel -yyum ins…...

【JavaEE进阶】Spring MVC(3)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗 如有错误,欢迎指出~ 返回响应 返回静态页面 //RestController Controller RequestMapping("/response") public class ResponseController {RequestMapping("/returnHtmlPage&…...

30 款 Windows 和 Mac 下的复制粘贴软件对比

在日常电脑操作中,复制粘贴是极为高频的操作,一款好用的复制粘贴软件能极大提升工作效率。以下为你详细介绍 30 款 Windows 和 Mac 下的复制粘贴软件,并对比它们的优缺点,同时附上官网下载地址,方便大家获取软件。 Pa…...

【LLAMA】羊驼从LLAMA1到LLAMA3梳理

every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it 0. 前言 LLAMA 1到3梳理 1. LLAMA 1 论文: LLaMA: Open and Efficient Foundation Language Models 时间: 2023.02 1.1 前言…...

【OS安装与使用】part3-ubuntu安装Nvidia显卡驱动+CUDA 12.4

文章目录 一、待解决问题1.1 问题描述1.2 解决方法 二、方法详述2.1 必要说明2.2 应用步骤2.2.1 更改镜像源2.2.2 安装NVIDIA显卡驱动:nvidia-550(1)查询显卡ID(2)PCI ID Repository查询显卡型号(3&#xf…...

【蓝桥杯集训·每日一题2025】 AcWing 6123. 哞叫时间 python

6123. 哞叫时间 Week 1 2月18日 农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛,但她很难理解为什么他这么喜欢它。 他说「竞赛中我最喜欢的部分是贝茜说 『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。 埃尔茜仍然不理解,所以农夫约翰将竞赛以…...

JAVA中常用类型

一、包装类 1.1 包装类简介 java是面向对象的语言,但是八大基本数据类型不符合面向对象的特征。因此为了弥补这种缺点,为这八中基本数据类型专门设计了八中符合面向面向对象的特征的类型,这八种具有面向对象特征的类型,就叫做包…...

【办公类-90-02】】20250215大班周计划四类活动的写法(分散运动、户外游戏、个别化综合)(基础列表采用读取WORD表格单元格数据,非采用切片组合)

背景需求: 做了中班的四类活动安排表,我顺便给大班做一套 【办公类-90-01】】20250213中班周计划四类活动的写法(分散运动、户外游戏、个别化(美工室图书吧探索室))-CSDN博客文章浏览阅读874次&#xff0…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...