【DeepSeek背后的技术】系列三:强化学习(Reinforcement Learning, RL)

目录

  • 1 简介
    • 1.1 强化学习(RL)简介
    • 1.2 基于人类反馈的强化学习 (RLHF) 简介
      • 1.2.1 四个重要角色
      • 1.2.2 三个步骤
  • 2 强化算法
    • 2.1 PPO(Proximal Policy Optimization)
      • 2.1.1 核心思想
      • 2.1.2 算法步骤
      • 2.1.3 优点
      • 2.1.4 缺点
      • 2.1.5 应用场景
    • 2.2 GRPO(Group Relative Policy Optimization)
      • 2.2.1 核心思想
      • 2.2.2 算法步骤
      • 2.2.3 优点
      • 2.2.4 缺点
      • 2.2.5 应用场景
      • 2.2.6 对比其他算法
    • 2.3 Long CoT(Long Chain-of-Thought for Decision-Making)
      • 2.3.1 核心思想
      • 2.3.2 算法步骤
      • 2.3.3 优点
      • 2.3.4 缺点
      • 2.3.5 应用场景

1 简介

1.1 强化学习(RL)简介

强化学习(Reinforcement Learning, RL)是一种智能体在与环境互动过程中,通过试错和奖励机制学习如何达成目标的算法。在这个过程中,智能体会不断探索环境,采取行动,并根据环境反馈的奖励或惩罚调整自己的行为策略,最终学习到最优策略。因此,反复实验(trial and error)延迟奖励(delayed reward) 是强化学习最重要的两个特征。

强化学习已在多个领域得到应用,例如游戏(例如围棋AlphaGo)、机器人(例如波士顿动力机器狗)、金融(例如量化交易策略)和大模型(例如语言大模型训练范式RLHF)等。

如下图所示,强化学习的基本要素包括:

  • 智能体 (Agent):指 LLM/Stable Diffusion 等大模型。
  • 环境 (Environment):指用户使用和反馈。
  • 状态 (State):环境中所有可能状态的集合。
  • 动作 (Action):智能体所有可能动作的集合。
  • 奖励 (Reward):智能体在环境的某一状态下所获得的奖励。

强化学习

强化学习基本概念:

基本概念

智能体的目标是找到一个策略,根据当前观测到的环境状态和奖励反馈,选择最大化预期奖励的最佳动作。

1.2 基于人类反馈的强化学习 (RLHF) 简介

基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback,RLHF) 是一种新颖的人工智能训练方法,它结合了强化学习和人类反馈,通过融入用户智慧和经验,引导智能体学习和进化。该技术已在 GPT-4、Gemini、Claude 等自然语言大模型中得到广泛应用,并取得了显著成效。

如下图所示,自然语言大模型RLHF训练过程包含四个重要角色和三个步骤。

RLHF

1.2.1 四个重要角色

  • Actor Model(演员模型):待训练的语言模型。
  • Critic Model(评论家模型):预测语言模型输出的奖励。
  • Reward Model(奖励模型):计算语言模型在当前状态下的奖励。
  • Reference Model(参考模型):为Actor Model参数更新提供“约束”,防止其过度偏离。

其中,Actor/Critic Model在RLHF阶段是需要训练(参数更新),而Reward/Reference Model是参数冻结的。

其他角色:

  • Pretrained Model (预训练模型):是指大量文本数据上进行训练的语言模型。预训练模型已经学习了语言的基本知识,例如词法、句法和语义等。
  • SFT Model (监督微调模型):使用人类标注高质量数据对Pretrained Model的监督训练得到,在RLHF阶段用于初始化Actor模型和Reference模型。
  • Reward Model 奖励网络:使用人类标注候选文本排序数据集对Pretrained Model的监督训练得到,能够提供LLM输出文本的‘好坏’奖励信号。在RLHF阶段用于初始化Reward模型和Critic模型。

