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

Actor-Critic重要性采样原理

目录

AC的数据低效性:

根本原因:策略更新导致数据失效

应用场景:

1. 离策略值函数估计

2. 离策略策略优化

3. 经验回放(Experience Replay)

4. 策略梯度方法

具体场景分析

场景1:连续策略更新

场景2:高维动作空间

为什么AC不能直接复用数据?

改进方案:向off-policy演化

原理:

重要性采样的核心价值


在强化学习中,重要性采样(Importance Sampling) 主要用于解决离策略(Off-policy)学习中的分布偏移问题。其核心应用场景是通过行为策略(Behavior Policy) 收集的样本,来估计目标策略(Target Policy) 的期望值。

AC的数据低效性:

Actor-Critic(AC)算法作为典型的 on-policy 方法,其数据利用率低的核心原因在于策略更新与数据收集的强耦合性。以下是具体分析:


根本原因:策略更新导致数据失效

  1. 策略更新即数据淘汰

    • 每次策略 $\pi_{\theta}$ 更新后(参数$\theta$改变),新策略的动作分布 $\pi_{\theta_{\text{new}}}$ 与旧策略 \pi_{\theta_{\text{old}}} 不同

    • 旧策略收集的数据 $(s, a, r, s')$ 服从旧分布 $\pi_{\theta_{\text{old}}}(a|s)$,而更新后需要的是新分布 $\pi_{\theta_{\text{new}}}(a|s)$ 下的数据。

    • 结果:旧数据立即失效,必须重新采样。

  2. 数学本质
    策略梯度更新依赖当前策略的期望:

    若用旧策略$\pi_{\theta_{\text{old}}}$ 的数据估计期望,需引入重要性权重:

    但原生AC算法,是一个on-policy算法,直接丢弃旧数据,不进行修正。

\bigtriangledown_{\theta} J(\theta_t)=\Xi _{S \sim \eta ,A\sim \pi}[*]

也就是: target policy == behaivor policy,那么当每次target policy发生变化时,都需要进行重新采样,如何转化为off-policy?从而提高数据利用率:可以通过imortance sampling来实现

应用场景:

1. 离策略值函数估计
  • 问题:目标策略 $\pi$的期望回报 $\mathbb{E}_{\pi}[G_t]$ 无法直接采样(如目标策略是确定性策略,而采样策略是探索性策略)。

  • 解决方案
    使用行为策略 $b$生成的轨迹样本,通过重要性权重修正分布偏差:

    其中 $\rho_t$ 是从时刻 $t$ 到终止时刻 $T$ 的累积重要性权重。

2. 离策略策略优化
  • 算法示例

    • Off-policy Actor-Critic(如ACER)

    • Q-Learning的方差缩减(使用加权重要性采样)

  • 原理
    通过重要性权重重用旧策略的样本更新新策略,减少环境交互次数,提升样本效率。

3. 经验回放(Experience Replay)
  • 场景
    在DQN等算法中,回放池中的经验由历史策略生成,与当前策略分布不一致。

  • 解决方案
    对每个样本 $(s,a,r,s')$ 计算重要性权重 $\frac{\pi(a|s)}{b(a|s)}$,修正Q值更新:

4. 策略梯度方法
  • 问题
    策略梯度$\nabla_\theta J(\theta) = \mathbb{E}{\pi\theta}[\nabla_\theta \log \pi_\theta(a|s) Q^{\pi}(s,a)]$依赖当前策略样本。

  • 重要性采样作用
    重用旧策略 $\pi_{\theta_{\text{old}}}$ 的样本计算梯度:

    应用在PPOTRPO等算法中。

具体场景分析

场景1:连续策略更新
  • AC流程
    收集数据 → 更新Critic → 更新Actor → 丢弃数据 → 重新收集数据

  • 效率瓶颈
    90%的时间花在数据收集上,仅10%用于计算更新。

  • :训练一个Atari游戏,AC需2000万帧数据,而off-policy的DQN仅需1000万帧。

场景2:高维动作空间
  • 问题
    高维空间(如机器人控制)需大量样本覆盖动作分布,但AC每次更新后旧样本作废。

  • 后果
    智能体陷入局部最优,需额外探索新区域,进一步降低效率。

为什么AC不能直接复用数据?

  1. 理论限制
    策略梯度定理要求期望基于当前策略分布($\mathbb{E}{a \sim \pi{\theta}}$)。

  2. 实践风险
    若强行复用旧数据,梯度估计偏差随策略差异增大而爆炸(见下图)。

| 策略差异 (KL散度) | 梯度偏差 | 效果               |
|-------------------|----------|--------------------|
| 小 (<0.01)        | 低       | 可用               |
| 中 (0.01~0.1)     | 中       | Q值估计失真        |
| 大 (>0.1)         | 高       | 训练崩溃           |

改进方案:向off-policy演化

为提升数据利用率,现代AC算法引入重要性采样混合策略

算法核心改进数据利用率
PPO重要性采样 + 权重裁剪 (Clip)中 (复用少量旧数据)
SAC最大熵框架 + 经验回放高 (完全off-policy)
TD3双Q网络 + 延迟更新 + 经验回放高 (完全off-policy)
A3C异步并行采样 (数据并行)低 (但加速采样过程)

:PPO虽复用数据,但其重要性权重 $\frac{\pi_{\text{new}}}{\pi_{\text{old}}}$ 的方差限制了复用次数(通常仅3-10次)。

原理:

根据p_0分布来生成样本x_i

期望:\mathbf{E}[x_i] = \mathbf{E}[X]var [x_i] = var[X]

n \rightarrow \infty, 平均值可以近似期望:\bar{x} = \frac{1}{n}\sum_{i=1}^{n}x_i \rightarrow \mathbf{E}[X]

\mathbf{E}[\bar{x}] = \mathbf{E}[X],var[\bar{x}]=\frac{1}{n}var[X]

如果样本分布发生变化,变为分布p_1

p_1(X=+1)=0.8, p_1(X=-1)=0.2.

那么期望就变为:

\mathbf{E}_{X \sim p_1}[X] = (+1).0.8 + (-1).0.2 = 0.6

\bar{x} = \frac{1}{n}\sum_{i=1}^{n}x_i \rightarrow \mathbf{E}_{X \sim p_1}[X]=0.6 \neq \mathbf{E}_{X \sim p_0}[X]

问题:

在迭代过程中,策略的分布发生变化(p1 -> p0),如何还能够利用之前生成的数据(p1)来进行继续学习呢? 如果能够基于behavior policy \beta 产生的样本来估计\mathbf{E}_{A \sim \pi}[*](其中\pi是目标policy)。

也就是基于{x_i} \sim p1来估计\mathbf{E}_{X \sim p_0}[X] 

我们就可以使用重要性采样,对p_1分布数据进行采样:

\mathbf{E}_{X \sim p_0}[X] = \sum_{x}^{}p_0(x)x = \sum_{x}^{}p_1(x)\frac{p_0(x)}{p_1(x)}x = \mathbf{E}_{X \sim p_1}[f(X)]

这样我们可以通过\mathbf{E}_{X \sim p_1}[f(X)]来估计\mathbf{E}_{X \sim p_0}[f(X)]

如何估计\mathbf{E}_{X \sim p_1}[f(X)]

定义:\bar{f} = \frac{1}{n}\sum_{i=1}^{n}f(x_i ) \ where \ x_i \sim p_1

then:

\mathbf{E}_{X \sim p_1}[\bar{f}] = \mathbf{E}_{X \sim p_1}[f(X)]

var_{X \sim p_1}[\bar{f}] = \frac{1}{n}var_{X \sim p_1}[f(X)]

所以通过\bar{f}可以成功近似p_0分布:

\bar{f} = \frac{1}{n}\sum_{i=1}^{n}f(x_i ) =\frac{1}{n}\sum_{i=1}^{n}\frac{p_0(x_i)}{p_1(x_i)}x_i 

其中\frac{p_0(x_i)}{p_1(x_i)} 就是重要性权重。

- 如果两者相等,那么重要性权重就是1,\bar{f} = \bar{x}

- 如果p_0(x_i) \geq p_1(x_i),那么就代表x_i更容易被p_0采样到,而不是p_1,所以要加大权重,这样的话就可以加强样本的重要性。

为什么p_0(x)已知,为什么不直接期望?

这样的话,通过重要性采样,对p_1分布的数据进行采样,就可以近似p_0(x)分布:

具体算法:

beta对应于p1

应用到梯度上升算法中:

相比AC失去探索性,由于分母beta不可变:

重要性采样的核心价值

场景作用
离策略评估用行为策略样本估计目标策略的值函数
策略优化重用历史样本更新策略,提升样本效率
经验回放修正回放池样本的分布偏移
方差缩减结合加权重要性采样稳定训练

关键点:重要性采样是强化学习中连接行为策略与目标策略的桥梁,其核心价值在于重复利用历史数据,显著提升采样效率,但需谨慎处理方差问题。

http://www.dtcms.com/a/278083.html

相关文章:

  • java valueOf方法
  • 【算法】贪心算法入门
  • SwiftUI 7 新 WebView:金蛇出洞,网页江湖换新天
  • 一些git命令
  • 若依框架集成阿里云OSS实现文件上传优化
  • 对于muduo我自己的理解
  • UniHttp生命周期钩子与公共参数实战:打造智能天气接口客户端
  • flask校园学科竞赛管理系统-计算机毕业设计源码12876
  • SPSSPRO:数据分析市场SaaS挑战者的战略分析
  • JAVA并发——什么是AQS?
  • Mapbox GL初探
  • 【unitrix】 5.0 第二套类型级二进制数基本结构体(types2.rs)
  • 16.使用ResNet网络进行Fashion-Mnist分类
  • css如何同时给元素设置背景和背景图?
  • 每日算法刷题Day47:7.13:leetcode 复习完滑动窗口一章,用时2h30min
  • 说实话,统计分析用Python这5个第三方库就够了
  • AutoLabor-ROS-Python 学习记录——第一章 ROS概述与环境搭建
  • PortsSwiggerLab: SSRF with blacklist-based input filter
  • JS进阶-day1 作用域解构箭头函数
  • Spring AI 项目实战(十六):Spring Boot + AI + 通义万相图像生成工具全栈项目实战(附完整源码)
  • NO.5数据结构串和KMP算法|字符串匹配|主串与模式串|KMP|失配分析|next表
  • pthread_mutex_unlock函数的概念和用法
  • 大规模电商系统分库分表实战经验分享
  • NFSV4锁机制(三)
  • 编程技术杂谈2.0
  • DVWA靶场通关笔记-XSS DOM(High级别)
  • 垃圾收集器-Serial Old
  • CVE-2022-0609
  • vue2入门(1)vue核心语法详解复习笔记
  • 【开源项目】网络诊断告别命令行!NetSonar:开源多协议网络诊断利器