目录
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 方法,其数据利用率低的核心原因在于策略更新与数据收集的强耦合性。以下是具体分析:
根本原因:策略更新导致数据失效
-
策略更新即数据淘汰
-
每次策略
更新后(参数
改变),新策略的动作分布
与旧策略
不同。
-
旧策略收集的数据
服从旧分布
,而更新后需要的是新分布
下的数据。
-
结果:旧数据立即失效,必须重新采样。
-
-
数学本质
策略梯度更新依赖当前策略的期望:若用旧策略
的数据估计期望,需引入重要性权重:
但原生AC算法,是一个on-policy算法,直接丢弃旧数据,不进行修正。
也就是: target policy == behaivor policy,那么当每次target policy发生变化时,都需要进行重新采样,如何转化为off-policy?从而提高数据利用率:可以通过imortance sampling来实现
应用场景:
1. 离策略值函数估计
-
问题:目标策略
的期望回报
无法直接采样(如目标策略是确定性策略,而采样策略是探索性策略)。
-
解决方案:
使用行为策略生成的轨迹样本,通过重要性权重修正分布偏差:
其中
是从时刻 $t$ 到终止时刻 $T$ 的累积重要性权重。
2. 离策略策略优化
-
算法示例:
-
Off-policy Actor-Critic(如ACER)
-
Q-Learning的方差缩减(使用加权重要性采样)
-
-
原理:
通过重要性权重重用旧策略的样本更新新策略,减少环境交互次数,提升样本效率。
3. 经验回放(Experience Replay)
-
场景:
在DQN等算法中,回放池中的经验由历史策略生成,与当前策略分布不一致。 -
解决方案:
对每个样本计算重要性权重
,修正Q值更新:
4. 策略梯度方法
-
问题:
策略梯度依赖当前策略样本。
-
重要性采样作用:
重用旧策略的样本计算梯度:
应用在PPO、TRPO等算法中。
具体场景分析
场景1:连续策略更新
-
AC流程:
收集数据 → 更新Critic → 更新Actor → 丢弃数据 → 重新收集数据
-
效率瓶颈:
90%的时间花在数据收集上,仅10%用于计算更新。 -
例:训练一个Atari游戏,AC需2000万帧数据,而off-policy的DQN仅需1000万帧。
场景2:高维动作空间
-
问题:
高维空间(如机器人控制)需大量样本覆盖动作分布,但AC每次更新后旧样本作废。 -
后果:
智能体陷入局部最优,需额外探索新区域,进一步降低效率。
为什么AC不能直接复用数据?
-
理论限制:
策略梯度定理要求期望基于当前策略分布($\mathbb{E}{a \sim \pi{\theta}}$)。 -
实践风险:
若强行复用旧数据,梯度估计偏差随策略差异增大而爆炸(见下图)。
| 策略差异 (KL散度) | 梯度偏差 | 效果 | |-------------------|----------|--------------------| | 小 (<0.01) | 低 | 可用 | | 中 (0.01~0.1) | 中 | Q值估计失真 | | 大 (>0.1) | 高 | 训练崩溃 |
改进方案:向off-policy演化
为提升数据利用率,现代AC算法引入重要性采样或混合策略:
算法 | 核心改进 | 数据利用率 |
---|---|---|
PPO | 重要性采样 + 权重裁剪 (Clip) | 中 (复用少量旧数据) |
SAC | 最大熵框架 + 经验回放 | 高 (完全off-policy) |
TD3 | 双Q网络 + 延迟更新 + 经验回放 | 高 (完全off-policy) |
A3C | 异步并行采样 (数据并行) | 低 (但加速采样过程) |
注:PPO虽复用数据,但其重要性权重
的方差限制了复用次数(通常仅3-10次)。
原理:
根据分布来生成样本
:
期望:,
当, 平均值可以近似期望:
如果样本分布发生变化,变为分布
那么期望就变为:
问题:
在迭代过程中,策略的分布发生变化(p1 -> p0),如何还能够利用之前生成的数据(p1)来进行继续学习呢? 如果能够基于behavior policy 产生的样本来估计
(其中
是目标policy)。
也就是基于来估计
我们就可以使用重要性采样,对分布数据进行采样:
这样我们可以通过来估计
如何估计?
定义:
then:
所以通过可以成功近似p_0分布:
其中 就是重要性权重。
- 如果两者相等,那么重要性权重就是1,
- 如果,那么就代表
更容易被
采样到,而不是
,所以要加大权重,这样的话就可以加强样本的重要性。
为什么已知,为什么不直接期望?
这样的话,通过重要性采样,对分布的数据进行采样,就可以近似
分布:
具体算法:
beta对应于p1
应用到梯度上升算法中:
相比AC失去探索性,由于分母beta不可变:
重要性采样的核心价值
场景 | 作用 |
---|---|
离策略评估 | 用行为策略样本估计目标策略的值函数 |
策略优化 | 重用历史样本更新策略,提升样本效率 |
经验回放 | 修正回放池样本的分布偏移 |
方差缩减 | 结合加权重要性采样稳定训练 |
关键点:重要性采样是强化学习中连接行为策略与目标策略的桥梁,其核心价值在于重复利用历史数据,显著提升采样效率,但需谨慎处理方差问题。