1.2.2 三个步骤

  • SFT(大模型监督微调)阶段:使用人工标注数据集对预训练模型进行监督微调,得到SFT Model(监督微调模型)。
  • RW(奖励模型训练)阶段:使用SFT模型生成多个回答,人工标注回答的‘好坏’得到排序标注数据集,对预训练模型进行训练,得到Reward Model(奖励模型)。
  • RLHF阶段:Actor模型生成文本,利用Critic/Reward/Reference Model(图中黄色框区域)共同组成了一个“reward-loss”计算体系,产生奖励信号,对Actor和Critic Model进行更新,直到 Actor 模型达到理想状态。

下图为OpenAI发布的GPT-3.5的RLHF的过程。

GPT-3.5

2 强化算法

下面介绍一些常用的RL算法:PPO、GRPO和PRIME。DeepSeek使用的是GRPO算法。

2.1 PPO(Proximal Policy Optimization)

2.1.1 核心思想

PPO是一种基于策略梯度(Policy Gradient)的强化学习算法,旨在通过限制策略更新的幅度来保证训练稳定性,避免传统策略梯度方法中因更新过大导致的性能崩溃。

2.1.2 算法步骤

  1. 目标函数设计

目标函数

  1. 优势估计

优势估计

  1. 更新策略
    通过多轮小批量梯度上升优化目标函数,避免单步更新过大。

2.1.3 优点

  • 训练稳定,无需复杂的信任区域计算(如TRPO)。
  • 样本利用率高,适用于连续和离散动作空间。

2.1.4 缺点

  • 超参数(如剪切阈值( \epsilon ))对性能敏感。
  • 对优势函数估计的准确性依赖较高。

2.1.5 应用场景

游戏AI(如Dota 2、星际争霸II)、机器人控制、自然语言生成。

2.2 GRPO(Group Relative Policy Optimization)

GRPO(Group Relative Policy Optimization) 是一种基于群体相对性能的策略优化方法,旨在通过比较不同策略组(Group)的表现来指导策略更新,提升训练的稳定性和多样性。该方法通常用于多任务学习或多智能体强化学习场景,通过组间相对评估避免局部最优。

论文:DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models

2.2.1 核心思想

  1. 群体分组(Grouping):将策略划分为多个组(例如不同策略参数初始化或不同任务分配),每个组独立与环境交互。
  2. 相对性能评估:根据组的相对表现(如平均回报)动态调整策略更新方向。
  3. 策略更新约束:通过组间比较,抑制低性能组的更新幅度,促进高性能组的探索。

对比

2.2.2 算法步骤

算法步骤1

伪代码如下:
伪代码

2.2.3 优点

  1. 避免局部最优:组间竞争促进策略多样性,减少早熟收敛。
  2. 适应多任务:天然支持多任务学习,各组可专注于不同子任务。
  3. 资源分配高效:动态调整组间权重,集中资源训练高性能策略。

2.2.4 缺点

  1. 计算开销大:维护多个策略组增加内存和计算成本。
  2. 超参数敏感:组数 ( K ) 和温度 ( \tau ) 需精细调节。
  3. 组间干扰:低效组可能拖累整体训练速度。

2.2.5 应用场景

  • 多任务强化学习:每组处理不同任务(如机器人抓取不同物体)。
  • 多智能体协同:各组代表不同智能体策略,通过相对评估优化协作。
  • 超参数搜索:将不同超参数配置视为组,快速筛选最优组合。

2.2.6 对比其他算法

算法核心机制适用场景与GRPO的区别
PPO剪切策略更新幅度单任务通用场景GRPO通过组间比较提升多样性
MAPPO多智能体策略优化协作型多智能体GRPO强调组间竞争而非协作
ES进化策略全局搜索高维参数空间优化GRPO基于梯度更新而非进化

总结:
GRPO 通过分组策略的相对性能评估动态资源分配,平衡探索与利用,适用于需要多样性和多任务协同的场景。尽管计算成本较高,但其在复杂任务中的全局搜索能力显著优于传统单组策略优化方法。

