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

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.xdnf.cn/news/15379.html

相关文章:

  • 九、官方人格提示词汇总(上)
  • 构造函数延伸应用
  • 数据结构 Map和Set
  • 一些git命令
  • SQL预编译:安全高效数据库操作的关键
  • Linux操作系统之信号概念启程
  • 【读书笔记】《C++ Software Design》第七章:Bridge、Prototype 与 External Polymorphism
  • IPC框架
  • [2025CVPR]GNN-ViTCap:用于病理图像分类与描述模型
  • 晋升指南-笔记
  • 【Docker基础】Dockerfile指令速览:环境与元数据指令详解
  • React强大且灵活hooks库——ahooks入门实践之状态管理类hook(state)详解
  • 【C++】多线程同步三剑客介绍
  • AutoLabor-ROS-Python 学习记录——第一章 ROS概述与环境搭建
  • leetGPU解题笔记(1)
  • STM32-第六节-TIM定时器-2(输出比较)
  • 【芯片笔记】ADF4159
  • 【论文阅读】AdaptThink: Reasoning Models Can Learn When to Think
  • 【Java Stream】基本用法学习
  • sql初学见解
  • 2025上海市“星光计划“信息安全管理与评估赛项二三阶段任务书
  • Spring高级特性——反射和动态代理的性能优化
  • Python---上下文管理器
  • 移动端设备本地部署大语言模型(LLM)
  • 无需付费即可利用AI消除音频噪声和生成字幕
  • 浏览器渲染原理与性能优化全解析
  • 【零基础入门unity游戏开发——unity3D篇】3D光源之——unity反射和反射探针技术
  • 在线事务处理OLTP(Online Transaction Processing)负载是什么?
  • 08.如何正确关闭文件
  • QML 自定义Model基础之QAbstractListModel