[RL Tutorial] 强化学习 - 李宏毅

Reforce Learning Tutorial

课程主页
Book Reading Easy-RL蘑菇书
2025video
2019video,多了PPO与Q-Learning

讲师:李宏毅

课程内容

基本概念

概念:
actor: RL训练的模型
environment:外部环境的状态s,给actor提供观测
reward: actor看到某个观测s,通过policy(策略)采样到某个动作a之后,所获取到的奖励
policy: 状态空间(State Space)​​到​​动作空间(Action Space)​​的映射,决定了智能体在任意状态 s 下如何选择动作 a
episode: 整个游戏结束称为一个episode
定义:
蒙特卡洛回报\(G_t\)

从时刻t的实际累积奖励:\(G_t = \sum_{k=t}^T \gamma^{k-t} r_k\)

状态价值函数\(V^\pi(s)\)

状态s 的长期回报期望:\(V^\pi(s) = \mathbb{E}_\pi[G_t \mid s_t = s]\)

状态动作价值函数$Q^\pi(s,a) $

在s执行a后的长期回报: \(Q^\pi(s,a) = \mathbb{E}_\pi[G_t \mid s_t = s, a_t = a]\)

优势函数\(A(s,a)\):动作比策略平均好多少

$A = Q^\pi(s,a) - V^\pi(s) $

分类:主要分为policy-based、value-based两大类 (actor-critic为两者的融合)

Policy Gradient - 方案演进

不同RL方法对于A(advantage function)有不同定义
image

Version0

错误版本:会使Actor更加“短视”
image

Version1

优于Version0,但所有时间的r都是等权重的,不合理
image

Version2

降低未来更远时刻的reward的权重,但Reward使用绝对score
image

Version3

所有reward减去baseline b,更新后的reward是相对的
image

Version3.5

将version3的baseline替换为critic预测结果V(状态价值函数)
含义:
\(A_t\) > 0 => 执行\(a_t\)比随便执行action的期望要高。
image

Version4

Adbantage Actor-Critic(A2C)
image
相对于Version3,baseline换为\(V\)从定义上更合理,价值函数\(V\)由critic模型来估计,详情参考下面A2C部分介绍,可以看出Policy后续的演进版本主要是将Q-Learning的元素融入进来,但模型数据也相应变多,训练难度变大。

Policy Gradient - On-policy Vs Off-policy

On-policy

必须用自己的经验来学习
每个iteration需要收集完整espisode的trajectory,用于训练\(\theta_{i-1}\),但不能训练\(\theta{i}\)。(因为对于曾经的“自己”有用的经验,现在不一定有用)。
image

Off-policy

看别人或者历史的自己经验也可以学习
\(\theta_{i-1}\)的数据可以用于训练\(\theta_{i}\),经典方法为PPO。详情参考下面专门介绍的一小节。

Actor-Critic

Actor-Critic属于policy-based与value-based方法的融合。相对于policy-based方法引入critic。
critic的职能:对某actor,输入观测s后,预估它将得到价值V(折扣reward的总和 的期望)。
image

Advantage Actor-Critic(A2C)

image
如上述Version4介绍,将baseline替换为价值函数V,\(G_t\)\(Q^{\pi}(s, a)\)的无偏估计,所以将其替换为\(Q^{\pi}(s, a)\),但这么做V与Q总共需要两个Network来给Policy网络学习提供Loss。经如下推导后变为仅依赖于\(V\)提供Loss,所以仅需要训练\(V\)\(\pi\)两个Network即可,实际操作由于两个网络输入都为s,可以共享backbone一些参数。
image

Asynchronous Advantage Actor-Critic(A3C)

Actor开了多个“影分身network”算出梯度给本体update参数。
image

PPO

属于actor-critic类的方法。没有p(x) => 无法求E => 构造q(x),通过q(x)间接计算E。这里的q(x)即为历史数据分布,PPO允许旧数据有限复用,但需要:

  1. 使用重要性权重,修正动作概率分布差异;
  2. 限制更新幅度,平衡​​数据复用​​和​​训练稳定性​​;

