强化学习基础

强化学习基础

  • Action Space
  • Reward
  • Trajectory
  • Return(回报)

E(x)xp(x)=xxp(x)1ni=1nxxp(x)E(x)_{x \sim p(x)} = \sum_{x} x \cdot p(x) \approx \frac{1}{n} \sum_{i=1}^{n} x \quad x \sim p(x)

目的:训练一个Policy网络π\pi,在所有状态S下,给出相应的Action,得到Return的期望最大

目的:训练一个Policy网络π\pi,在所有的Trajectory中,给出相应的Action,得到Return的期望最大。

也就是最大化:E(R(τ))τPθ(τ)=τR(τ)Pθ(τ)E(R(\tau))_{\tau \sim P_\theta(\tau)} = \sum_{\tau} R(\tau) P_\theta(\tau), 可以使用梯度上升法。

Pasted image 20250219160128

在强化学习中,我们认为下一个状态的概率仅由当前状态和要做的动作决定,所以Pθ(τn)P_\theta(\tau^n)可以被表示为:

Pθ(τn)=t=1Tnp(snsn1,an1)Pθ(antsnt)P_\theta(\tau^n) = \prod_{t=1}^{T_n}p(s_n|s_{n-1},a_{n-1})P_\theta(a_n^t|s_n^t)

由于pp一般为常数,可以被忽略,继续化简上式可得

Pasted image 20250219161102

该导数的直观意义是,如果 R(τn)R(\tau^n) 是大于0的,则增大所有执行当前trajectory动作的概率(Pθ(antsnt)P_\theta(a_n^t|s_n^t)),反之减少。该算法被称为 Policy gradient 算法。

Pasted image 20250219161542

Policy Gradient是一个on policy的算法,每次让agent完n轮游戏,然后用n轮的trajectory更新策略。

缺点:收集的数据只被用于更新一回,大量数据收集,导致时间效率低。

可以优化的地方

  • R(τn)R(\tau^n)添加一个折扣因子。(一个动作只能影响后面的reward,且后面的reward我们应该尽快拿到更好,所以添加了一个折扣因子)
  • 在好的局势下,所有动作的概率都会被提升,坏的局势下所有动作的概率都会被减少。添加一个baseline(相减)可以让部分动作概率提升,部分动作概率减少,使学习收敛更迅速。

具体优化见下图:

Pasted image 20250219162852

接下来回顾三个常见的强化学习新概念:

Pasted image 20250219163002

然后如上图所示,可以使用Advantage Function替换掉原式子中的 RtnB(Snt)R_t^n-B(S_n^t),但是我们此时在实现的过程中还是需要训练两个神经网络分别拟合Action-Value Function以及State-Value Function。有没有办法只训练一个网络呢?

Pasted image 20250219163653

观察红框不难发现,此时Advantage Function中只含有State-Value Function我们只需要训练一个网络即可。

为了使右侧式子表示的更为简洁,定义 δ\delta 如下图所示:

Pasted image 20250219164028

从上图不难理解,随着优势函数阶数的增加,估计的偏差越小,方差越大。为了更好的估计真实的优势函数(平衡方差和偏差),我们下面引入GAE算法(如下图所示)。

Pasted image 20250219164523

最后总结下上面推到出来最为重要的几个公式(见下图):

  • δ\delta
  • GAE估计的优势函数
  • 优化后的策略目标

Pasted image 20250219164919

其中,状态价值函数使用神经网络进行拟合,和策略函数共用参数。(红色label代表的是拟合估计的V和真实的折扣回报值)

PPO

之前On Policy所存在的问题已经简单介绍过了,主要是采集的数据只能够用于训练一次神经网络,有点浪费,时间效率低。

PPO对这个On Policy进行了优化,让每次采样的数据可以被用于训练多次来优化网络参数。

重要性采样:如何让AI「吃老本」还不翻车?

重要性采样在PPO中的作用,可以理解为“用旧经验学新招,但避免翻车”。比如你学骑自行车时,用之前摔跤的经验调整动作,但又不让新动作和旧动作差别太大。PPO通过给旧策略的数据加上“调整系数”(重要性权重),让新策略能复用这些数据更新自己,同时限制调整幅度(比如用clip函数“剪掉”过大的改动),防止步子迈太大导致策略崩坏。这样既能高效利用数据,又能稳定训练。

1. 从On-Policy的痛点说起

想象你正在学骑自行车(训练策略θ),传统On-Policy算法就像一位严格的教练:

  • 规则:每次调整动作(更新θ)后,必须重新上路骑行(采样新轨迹τ∼pθ),记录摔倒的姿势。
  • 问题:哪怕只是微调了车把角度,之前所有摔倒的数据全部作废。效率极低,且95%的时间浪费在重复采样上!

此时,一个灵魂拷问诞生了:能否用历史摔倒数据(旧策略)指导新动作(新策略)?
答案就是重要性采样(Importance Sampling)。

2. 重要性采样的直观意义

2.1 二手书定价的统计哲学

假设你想计算某绝版书在书店的均价(分布p(x)),但只能从二手市场(分布q(x))收集数据。直接计算二手市场的均价会偏高,因为绝版书被炒高价。

