LLMs基础学习(八)强化学习专题(5)

LLMs基础学习(八)强化学习专题(5)

文章目录

  • LLMs基础学习(八)强化学习专题(5)
    • 重要性采样(Importance Sampling)
      • 权重计算逻辑
      • 两种实现形式
      • 使用注意事项
    • PPO 与 TRPO
      • PPO 算法(Proximal Policy Optimization)
      • TRPO 算法(Trust Region Policy Optimization)
      • PPO 与 TRPO 的关系

视频链接:https://www.bilibili.com/video/BV1MQo4YGEmq/?spm_id_from=333.1387.upload.video_card.click&vd_source=57e4865932ea6c6918a09b65d319a99a

重要性采样(Importance Sampling)

在强化学习中,重要性采样(Importance Sampling) 是一种通过调整样本权重,修正 “行为策略(Behavior Policy)” 与 “目标策略(Target Policy)” 分布差异的技术,核心解决异策略(Off - Policy)学习的关键问题:如何用行为策略采集的数据,准确估计目标策略的性能。

  • 行为策略 b ( a ∣ s ) b(a \mid s) b(as):负责与环境交互、生成动作样本(比如探索性更强的策略 )。
  • 目标策略 π ( a ∣ s ) \pi(a \mid s) π(as):需要被评估或优化的策略(比如更偏向利用的最优策略 )。

权重计算逻辑

通过概率比率(重要性权重) 调整样本对目标策略的贡献,公式:

  • 单步权重 ρ t = π ( a t ∣ s t ) b ( a t ∣ s t ) \rho_t = \frac{\pi(a_t \mid s_t)}{b(a_t \mid s_t)} ρt=b(atst)π(atst) 衡量 “目标策略选动作 a t a_t at 的概率” 与 “行为策略选 a t a_t at 的概率” 的比值。
  • 多步轨迹权重 ρ 0 : T = ∏ t = 0 T π ( a t ∣ s t ) b ( a t ∣ s t ) \rho_{0:T} = \prod_{t=0}^T \frac{\pi(a_t \mid s_t)}{b(a_t \mid s_t)} ρ0:T=t=0Tb(atst)π(atst) 整条轨迹的权重是各步权重的乘积,体现轨迹对目标策略的整体贡献。

两种实现形式

1. 普通重要性采样(Ordinary IS)

直接用权重加权样本回报,估计目标策略的价值函数 V π ( s ) V^\pi(s) Vπ(s) V π ( s ) ≈ 1 n ∑ i = 1 n ρ 0 : T ( i ) G ( i ) V^\pi(s) \approx \frac{1}{n} \sum_{i=1}^n \rho_{0:T}^{(i)} G^{(i)} Vπ(s)n1i=1nρ0:T(i)G(i)

  • G ( i ) G^{(i)} G(i):第 i 条轨迹的累积回报; ρ 0 : T ( i ) \rho_{0:T}^{(i)} ρ0:T(i):第 i 条轨迹的多步权重。

2. 加权重要性采样(Weighted IS)

引入权重归一化,避免极端权重主导估计: V π ( s ) ≈ ∑ i = 1 n ρ 0 : T ( i ) G ( i ) ∑ i = 1 n ρ 0 : T ( i ) V^\pi(s) \approx \frac{\sum_{i=1}^n \rho_{0:T}^{(i)} G^{(i)}}{\sum_{i=1}^n \rho_{0:T}^{(i)}} Vπ(s)i=1nρ0:T(i)i=1nρ0:T(i)G(i)

使用注意事项

1. 核心风险:分布差异导致高方差

  • 数学本质:期望转换依赖分布相似度,公式: E x ∼ π [ f ( x ) ] = E x ∼ b [ f ( x ) π ( x ) b ( x ) ] \mathbb{E}_{x \sim \pi} [f(x)] = \mathbb{E}_{x \sim b} \left[ f(x) \frac{\pi(x)}{b(x)} \right] Exπ[f(x)]=Exb[f(x)b(x)π(x)]
  • 问题:若 π \pi π 与 b 分布差异大,即使采样足够,方差会急剧增大(极端权重让估计不稳定 )。

2. 解决方案

  • 加权重要性采样:通过归一化降低极端权重影响,缓解方差问题。
  • 截断权重:限制权重最大值(如 PPO 算法的剪切机制 ),避免单个样本主导。
  • 限制轨迹长度:减少多步权重的乘积效应(长轨迹易因步数多放大分布差异 )。

