当前位置: 首页 > 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.lryc.cn/news/587370.html

相关文章:

  • 在高并发场景下,仅依赖数据库机制(如行锁、版本控制)无法完全避免数据异常的问题
  • 用豆包AI云盘保存和分析录音文件
  • 维基艺术图片: 数据标注 (2)
  • java: DDD using oracle 21c
  • 树莓派5-ollama-linux-arm64.tgz 下载
  • KL散度:信息差异的量化标尺 | 从概率分布对齐到模型优化的核心度量
  • 强化学习初探及OREAL实践
  • Leaflet面试题及答案(61-80)
  • Flink数据流高效写入MySQL实战
  • XCZU2CG-2SFVC784I Xilinx FPGA AMD Zynq UltraScale+ MPSoC
  • Vivado ILA抓DDR信号(各种IO信号:差分、ISERDES、IOBUFDS等)
  • 六、深度学习——NLP
  • 无缝衔接直播流体验
  • 早期 CNN 的经典模型—卷积神经网络(LeNet)
  • 板凳-------Mysql cookbook学习 (十一--------8)
  • 【深度学习新浪潮】什么是新视角合成?
  • STM32-第五节-TIM定时器-1(定时器中断)
  • JAVA并发——synchronized的实现原理
  • 特征选择方法
  • 一文打通MySQL任督二脉(事务、索引、锁、SQL优化、分库分表)
  • GraphRAG Docker化部署,接入本地Ollama完整技术指南:从零基础到生产部署的系统性知识体系
  • AEC线性处理
  • 【iOS】方法与消息底层分析
  • 【设计模式】命令模式 (动作(Action)模式或事务(Transaction)模式)宏命令
  • phpMyAdmin:一款经典的MySQL在线管理工具又回来了
  • 【RA-Eco-RA6E2-64PIN-V1.0 开发板】ADC 电压的 LabVIEW 数据采集
  • 第一个Flink 程序 WordCount,词频统计(批处理)
  • git实操
  • 鸿蒙项目构建配置
  • 区分三种IO模型和select/poll/epoll