解决方法:为每本书的价格乘上一个修正系数(= 书店定价/二手市场定价)。例如:

  • 某书在书店原价50元,二手市场卖100元,则修正系数=0.5
  • 最终统计时,这本书的贡献是:100元 × 0.5 = 50元(还原真实价值)

这里的修正系数就是重要性权重 p(x)q(x)\frac{p(x)}{q(x)},它抵消了分布差异带来的偏差。

2.2 回到自行车:如何用旧动作学新招?

假设旧策略θ_old的摔倒数据中有一个动作:“腿抬高10cm时摔倒”。现在新策略θ想尝试“腿抬8cm”。直接复用旧数据会有两个问题:

  1. 偏差:旧数据中“抬10cm”的频率可能和新策略“抬8cm”的实际概率不同。
  2. 风险:如果盲目参考旧动作,可能学得比原来更差(梯度爆炸)。

重要性采样的作用

  • 给每个旧动作加上一个可信度标签(重要性权重=新策略产生该动作的概率 / 旧策略的概率)。
  • 如果新策略θ认为“抬10cm”的概率是旧策略的80%,则这个动作的梯度更新权重就是0.8。

效果:相当于教练说:“你过去抬10cm摔了,但现在你只打算抬8cm,所以这个旧动作的参考价值打8折。”

3. 数学视角:期望修正与概率比

3.1 原始On-Policy梯度

Rˉθ=Eτpθ(τ)[R(τ)logpθ(τ)]\nabla \bar{R}_\theta = \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ R(\tau) \nabla \log p_\theta(\tau) \right]

  • 痛点:每次更新θ后,必须重新采样τ∼pθ(τ),成本高昂。
3.2 重要性采样改造后的梯度

Rˉθ=Eτq(τ)[pθ(τ)q(τ)R(τ)logpθ(τ)]\nabla \bar{R}_\theta = \mathbb{E}_{\tau \sim q(\tau)} \left[ \frac{p_\theta(\tau)}{q(\tau)} R(\tau) \nabla \log p_\theta(\tau) \right]

  • 魔法:采样分布从新策略pθ切换到旧策略q,但通过乘上概率比 pθ(τ)q(τ)\frac{p_\theta(\tau)}{q(\tau)} 修正偏差。
  • 物理意义
    • 若新策略pθ比旧策略q更倾向于某个τ(即pθq>1\frac{p_\theta}{q} >1),则放大该τ的梯度贡献。
    • 反之则缩小,甚至忽略(如PPO的Clip操作)。

4. 重要性采样的隐患:方差爆炸

4.1 为什么不能无脑复用旧数据?

回到二手书例子:如果某书在书店原价50元,但二手市场标价10,000元(概率比=0.005),则修正后的价格为10,000×0.005=50元。看似合理,但问题在于:

  • 若这本书在二手市场被频繁交易(采样多),则它会主导整体均价的计算,导致统计结果波动极大

对应到RL中:若新旧策略在某个轨迹τ上的概率差异极大(例如pθq=100\frac{p_\theta}{q} =100),则少量τ的样本会主导梯度更新,使得训练不稳定。

4.2 PPO的智慧:给「吃老本」加上安全绳

PPO的解决方案简单粗暴——限制重要性权重的幅度

  1. 计算原始权重:r(θ)=pθ(τ)q(τ)r(\theta) = \frac{p_\theta(\tau)}{q(\tau)}
  2. 用Clip函数裁剪:rclip=clip(r(θ),1ϵ,1+ϵ)r_{\text{clip}} = \text{clip}(r(\theta), 1-\epsilon, 1+\epsilon)

直观解释

  • 教练说:“旧动作和新动作差异超过±10%的部分我不认,避免你乱改动作摔得更惨。”
  • 数学上,这限制了梯度更新的最大步长,避免单一样本主导学习过程。

5. 总结:重要性采样的双重价值

  1. 高效性:打破On-Policy的采样枷锁,让AI能复用历史数据,大幅提升训练效率。
  2. 安全性:通过概率比和Clip机制,在「大胆创新」和「谨慎迭代」之间找到平衡,避免策略崩溃。

如同学骑自行车

  • 看自己过去的摔倒录像(重要性采样)比每次都真摔(On-Policy)更高效。
  • 但模仿时需注意:“上次抬腿10cm摔了,这次试试8cm,但绝不突然抬腿20cm(Clip限制)”。

目标函数更新

理解了重要性采样,我们便可用其来更新我们的目标函数,将原来On-Policy的学习转为Off-Policy。

Pasted image 20250219171232

Pasted image 20250219171407

其中第一步是原始的On-Policy损失函数,第二步变为了Off-Policy损失函数(θ\theta'为参考策略,参考策略用于采样,并可以用于多次训练优化θ\theta)。最后的Loss就是PPO算法的损失函数。

但是对于参考策略和现有的策略还是有一些限制,就是参考策略和现有的策略不能相差太大。不然训练效果会非常不好。

可以通过下面的方式进行约束:

  • 增加KL散度正则化项进行约束
  • 使用CLIP函数,防止训练的策略和参考的策略偏差过大

Pasted image 20250219172001


本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。