一句话理解:重要性采样让 “探索的策略(行为策略)” 采集的数据,能为 “优化的策略(目标策略)” 服务,但得小心分布差异导致的方差问题,用加权、截断等技巧兜底~

PPO 与 TRPO

强化学习中,异策略(Off - Policy)学习 需用 “行为策略(采集数据)” 优化 “目标策略(性能更好的策略)”,但两者分布差异过大会导致重要性采样方差爆炸。PPO 与 TRPO 正是为解决这一问题而生。

PPO 算法(Proximal Policy Optimization)

1. 提出与目标

  • 由 OpenAI 2017 提出,核心解决传统策略梯度因更新步长不当导致的训练不稳定问题。
  • 目标:限制新、旧策略的差异,平衡 “探索” 与 “利用”,让重要性采样更稳定。

2. 核心思想

通过限制策略更新幅度,确保新策略 θ \theta θ 与旧策略 θ ′ \theta' θ 差异不大,避免重要性采样因分布差异大而失效。

3. 数学表达与关键机制

目标函数包含两部分: J PPO θ ( θ ) = J θ ′ ( θ ) − β KL ( θ , θ ′ ) J_{\text{PPO}}^\theta(\theta) = J^{\theta'}(\theta) - \beta \text{KL}(\theta, \theta') JPPOθ(θ)=Jθ(θ)βKL(θ,θ)

  • J θ ′ ( θ ) J^{\theta'}(\theta) Jθ(θ):基于重要性采样的策略梯度目标(用旧策略 θ ′ \theta' θ 采集的数据优化新策略 θ \theta θ )。 J θ ′ ( θ ) = E ( s t , a t ) ∼ π θ ′ [ p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) A θ ′ ( s t , a t ) ] J^{\theta'}(\theta) = \mathbb{E}_{(s_t,a_t) \sim \pi_{\theta'}} \left[ \frac{p_\theta(a_t \mid s_t)}{p_{\theta'}(a_t \mid s_t)} A^{\theta'}(s_t, a_t) \right] Jθ(θ)=E(st,at)πθ[pθ(atst)pθ(atst)Aθ(st,at)] A θ ′ ( s t , a t ) A^{\theta'}(s_t, a_t) Aθ(st,at) 是优势函数,衡量动作价值 )
  • β KL ( θ , θ ′ ) \beta \text{KL}(\theta, \theta') βKL(θ,θ):KL 散度约束,惩罚新、旧策略的差异,确保更新幅度可控。

4. 算法特性

  • 同策略本质:虽用重要性采样,但仅依赖 “上一轮策略 θ ′ \theta' θ” 的数据,新、旧策略差异小,可近似视为同策略。
  • 易用性:将 KL 散度直接融入目标函数,用梯度上升即可优化,实现简单(对比 TRPO )。

TRPO 算法(Trust Region Policy Optimization)

1. 定位与目标

  • 是 PPO 的前身,核心解决 “策略更新的单调性” 问题(保证策略性能单调提升 )。
  • 目标:通过信任区域约束,限制策略更新步长,避免因分布差异导致性能下降。

2. 核心思想

将新策略 θ \theta θ 与旧策略 θ ′ \theta' θ 的 KL 散度作为额外约束(而非融入目标函数 ),要求 KL ( θ , θ ′ ) < δ \text{KL}(\theta, \theta') < \delta KL(θ,θ)<δ δ \delta δ 是信任区域半径 )。

3. 数学表达与痛点

目标函数: J TRPO θ ′ ( θ ) = E ( s t , a t ) ∼ π θ ′ [ p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) A θ ′ ( s t , a t ) ] , KL ( θ , θ ′ ) < δ J_{\text{TRPO}}^{\theta'}(\theta) = \mathbb{E}_{(s_t,a_t) \sim \pi_{\theta'}} \left[ \frac{p_\theta(a_t \mid s_t)}{p_{\theta'}(a_t \mid s_t)} A^{\theta'}(s_t, a_t) \right], \quad \text{KL}(\theta, \theta') < \delta JTRPOθ(θ)=E(st,at)πθ[pθ(atst)pθ(atst)Aθ(st,at)],KL(θ,θ)<δ

  • 痛点:约束是 “额外条件”,无法直接用梯度上升优化,需复杂的二阶优化(如共轭梯度 ),实现难度高、计算成本大。

PPO 与 TRPO 的关系

1. 核心联系

  • 两者均为解决异策略学习中 “策略分布差异导致的高方差” ,目标是稳定策略更新、提升样本效率。
  • PPO 是 TRPO 的简化与优化,继承 “限制策略差异” 的核心思想,改进实现方式。

2. 关键区别

维度PPOTRPO
约束处理KL 散度融入目标函数,直接梯度优化KL 散度作为额外约束,需二阶优化
实现难度简单(一阶优化,易工程落地)复杂(二阶优化,计算成本高)
样本效率与 TRPO 性能接近理论保证单调提升,但实现复杂限制推广

3. 实际应用选择

工程中优先选 PPO :实现简单、训练稳定,在 Atari 游戏、机器人控制等场景表现优异;TRPO 仅用于理论研究或对 “单调提升” 有强需求的极端场景。

一句话概括:TRPO 开了 “限制策略差异” 的脑洞,PPO 把这个脑洞做成了 “人人能用” 的工具,让强化学习落地更简单~

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

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

相关文章

深入理解“回调地狱“(Callback Hell)

"回调地狱"是异步编程中常见的问题&#xff0c;指由于过多嵌套的回调函数导致的代码难以理解和维护的情况。 一、什么是回调地狱 基本概念 回调地狱(Callback Hell/Pyramid of Doom)是指&#xff1a; 多层嵌套的回调函数形成的代码结构 代码向右缩进越来越深&…

Oracle 的 TCP.SEND_TIMEOUT 参数

Oracle 的 TCP.SEND_TIMEOUT 参数 一 参数基本概念 TCP.SEND_TIMEOUT 是 Oracle Net Services 中的一个重要参数&#xff0c;用于控制 TCP 数据发送操作的最长等待时间。 二 关键特性 特性说明参数类型sqlnet.ora 配置文件参数默认值none (无超时限制)单位ms, sec, min, 默…

[Nginx] 配置中的sendfile参数详解:从传统 IO 到零拷贝的性能优化

一、sendfile 是什么&#xff1f; sendfile 是 Nginx 中一个关键的配置参数&#xff0c;用于控制是否使用操作系统提供的 sendfile() 系统调用来传输文件。 sendfile on;&#xff1a;启用零拷贝技术&#xff0c;直接由内核将文件发送到网络。sendfile off;&#xff1a;使用传统…

(LeetCode 每日一题) 2138. 将字符串拆分为若干长度为 k 的组 (字符串、模拟)

题目&#xff1a;2138. 将字符串拆分为若干长度为 k 的组 思路&#xff1a;字符串模拟&#xff0c;时间复杂度0(n)。 C版本&#xff1a; class Solution { public:vector<string> divideString(string s, int k, char fill) {vector<string> v;int ns.size();for…

C++法则1:在 C++ 中,所有的具名变量都是左值,即使它们的类型是右值引用。

看下面例子&#xff1a; test(0)调用的是函数是&#xff1a; template<typename T> void test(T&& t) {std::cout << "右值引用" << std::endl; }test(n)调用的是函数是&#xff1a; template<typename T> void test(T& t) {st…

python如何使用正则提取文章所有形容词

在Python中使用正则表达式提取文章中的形容词需要结合语言特性处理。以下是分步解决方案&#xff1a; 英文场景解决方案&#xff08;推荐使用专业NLP库&#xff09;&#xff1a; import re import nltk nltk.download(averaged_perceptron_tagger) # 首次使用需要下载text …

低代码平台的数据归集及治理

低代码平台或无码平台&#xff0c;在建表单的时候&#xff0c;都是每一个表单一个json的格式文件&#xff0c;存储在Nosql数据库中。在开发的过程中&#xff0c;有以下主要的需求 1、json格式实时的转为关系数据库的格式&#xff0c;存入到关系数据库中 需要在流程结束的时候&…

Origin:如何使柱状图看起来悬空

想得到这样的一个没有下轴的柱状图&#xff0c;操作步骤如下: 1.点击下轴坐标轴 2.修改效果

Vite 原理深入剖析

1. 整体架构设计 Vite 的整体架构由几个关键模块组成,每个模块都对应具体的源码文件: 开发服务器:用于处理浏览器请求、模块解析和热更新。开发服务器的代码主要位于 src/node/server/index.ts。 模块解析与热更新:通过模块中间件拦截请求,处理代码转换与热模块替换。相关…

微处理器原理与应用篇---常见基础知识(5)

一、什么是嵌入式系统 嵌入式系统是一种以应用为中心、以计算机技术为基础、软硬件可裁剪的专用计算机系统&#xff0c;通常嵌入在其他设备中&#xff0c;用于实现特定功能。它广泛存在于消费电子、工业控制、汽车电子、医疗设备等领域&#xff0c;是现代智能设备的核心 “大脑…

Redis 8.0向量库 vs 传统向量数据库:大模型知识库开发选型全指南

在大模型知识库开发领域&#xff0c;向量数据库的选择直接影响系统的性能、扩展性和开发效率。随着Redis 8.0推出Vector Set数据结构并增强向量搜索能力&#xff0c;开发者面临新的选择困境&#xff1a;是采用传统专用向量数据库&#xff08;如Milvus、Pinecone&#xff09;&am…

偏向锁撤销为什么会触发STW?

偏向锁撤销触发STW&#xff08;Stop-The-World&#xff09;的根本原因在于其撤销操作需要​​全局内存一致性​​和​​线程状态确定性​​&#xff0c;具体机制如下&#xff1a; ⚙️ ​​一、偏向锁撤销的核心流程​​ ​​竞争触发撤销​​ 当线程B尝试获取已被线程A偏向的…

Java观察者模式详解

观察者模式(Observer Pattern)是一种行为型设计模式&#xff0c;它定义了对象之间的一对多依赖关系&#xff0c;当一个对象(主题)的状态发生改变时&#xff0c;所有依赖于它的对象(观察者)都会自动收到通知并更新。 核心概念 观察者模式包含以下核心角色&#xff1a; ‌Subje…

创世新布控球 国标

目录 结论&#xff1a; UDP模式 对讲 平台页面设置 设备tcp被动 旧的创世版本&#xff08;平台选的设备tcp被动&#xff1b;设备侧无法设置&#xff09; 新创世从2.8改到180上&#xff0c;先UDP&#xff0c;全报文 参考文档 结论&#xff1a; 对讲的tcp主被动&#xff0…

【Dify精讲】第18章:企业级功能定制

在企业级AI应用的实际部署中&#xff0c;你很快就会发现开源版本的标准功能往往无法满足复杂的业务需求。作为一个在多家企业实施AI系统的老兵&#xff0c;我深知企业级定制的痛点和需求。今天&#xff0c;让我们一起深入Dify的企业级功能定制&#xff0c;看看如何在现有架构基…

PHP $_GET 变量详解

PHP $_GET 变量详解 引言 在PHP编程中,$_GET变量是处理HTTP GET请求参数的一种非常便捷的方式。本文将详细介绍PHP $_GET变量的使用方法、特点以及在实际开发中的应用。 一、什么是$_GET变量? $_GET是一个预定义的PHP超级全局变量,用于存储HTTP GET请求中的数据。当用户…

Kafka动态配置深度解析

在分布式消息队列领域&#xff0c;Kafka凭借其高吞吐量、低延迟和可扩展性成为众多企业的首选。随着业务场景的日益复杂和数据流量的动态变化&#xff0c;静态配置已难以满足需求&#xff0c;Kafka的动态配置功能应运而生。通过动态配置&#xff0c;用户无需重启集群或中断服务…

为WIN10微软输入法的全角切换Bug禁用Shift+Space组合键

20250621 By wdhuag 目录 前言&#xff1a; 参考&#xff1a; 使用AutoHotkey屏蔽快捷键&#xff08;推荐&#xff09;&#xff1a; 使用PowerToys的键盘管理器屏蔽快捷键&#xff08;不推荐&#xff09;&#xff1a; 网上其它的方法&#xff1a; 前言&#xff1a; 是的…

Shell脚本调试与错误处理详解

在 Shell 脚本中&#xff0c;set 命令用于控制脚本的执行行为和调试选项。以下是详细解释&#xff1a; 1. set -e 和 set e set -e&#xff08;严格错误检查&#xff09;&#xff1a; 当命令返回非零退出状态&#xff08;失败&#xff09;时&#xff0c;立即退出脚本。 示例&a…

鲲鹏服务器创建Zookeeper镜像实例

配置Kafka过程中&#xff0c;少不了要使用Zookeeer&#xff0c;这里记录一下配置Zookeeper镜像实例的过程。 创建目录 mkdir -p /data/docker/zookeeper/data mkdir -p /data/docker/zookeeper/conf mkdir -p /data/docker/zookeeper/logs说明&#xff1a;data目录为数据挂载…