面试准备(根据面试经验更新)
RL部分
online offline onpolicy offpolicy
on-policy:“更新策略”的数据,必须是当前这一个策略自己刚刚采样出来的
Off-policy:“不是当前策略产生的数据”来更新当前策略.旧策略(replay buffer)
Online RL:智能体可以不断与环境交互,边收数据边更新策略。
offline RL:训练开始前,数据就已经固定了,你不能再和环境交互。其他行为策略、人类示范、离线数据
online + off-policy + replay。用目标Π收集数据,更新目前的策略。
on-policy:SARSA、PPO
off-policy:Q-learning、DQN
强化学习的一些宏观的基础
分类
1)按是否有模型
Model-free:不显式建模环境(DQN、PPO、SAC)
Model-based:学习或已知环境模型,用于规划(MPC、Dreamer)
[学或已知环境的 transition:P(s′∣s,a)和R(s,a),从当前状态 s,用模型 rollout 多步未来,选择 期望累积奖励最高的动作]
(2)按策略更新方式
On-policy:用当前策略采样并更新(REINFORCE、PPO)
Off-policy:用任意策略数据更新目标策略(Q-learning、DQN、SAC)
(3)按学习目标
Value-based:学习价值函数(Q-learning、DQN)
Policy-based:直接学习策略(REINFORCE)
Actor–Critic:两者结合(A2C、PPO、SAC)

马尔科夫性:一个随机过程的未来状态的概率分布只依赖于当前状态,而不依赖于过去的所有历史状态。
不满足怎么办:扩状态或加记忆(把历史拼进状态,使问题重新满足马尔科夫性)(用内部记忆近似完整状态,使用 RNN / LSTM / GRU学一个 belief state)
Recurrent State:Recurrent state 是指在某个策略下,agent 一旦进入该状态,就有概率 1 在未来无限次回到它。在遍历型 MDP 中,所有状态都是 recurrent。
强化学习解决什么问题,目标,
强化学习解决的是 序列决策问题,即当前决策会影响未来状态和长期回报 的问题。
强化学习的目标是 学习一个策略,使期望累计回报最大化。
贝尔曼方程
当前价值 = 即时回报 + 折扣后的未来价值期望。【价值的递归定义】
状态价值函数的贝尔曼方程:策略 𝜋下,状态价值等于对所有动作和下一状态的期望回报。
动作—状态价值函数的贝尔曼方程:执行动作 𝑎后的价值等于即时奖励加上下一状态在策略 𝜋下的期望动作价值

最优状态价值函数的贝尔曼最优方程:最优价值等于选择能带来最大长期回报的动作。

最优动作—状态价值函数的贝尔曼最优方程:执行动作 𝑎后,假设之后始终采取最优动作。
为什么最优值函数和最优策略是等价的?:
最优策略可以直接由最优值函数通过贪心选择得到。
基于值函数的强化学习(Value-Based)

动态规划(DP)
Monte Carlo(MC)
First-Visit MC:只更新第一次访问
Every-Visit MC:每次访问都更新
智能体完整地跑完一个回合(Episode),直到结束。记录下这个过程中获得的总奖励,然后求平均值作为该状态的价值。
高方差:因为需要跑完整个回合,中间任何随机因素都会影响最终结果。

TD)
Bootstrapping(自举):只要走了一步,看到下一个状态,就立刻根据“步后奖励 + 下一状态的估计价值”来更新当前状态。

TD Target:
TD Error:
Q-learning / SARSA

DQN 及其变体