2.3 Long CoT(Long Chain-of-Thought for Decision-Making)

2.3.1 核心思想

Long CoT将自然语言处理中的“思维链”(Chain-of-Thought)扩展为多步推理机制,用于强化学习中的长期规划,通过显式建模推理路径提升决策质量。

2.3.2 算法步骤

算法步骤4

2.3.3 优点

  • 显式建模长期依赖,避免短视决策。
  • 提升复杂任务中的规划能力(如战略游戏、机器人导航)。

2.3.4 缺点

  • 推理链生成增加计算开销。
  • 需要设计高效的推理路径生成机制。

2.3.5 应用场景

需要多步规划的复杂任务(如围棋、自动驾驶)。

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

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

相关文章

LabVIEW的智能电源远程监控系统开发

在工业自动化与测试领域,电源设备的精准控制与远程管理是保障系统稳定运行的核心需求。传统电源管理依赖本地手动操作,存在响应滞后、参数调节效率低、无法实时监控等问题。通过集成工业物联网(IIoT)技术,实现电源设备…

SpringBoot开发(四)SpringBoot配置文件

1. SpringBoot配置文件 1.1. 配置端口号和路径 (1)在application.properties文件下配置端口号和路径。 server.port: 8081 server.servlet.context-path/demo(2)运行访问。 1.2. 自定义配置 1.2.1. 方式一 (1&…

算法随笔_40: 爬楼梯

上一篇:算法随笔_39: 最多能完成排序的块_方法2-CSDN博客 题目描述如下: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释&am…

C# List 列表综合运用实例⁓Hypak原始数据处理编程小结

C# List 列表综合运用实例⁓Hypak原始数据处理编程小结 1、一个数组解决很麻烦引出的问题1.1、RAW 文件尾部数据如下:1.2、自定义标头 ADD 或 DEL 的数据结构如下: 2、程序 C# 源代码的编写和剖析2.1、使用 ref 关键字,通过引用将参数传递,以…

win32汇编环境,窗口程序中自定义工具栏的使用示例

;运行效果 ;win32汇编环境,窗口程序中自定义工具栏的使用示例 ;工具栏一般放在菜单下面,相当于一个个小的对话框,当然你放在其它地方也可以。 ;原理是,创建一张BMP位图,比如下例用一张168*24的图,平均分成7部分&#x…

机器学习专业毕设选题推荐合集 人工智能

目录 前言 毕设选题 开题指导建议 更多精选选题 选题帮助 最后 前言 大家好,这里是海浪学长毕设专题! 大四是整个大学期间最忙碌的时光,一边要忙着准备考研、考公、考教资或者实习为毕业后面临的升学就业做准备,一边要为毕业设计耗费大量精力。学长给大家整理…

备考蓝桥杯嵌入式4:使用LCD显示我们捕捉的PWM波

上一篇博客我们提到了定时器产生PWM波,现在,我们尝试的想要捕获我们的PWM波,测量它的频率,我们应该怎么做呢?答案还是回到我们的定时器上。 我们知道,定时器是一个高级的秒表(参考笔者的比喻&a…

ArrayList 扩容机制的源码剖析

在 Java 编程中,ArrayList是一个常用的集合类,它实现了List接口,底层基于数组实现。与普通定长数组不同,ArrayList能够根据元素的添加情况动态调整数组的大小,这就是其扩容机制。下面我们将深入剖析ArrayList扩容机制的…

Java 面试之结束问答

技术优化 线程池优化 设置最大线程数设置最小核心线程数设置额外线程存活时间选择线程池队列选择合适的线程池选择合适的饱和策略 锁优化 尽量不要锁住方法缩小同步代码块,只锁数据锁中尽量不要再包含锁将锁私有化,在内部管理锁进行适当的锁分解 HT…

【llm对话系统】大模型源码分析之 LLaMA 位置编码 RoPE

在自然语言处理(NLP)领域,Transformer 模型已经成为主流。然而,Transformer 本身并不具备处理序列顺序的能力。为了让模型理解文本中词语的相对位置,我们需要引入位置编码(Positional Encoding)…

【科研】 -- 医学图像处理方向,常用期刊链接

文章目录 文章目录 医学图像处理方向,期刊链接医学图像处理方向,会议 医学图像处理方向,期刊链接 Sicence https://www.science.org/ Nature https://www.nature.com/ Nature Communications https://www.nature.com/ncomms/ Nature Met…

The specified Gradle distribution ‘gradle-bin.zip‘ does not exist.

The specified Gradle distribution ‘https://services.gradle.org/distributions/gradle-bin.zip’ does not exist. distributionUrl不存在,关联不上,下载不了,那就匹配一个能下载的 distributionUrlhttps://services.gradle.org/distrib…

从零开始实现一个双向循环链表:C语言实战

文章目录 1链表的再次介绍2为什么选择双向循环链表?3代码实现:从初始化到销毁1. 定义链表节点2. 初始化链表3. 插入和删除节点4. 链表的其他操作5. 打印链表和判断链表是否为空6. 销毁链表 4测试代码5链表种类介绍6链表与顺序表的区别7存储金字塔L0: 寄存…

Cesium点集中获取点的id,使用viewer.value.entities.getById报错的解决方法

错误代码: viewer.value.entities.getById(pickedObject.id) 报错: 可以正常获取movement.position但是一直出现如下报错,无法获得航点的id,通过断点定位为 viewer.value.entities.getById(pickedObject.id)导致的报错 解决方…

java 进阶教程_Java进阶教程 第2版

第2版前言 第1版前言 语言基础篇 第1章 Java语言概述 1.1 Java语言简介 1.1.1 Java语言的发展历程 1.1.2 Java的版本历史 1.1.3 Java语言与C/C 1.1.4 Java的特点 1.2 JDK和Java开发环境及工作原理 1.2.1 JDK 1.2.2 Java开发环境 1.2.3 Java工作原理 1.…

ARM Linux Qt使用JSON-RPC实现前后台分离

文章目录 1、前言2、解决方案2.1、JSON-RPC2.2、Qt中应用JSON-RPC的框架图2.3、优点2.4、JSON-RPC 1.0 协议规范 3、程序示例3.1、Linux C(只例举RPC Server相关程序)3.2、Qt程序(只例举RPC Client相关程序) 4、编译程序4.1、交叉…

PyQt6/PySide6 的 QMainWindow 类

QMainWindow 是 PyQt6 或 PySide6 库中一个非常重要的类,它提供了一个主窗口应用程序的框架,该框架可以包含菜单栏、工具栏、状态栏以及中心部件等。QMainWindow 为 GUI 应用程序提供了基本的结构和布局管理功能,非常适合用来创建复杂的用户界…

9. k8s二进制集群之kube-controller-manager部署

同样在部署主机上创建证书请求文件(为之后的证书生成做准备)根据上面的证书文件创建证书(结果会在当前目录下产生kube-controller-manager证书)创建kube-controller-manager服务配置文件创建kube-controller-manager服务启动文件同步kube-controller-manager证书到对应mast…

教程 | i.MX RT1180 ECAT_digital_io DEMO 搭建(一)

本文介绍 i.MX RT1180 EtherCAT digital io DEMO 搭建,Master 使用 TwinCAT ,由于步骤较多,分为上下两篇,本文为第一篇,主要介绍使用 TwinCAT 控制前的一些准备。 原厂 SDK 提供了 evkmimxrt1180_ecat_examples_digit…

ubuntu22.40安装及配置静态ip解决重启后配置失效

遇到这种错误,断网安装即可! 在Ubuntu中配置静态IP地址的步骤如下。根据你使用的Ubuntu版本(如 Netplan 或传统的 ifupdown),配置方法有所不同。以下是基于 Netplan 的配置方法(适用于Ubuntu 17.10及更高版…