Importance Sampling
重要性采样​​:,但需约束分布差异(PPO通过裁剪实现)。
image
需要sample很多次,并且p与q不能差太多,才能实际保证期望是等价的。
image
image
PPO/TRPO
核心思想保证是\(\theta\)\(\theta'\)两者的行为尽量一致,TRPO通过约束方式确保这一点,而PPO直接将两者行为distribution距离加入Loss中。
image
PPO Algorithm

  • \(\theta'\)或者说\(\theta^k\)与环境互动的数据可以多次更新\(\theta\)
  • 根据KL与预设阈值相对关系,动态调整KL所占用权重;
  • 改进版本:裁剪策略更新幅度(Clipping)替代KL约束
    image
    image

如何理解PPO中梯度函数?
只需要理解重要性采样系数与优势函数即可,min与clip用来截断梯度,防止policy模型与old模型偏离太远,使得经验数据失效。
当 A > 0时,系数过大会触发\(1 + \epsilon\)截断;
当 A < 0时,系数过小会触发\(1 - \epsilon\)截断;

PPO in LLM中,如何计算优势函数?
通常GAE (广义优势函数来计算)

\[A_{t}^{GAE(\gamma,\lambda)}=\sum_{l=0}^{T-t}(\gamma\lambda)^{l}\delta_{t+l} \]

其中,\(δ_t = r_t + γV(s_{t+1}) - V(s_t)\) 是TD误差。
超参数λ用来平衡方差与偏差:

当 λ=0:退化为单步 TD 误差(低方差,高偏差)。
当 λ=1:退化为蒙特卡洛回报(高方差,低偏差)。

从GAE公式可看出,计算每个token的优势函数都需要未来每时刻对应的r与V,实际实现过程通常先生成​​完整文本序列​​,再倒序计算每个token时刻的优势。

def compute_gae(rewards, values, gamma=0.99, lambda_=0.95):
    deltas = rewards + gamma * values[1:] - values[:-1]  # δ_t = r_t + γV(s_{t+1}) - V(s_t)
    advantages = []
    advantage = 0
    for delta in reversed(deltas):  # 从后向前计算
        advantage = delta + gamma * lambda_ * advantage
        advantages.append(advantage)
    return list(reversed(advantages))  # 反转回正常顺序

如何Train Critic?

MC(Monte-Carlo)
每个episode之后,都可收集到训练数据。
image
TD(Temporal-Difference)
如果游戏很长,甚至一直不结束,则需要TD方法。
=> 如何不用完整episode就能训练呢?
=> 已知\(s_t\), \(a_t\), \(r_t\), \(s_{t+1}\),应当Critic预测的应当满足如下递归公式约束。
image
MC vs TD
同样数据,MC与TD计算结果可能不同(MC -> 0; TD -> 3/4)
image

Q-Learning

假设已有actor \(\pi\),预测价值,属于value-based方法。早期用得比较多,但后来PPO出现后actor-critic方法开始流行。
分为value function \(V^{\pi}\),与state-action value function(s)\(Q^{\pi}(s, a)\): 假设在state s,强制采取action a (虽然最终不一定采取a ),对应的value function。
image
image
实战经验1:Target Network
将Target Network的参数固定
image
实战经验2:Exploration
Actor需要具备随机性,才能采样出多样的Trajectory,Actor才能收集到更好的经验。=> 专门设2一些随机性。
image
实战经验3:Replay Buffer
本来\(Q^{\pi}\)\(\pi\)关联,但Buffer中实际上有其它policy的数据,虽然从理论上不符合定义,但这些历史数据可能增加Training数据的多样性。
image
Q-Learning Algorithm
image

Continuous Actions
上述介绍action通常是离散动作,但很多场景action是continus,比如方向盘转多少度。
解决:1.采样;2.求最优a;
image
解决3:仅预测分布,让该分布的mean与a接近。
image

RL训练技巧

Reward Shaping

Sparse Reward问题:大部分情况没有Reward,如果episode之后才有Reward,例如 下围棋、RL初期冷启动。
=> 定义额外Reward -> 称为Reward Shaping
Curiosity
给agent加上好奇心,如果它发现有意义的新发现,就给额外奖励。

No Reward

很多真实场景无法定义Reward,也无法定义出明确的“额外Reward”。
Imitation Learning
image
Inverse Reinforcement Learning
利用收集到的Expert经验,用IRL学出Reward Function,就可以用来训练Actor了。与GAN的工作机制比较像。
image
IRL的训练:
image

Q&A

Q: 纯policy-based与actor-critic方法的区别?
A:

维度 Policy-Based Actor-Critic
是否依赖价值函数 纯策略梯度 必须用Critic模型预测 V(s)
梯度信号来源 蒙特卡洛回报 Gt 价值函数 A(s,a)
方差 vs 偏差 高方差,无偏差 低方差,可能引入偏差
样本效率 低(需大量轨迹) 高(复用经验)
典型算法 REINFORCE PPO、A3C、SAC
posted @ 2025-07-05 14:17  fariver  阅读(96)  评论(0)    收藏  举报