Q 网络逼近 Q(s,a),MSE 损失。
三大技巧:
- Experience Replay【智能体连续两次动作的状态(如走路的第 10 步和第 11 步)极其相似,这违反了机器学习中“数据需独立同分布(IID)”的假设,会导致模型陷入局部最优或震荡。】
- Target Network
- ε-greedy Exploration
以 1−ϵ1-\epsilon1−ϵ 的概率选择当前最优动作(Exploitation,利用)。以 ϵ\epsilonϵ 的概率随机选择一个动作(Exploration,探索)
变种: - Double DQN
为什么会有过估计问题:DQN 里,max_a Q(s', a),同一个网络 既选动作,又评估动作,噪声会被 max 放大。如果左边的预测值和右边的目标值都由同一个网络计算,那么每更新一次参数,目标值也会跟着变。
所以用两个网络分工:Online 网络:选动作,Target 网络:评估价值。稳定训练:每隔几百或几千步,才将策略网络的参数复制给目标网络。

- Dueling DQN
普通 DQN 分不清状态不好还是动作不好。
所以把 Q(s,a) 拆成两部分:Q(s,a) = 状态值 V(s) + 动作优势 A(s,a)
状态价值 V(s)V(s)V(s):代表当前状态本身有多好。动作优势 A(s,a)A(s, a)A(s,a):代表在当前状态下,选择动作 aaa 比平均水平好多少。

- Prioritized DQN
DQNReplay Buffer 里,很多 transition 学不到东西,真正“犯错大”的样本被淹没。
所以。TD error 越大,说明越没学会,越应该多学。学得不好的样本,被多次 replay
SumTree 数据结构:为了在高效率下根据优先级进行采样,通常使用一种特殊的树形结构。【二叉排序树】
重要性采样 (IS Weights):因为我们打破了随机性,数据分布变了,需要用权重来修正偏差,防止模型过拟合。高优先级(经常被抽到)的数据:给它一个小权重,减弱它对网络的影响。低优先级(难得被抽到)的数据:给它一个大权重,让它“开张吃三年”。防止对错误数据过拟合。
Prioritized Replay:TD Error 大 → 更常被采样 - Rainbow
把所有能用的都堆上。

Bootstrap:统计重采样方法,从单个样本估计任何统计量的分布,通过有放回的重采样来模拟多次抽样过程
基于策略搜索的强化学习(Policy-Based)
- 值函数方法:
先学 V/Q,再贪心导出策略(DQN) - 策略方法:
直接优化 π(a∣s),不需要 Q 的 argmax
Loss = - ( 动作的对数概率 × Q(s,a) )
Loss(θ)=−E[logπθ(a∣s)⋅A^]Loss(\theta) = - \mathbb{E} [ \log \pi_\theta(a|s) \cdot \hat{A} ]Loss(θ)=−E[logπθ(a∣s)⋅A^]
TRPO(置信域策略优化)
TRPO 限制新旧策略之间的 KL 距离,保证策略更新不过大。解决了策略梯度“一步更新太大导致性能崩塌”的问题。
用了哪些 trick?重要性采样:旧策略数据;优势函数:减方差;KL 约束:信赖域;二阶近似:Fisher 信息矩阵
A. 代理目标函数 (Surrogate Objective)TRPO 不直接优化累积奖励,而是优化一个“代理目标”。它衡量的是:相比于旧策略,新策略在每个状态下选择动作的概率比值:L(θ)=E[πθ(a∣s)πold(a∣s)A^(s,a)]L(\theta) = \mathbb{E} \left[ \frac{\pi_\theta(a|s)}{\pi_{old}(a|s)} \hat{A}(s, a) \right]L(θ)=E[πold(a∣s)πθ(a∣s)A^(s,a)]如果比值 >1> 1>1,且优势 A^\hat{A}A^ 为正,说明新策略增加了好动作的概率,目标函数值上升。
B. 信任区域约束 (Trust Region Constraint)
限制新旧策略之间的 KL 散度(KL Divergence):E[KL(πold(⋅∣s)∣∣πθ(⋅∣s))]≤δ\mathbb{E} [ KL(\pi_{old}(\cdot|s) || \pi_\theta(\cdot|s)) ] \le \deltaE[KL(πold(⋅∣s)∣∣πθ(⋅∣s))]≤δKL 散度 衡量的是两个概率分布的距离。
C. 二阶优化 (Second-Order Optimization)
对目标函数进行了一阶泰勒展开,对 KL 约束进行了二阶泰勒展开。计算费时的 Fisher 信息矩阵)
PPO(Proximal Policy Optimization)。
TRPO:通过复杂的硬约束(KL 散度)来限制更新。
PPO:通过简单的软剪切(Clip 机制)或 KL 惩罚项来达到类似的效果。
解决 TRPO 过于复杂、难以计算的问题.
PPO 的核心:剪切目标函数 (Clipped Objective).在普通策略梯度中,我们优化的是 rt(θ)⋅A^tr_t(\theta) \cdot \hat{A}_t


1万+

被折叠的 条评论
为什么被折叠?



