十一:强化学习:蒙特卡洛方法、Sarsa 与多步 Sarsa¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247483907&idx=1&sn=0f674df77aff573409529e7a62f0d8f2&chksm=f01eb17ac769386c28172b04404ef6541004f19dbe478458d9c5e8063cedc7b9376158e980e9#rd
1. 学习定位¶
第十天学习了 Bellman 方程、动态规划、策略迭代和价值迭代。那些方法默认已知完整环境模型 P 和 R。现实中更常见的情况是:智能体只能和环境交互,采样到轨迹,不知道真实转移概率和奖励函数。
第十一天进入 model-free 强化学习的基础:
不再枚举 P(s'|s,a)
-> 通过 episode 或 transition 采样学习价值
-> Monte Carlo 用完整回报更新
-> TD 用一步 bootstrap 更新
-> Sarsa 学 on-policy 动作价值
-> n-step Sarsa 在 MC 和 TD(0) 之间折中
Dynamic Programming: 已知模型,做期望 backup
Monte Carlo: 不需要模型,用完整 episode return
Robbins-Monro: 用随机样本迭代估计期望
Temporal Difference: 用 reward + next value 做 bootstrap
Sarsa: 用 (S,A,R,S',A') 更新 Q
n-step Sarsa: 用 n 步回报连接 MC 和 TD
Q-learning: 与 Sarsa 对比,理解 on-policy/off-policy 差异
2. 从 DP 到采样式学习¶
动态规划的更新形如:
它依赖完整环境模型。采样式 model-free 方法不再显式求这个期望,而是通过实际交互样本近似期望。 一次采样 transition:
一条 episode: 采样式学习的基本思想:3. 蒙特卡洛方法的核心思想¶
Monte Carlo(MC)方法通过完整 episode 的实际回报来估计价值函数。 对于状态价值:
MC 的估计方式是:收集多条 episode 中访问状态 s 后得到的回报 G_t,对这些回报取平均。
P 和 R,只需要能采样 episode。因此它适合 episodic task,也就是有自然终止的任务。必须跑完整段任务直到终止,才能算出每一步的G_t,这是 MC 最典型的特征。
4. First-visit MC 与 Every-visit MC¶
同一个 episode 中,状态 s 可能出现多次。
First-visit MC:
5. 增量均值更新¶
如果把所有回报都存下来再求平均,内存开销会增加。可以使用增量均值:
更一般地,可以用学习率 alpha:
其中:
当环境非平稳时,固定alpha 可以让新样本持续影响估计;当需要收敛到稳定均值时,通常使用逐渐减小的 alpha。
6. Robbins-Monro 随机逼近¶
Robbins-Monro 算法提供了用随机样本逼近期望或方程根的理论基础。强化学习中很多更新都可以看成随机逼近:
经典收敛条件: 第一条保证持续学习,第二条保证噪声影响逐渐可控。直观理解¶
- 条件 1:我必须一直学,不能学到一半停更
- 条件 2:学习步子必须越来越小,不能一直大跳
典型例子是:
在深度强化学习中,常使用固定学习率或调度学习率,不一定严格满足理论条件,但 Robbins-Monro 仍是理解随机更新的基础。7. 蒙特卡洛预测¶
MC prediction 的目标是:给定策略 pi,估计 V^pi 或 Q^pi。
状态价值 MC prediction:
generate episode following pi
for each state S_t in episode:
G_t = R_{t+1} + gamma R_{t+2} + ...
V(S_t) <- V(S_t) + alpha [G_t - V(S_t)]
Q(s,a),因为有了 Q 就可以不通过 P 直接改进策略。
8. 蒙特卡洛控制¶
MC control 的目标是学习最优策略。它通常遵循 GPI:
如果直接变成完全贪心策略,可能丧失探索。常用方法是 epsilon-greedy: 为了保证所有状态动作对都被充分访问,可以使用 exploring starts,或使用 epsilon-soft policy。9. On-policy MC 与 Off-policy MC¶
On-policy MC 使用同一个策略产生数据并改进该策略。典型做法是保持策略为 epsilon-greedy,使探索一直存在。
Off-policy MC 使用行为策略 b 采样数据,学习目标策略 pi。由于数据分布不一致,需要重要性采样:
Off-policy 可以利用更广泛数据,但重要性采样可能高方差,尤其在长 episode 中。
10. TD 学习的核心思想¶
Temporal Difference(TD)方法结合了 Monte Carlo 和 Dynamic Programming: - 像 MC 一样,不需要完整模型,直接从采样经验学习。
-
像 DP 一样,使用已有价值估计进行 bootstrap。
-
TD:一步就能更新,不用模型、不用等结束
TD(0) 状态价值更新:
TD target:
TD error: TD 可以在线更新,不必等到 episode 结束。11. MC 与 TD 的偏差方差权衡¶
MC target 使用真实完整回报:
它通常无 bootstrap bias,但方差较高,且必须等 episode 结束。 TD target 使用一步奖励和下一状态估计: 它方差较低,可以在线更新,但引入 bootstrap bias,因为 target 依赖当前价值估计。 这种权衡贯穿强化学习:12. Sarsa 算法¶
Sarsa 是 on-policy TD control 算法。名字来自一次更新使用的五元组:
更新公式:其中 A_{t+1} 是当前行为策略实际会选择的下一个动作。因此 Sarsa 学的是包含探索行为在内的策略价值。
13. Sarsa 的训练流程¶
典型流程:
initialize Q(s,a)
for each episode:
initialize S
choose A from S using epsilon-greedy(Q)
loop until terminal:
take action A, observe R, S'
choose A' from S' using epsilon-greedy(Q)
Q(S,A) <- Q(S,A) + alpha [R + gamma Q(S',A') - Q(S,A)]
S <- S'
A <- A'
S' 是终止状态,则 target 只等于 R。
14. 多步 Sarsa¶
多步 Sarsa 使用 n-step return:
G_{t:t+n}
= R_{t+1} + gamma R_{t+2} + ... + gamma^{n-1} R_{t+n}
+ gamma^n Q(S_{t+n}, A_{t+n})
n=1 时,它就是 Sarsa(0)。当 n 到 episode 结束时,它接近 Monte Carlo 更新。
15. Sarsa 与 Q-learning¶
Sarsa 更新目标:
其中A' 是行为策略实际采样的动作,所以 Sarsa 是 on-policy。
Q-learning 更新目标:
它学习的是贪心目标策略,即使行为策略仍在探索,所以 Q-learning 是 off-policy。
Cliff Walking 中,Sarsa 会考虑 epsilon-greedy 探索可能掉下悬崖,因此倾向更保守路径;Q-learning 学到最优贪心路径,可能贴近悬崖。
16. 关键超参数¶
常见超参数:
- alpha:学习率,控制新样本更新幅度。
-
gamma:折扣因子,控制未来奖励权重。 -
epsilon:探索率,控制随机探索比例。 -
n:多步 Sarsa 的步数。 -
episode 数量:采样规模。
调参直觉:
- alpha 太大容易震荡,太小学习慢。
-
epsilon太大策略噪声高,太小探索不足。 -
gamma越大越重视长期结果,但方差和学习难度上升。 -
n越大越接近 MC,方差上升但 bootstrap bias 减少。
17. 实现细节¶
表格型 Sarsa 通常维护:
多步 Sarsa 需要缓存最近的状态、动作和奖励: 处理终止状态时:if t+n >= T:
G = sum of rewards until terminal
else:
G = n-step rewards + gamma^n Q(S_{t+n}, A_{t+n})
18. 与 LLM、RLHF、Agent 的联系¶
LLM/RLHF 和 Agent 场景中,很难知道完整转移模型,因此更接近采样式强化学习。 对应关系:
episode: 一次完整对话、一次工具任务、一次代码修复流程
state: 当前上下文、历史消息、工具结果、任务状态
action: 生成 token、回复、工具调用、检索、追问
reward: 偏好模型评分、任务成功、人工反馈、安全分、成本惩罚
19. 常见误区¶
误区一:认为 MC 和 TD 都需要已知模型。 它们通常是 model-free 方法,通过采样学习。
误区二:认为 MC 一定比 TD 更准确。 MC target 不 bootstrap,但方差高;TD target 有 bias,但方差低、可在线更新。
误区三:把 Sarsa 和 Q-learning 的 target 写成一样。 Sarsa 用实际下一个动作 A',Q-learning 用 max_a Q(S',a)。
误区四:忽略探索策略。 控制算法如果探索不足,很多状态动作对不会被访问,Q 值无法可靠估计。
误区五:多步 Sarsa 的索引错位。 R_{t+1} 是执行 A_t 后得到的奖励,n-step return 的 reward 与 state/action 索引必须统一。
20. 核心总结¶
第十一天需要掌握的最小闭环:
Monte Carlo:
用完整 episode return G_t 更新价值。
target = G_t
Robbins-Monro:
estimate <- estimate + alpha(sample_target - estimate)
TD(0):
target = R_{t+1} + gamma V(S_{t+1})
delta = target - V(S_t)
Sarsa:
Q(S,A) <- Q(S,A) + alpha[R + gamma Q(S',A') - Q(S,A)]
on-policy
n-step Sarsa:
target = n 步奖励 + gamma^n Q(S_{t+n},A_{t+n})
Q-learning:
target = R + gamma max_a Q(S',a)
off-policy
21. 参考资料¶
-
CSDN:蒙特卡洛方法:https://blog.csdn.net/qq_64671439/article/details/135345465
-
CSDN:Robbins-Monro 算法和随机梯度下降:https://blog.csdn.net/qq_64671439/article/details/135375515
-
CSDN:从 Sarsa 讲到 Q-learning:https://blog.csdn.net/qq_64671439/article/details/136529678
-
动手学强化学习:时序差分算法:http://hrl.boyuai.com/chapter/1/%E6%97%B6%E5%BA%8F%E5%B7%AE%E5%88%86%E7%AE%97%E6%B3%95/
-
Sutton and Barto, Reinforcement Learning: An Introduction, Chapter 5-7:http://incompleteideas.net/book/RLbook2020.pdf
-
OpenAI Spinning Up: Key Concepts in RL:https://spinningup.openai.com/en/latest/spinningup/rl_intro.html
-
Hugging Face Deep RL Course:https://huggingface.co/learn/deep-rl-course/
预览时标签不可点<div class="