前两周整理了强化学习的基础概念和动态规划方法(值迭代、策略迭代)。这周正式进入无模型(Model-free)强化学习,也就是更贴近实际应用的那部分——不用知道环境的状态转移概率,直接跟环境交互、采样、学习。
本文会覆盖蒙特卡洛(MC)、时序差分(TD)、SARSA、Q-learning,再到 DQN 以及它的改进。最后延伸到连续动作空间下的 Actor-Critic、DDPG 和 SAC。内容量比较大,但顺着主线走下来,逻辑是清楚的。


目录


一、为什么需要无模型方法

上一轮学的动态规划(值迭代、策略迭代)虽然漂亮,但要求我们提前知道 MDP 的完整五元组 ( S , A , P , R , γ ) (S, A, P, R, \gamma) (S,A,P,R,γ),尤其是状态转移概率 P s s ′ a P_{ss'}^a Pssa 和奖励函数 R R R。现实世界里哪来这么完美的模型?比如训练一个机器人抓东西,它不可能预知自己每动一下会精确转到哪个状态;打 Atari 游戏,我们只知道屏幕像素和得分,不知道底层的物理规则。

所以无模型强化学习只依赖经验——也就是和环境交互产生的片段(episodes) 。一个片段长这样:

s 0 → R 0 s 1 → R 1 s 2 → R 2 ⋯ → R T − 1 s T s_0 \xrightarrow{R_0} s_1 \xrightarrow{R_1} s_2 \xrightarrow{R_2} \dots \xrightarrow{R_{T-1}} s_T s0R0 s1R1 s2R2 RT1 sT

每一步的奖励 R t R_t Rt 是环境返回的。我们没法直接查 P P P R R R,但能通过反复采样来估计价值函数,进而改进策略。

MC 和 TD 就是两类最核心的无模型价值估计方法。然后再往后走,控制算法(SARSA、Q-learning)在这基础上加策略改进。


二、蒙特卡洛方法(MC):完整片段后的学习

蒙特卡洛的思想极其朴素:要估计一个状态 s s s 的价值 V π ( s ) V^\pi(s) Vπ(s),那就让策略 π \pi π 跑很多个完整片段,把所有从 s s s 出发的累计回报 G t G_t Gt 收集起来,取个平均值。

累计回报的定义:
G t = R t + 1 + γ R t + 2 + ⋯ + γ T − 1 R T G_t = R_{t+1} + \gamma R_{t+2} + \dots + \gamma^{T-1} R_T Gt=Rt+1+γRt+2++γT1RT
那么:
V π ( s ) = E [ G t ∣ s t = s , π ] ≈ 1 N ∑ i = 1 N G t ( i ) V^\pi(s) = \mathbb{E}[G_t | s_t = s, \pi] \approx \frac{1}{N} \sum_{i=1}^{N} G_t^{(i)} Vπ(s)=E[Gtst=s,π]N1i=1NGt(i)

增量式实现

实际代码里不会把所有回报存下来再平均,而是用增量更新:
每结束一个片段,对于片段中访问过的每个状态 S t S_t St
N ( S t ) ← N ( S t ) + 1 N(S_t) \leftarrow N(S_t) + 1 N(St)N(St)+1
V ( S t ) ← V ( S t ) + 1 N ( S t ) ( G t − V ( S t ) ) V(S_t) \leftarrow V(S_t) + \frac{1}{N(S_t)} (G_t - V(S_t)) V(St)V(St)+N(St)1(GtV(St))
如果是非平稳环境(策略或环境在变),可以用固定学习率 α \alpha α 代替 1 / N 1/N 1/N
V ( S t ) ← V ( S t ) + α ( G t − V ( S t ) ) V(S_t) \leftarrow V(S_t) + \alpha (G_t - V(S_t)) V(St)V(St)+α(GtV(St))

MC 的特点

  • 只适用于片段式任务(有终止状态)。
  • 无偏 G t G_t Gt 是真实回报的真实采样,期望就是 V π ( s ) V^\pi(s) Vπ(s)
  • 高方差:一个片段里累积了许多随机性,导致 G t G_t Gt 波动很大。
  • 不 bootstrap:不依赖对未来的估计,只用自己的采样。

三、时序差分学习(TD):每步都能学

TD 方法注意到一件事:我们其实不用等到片段结束。根据贝尔曼方程, V π ( s t ) = E [ R t + 1 + γ V π ( s t + 1 ) ] V^\pi(s_t) = \mathbb{E}[R_{t+1} + \gamma V^\pi(s_{t+1})] Vπ(st)=E[Rt+1+γVπ(st+1)]
于是可以用 TD 目标 R t + 1 + γ V ( s t + 1 ) R_{t+1} + \gamma V(s_{t+1}) Rt+1+γV(st+1) 来更新当前的 V ( s t ) V(s_t) V(st)

V ( s t ) ← V ( s t ) + α ( R t + 1 + γ V ( s t + 1 ) − V ( s t ) ) V(s_t) \leftarrow V(s_t) + \alpha \big( R_{t+1} + \gamma V(s_{t+1}) - V(s_t) \big) V(st)V(st)+α(Rt+1+γV(st+1)V(st))
括号里的就是 TD 误差

MC vs TD 的直观例子(开车回家)

讲义里那个“开车回家”的例子非常形象:

  • MC 会等你真正到家之后,用实际总耗时修正沿途每个状态的预测。
  • TD 则每经过一个路段(比如遇到下雨、堵车),就基于当前信息 + 对未来剩余时间的猜测立即调整预测。

优缺点对比

MC TD
学习时机 片段结束 每步都可以
适用环境 片段式 片段式或持续任务
偏差 无偏 有偏(因为用了估计的 V)
方差
收敛性 收敛到真值 线性函数近似下可能发散,表格型收敛
对初值敏感 不敏感 较敏感

实践中 TD 更常用,因为它学习快、能在线更新、方差小。


四、从价值估计到控制:SARSA 和 Q-learning

以上只讲了评估一个给定的策略 π \pi π。控制问题是要找到最优策略。在无模型设定下,我们需要同时做策略评估和策略改进。
关键是把价值函数从 V ( s ) V(s) V(s) 换成 Q ( s , a ) Q(s,a) Q(s,a),因为不知道模型,没法直接通过 ∑ s ′ P \sum_{s'} P sP 来选最优动作,必须知道每个动作的 Q 值。

4.1 SARSA(在线策略)

SARSA 的名字来自它使用的五元组: ( s , a , r , s ′ , a ′ ) (s, a, r, s', a') (s,a,r,s,a)
更新公式:
Q ( s , a ) ← Q ( s , a ) + α ( r + γ Q ( s ′ , a ′ ) − Q ( s , a ) ) Q(s,a) \leftarrow Q(s,a) + \alpha \big( r + \gamma Q(s',a') - Q(s,a) \big) Q(s,a)Q(s,a)+α(r+γQ(s,a)Q(s,a))
注意:这里的 a ′ a' a在下一状态 s ′ s' s 下按照当前策略实际选出来的动作
也就是说,SARSA 的更新用的是“自己下一步将要执行的动件”,因此它是一种 on-policy 方法——采样策略和待评估/改进的策略是同一个(通常是 ϵ \epsilon ϵ-greedy 策略)。

算法流程

  • 初始化 Q 表
  • 对每个 episode:
    • 从状态 s 开始
    • ϵ \epsilon ϵ-greedy 从 Q 选动作 a
    • 重复直到终止:
      • 执行 a,得到 r, s’
      • 在 s’ 下用 ϵ \epsilon ϵ-greedy 选 a’
      • 更新 Q ( s , a ) Q(s,a) Q(s,a)
      • s ← s ′ , a ← a ′ s \leftarrow s', a \leftarrow a' ss,aa

SARSA 学到的策略会避开悬崖,因为它更新时已经考虑到自己将来可能选择的风险动作(如果探索还会撞墙)。它的风格比较“保守”。

4.2 Q-learning(离线策略)

Q-learning 的更新公式则不同:
Q ( s , a ) ← Q ( s , a ) + α ( r + γ max ⁡ a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ) Q(s,a) \leftarrow Q(s,a) + \alpha \big( r + \gamma \max_{a'} Q(s',a') - Q(s,a) \big) Q(s,a)Q(s,a)+α(r+γamaxQ(s,a)Q(s,a))
它直接使用 下一状态的最优 Q 值(取 max),而不考虑实际会选哪个动作。因此 Q-learning 是 off-policy 方法:行为策略(用来采样,比如 ϵ \epsilon ϵ-greedy)和目标策略(贪心策略, π ( s ′ ) = arg ⁡ max ⁡ a Q ( s ′ , a ) \pi(s') = \arg\max_a Q(s',a) π(s)=argmaxaQ(s,a))可以不同。

Q-learning 更“大胆”——它总是假设自己下一步会走最优动作,即使当前的行为策略正在随机探索。所以它倾向于找到全局最优,但可能在学习过程中采取危险的动作(比如悬崖边沿)。离线策略还有一个额外好处:可以利用历史数据(replay buffer)反复学习,后面 DQN 就靠这个起飞。

对比表格(讲义里的内容):

SARSA Q-learning
更新目标 r + γ Q ( s ′ , a ′ ) r + \gamma Q(s',a') r+γQ(s,a) (实际执行的动作) r + γ max ⁡ a ′ Q ( s ′ , a ′ ) r + \gamma \max_{a'} Q(s',a') r+γmaxaQ(s,a)(最优动作)
策略关系 行为策略 = 目标策略(on-policy) 行为策略 ≠ 目标策略(off-policy)
行为特点 保守,避开危险 大胆,追求全局最优
典型场景 机器人、自动驾驶等风险敏感场景 游戏等允许失败重来的场景

五、DQN:当 Q-learning 撞上神经网络

Q-learning 搭配表格存储 Q 值,只在状态和动作空间很小的情况下可行。Atari 游戏的状态是 210×160 的彩色图像,直接枚举不现实。2013 年 DeepMind 的论文《Playing Atari with Deep Reinforcement Learning》用深度神经网络来拟合 Q ( s , a ) Q(s,a) Q(s,a),这就是 DQN。

但把 Q-learning 和神经网络直接拼在一起,有两个严重问题:

  1. 数据相关性强:连续采样的 ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s) 之间高度相关,打破独立同分布假设,训练不稳定。
  2. 目标值不稳定:更新 Q 网络时,TD 目标 r + γ max ⁡ a ′ Q ( s ′ , a ′ ) r + \gamma \max_{a'} Q(s',a') r+γmaxaQ(s,a) 里的 Q 网络也在变,导致目标在移动,像“追逐自己的尾巴”。

DQN 用了两个关键技巧解决:

经验回放(Experience Replay)

  • 用一个回放池(replay buffer)存储过去的 transition ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s)
  • 训练时从中随机采样一个小批量,打乱了数据的时间相关性,变成近似独立同分布。
  • 样本可以重复使用多次,提高效率。

目标网络(Target Network)

  • 维护两个 Q 网络:评估网络 Q θ Q_{\theta} Qθ 和目标网络 Q θ − Q_{\theta^-} Qθ
  • 目标网络参数 θ − \theta^- θ 固定一段时间(比如每 C 步),再从 θ \theta θ 复制过来。
  • TD 目标用目标网络计算: y = r + γ max ⁡ a ′ Q θ − ( s ′ , a ′ ) y = r + \gamma \max_{a'} Q_{\theta^-}(s',a') y=r+γmaxaQθ(s,a),减少目标值的振荡。

DQN 损失函数(对于采样到的一个 transition):
L ( θ ) = E ( s , a , r , s ′ ) ∼ D [ ( r + γ max ⁡ a ′ Q θ − ( s ′ , a ′ ) − Q θ ( s , a ) ) 2 ] L(\theta) = \mathbb{E}_{(s,a,r,s') \sim D} \left[ \left( r + \gamma \max_{a'} Q_{\theta^-}(s',a') - Q_{\theta}(s,a) \right)^2 \right] L(θ)=E(s,a,r,s)D[(r+γamaxQθ(s,a)Qθ(s,a))2]
然后用梯度下降更新 θ \theta θ

DQN 算法流程(简略)

  • 初始化 Q 网络 θ \theta θ 和目标网络 θ − \theta^- θ,初始化回放池。
  • 对每个 episode:
    • 获取初始状态 s
    • 对每个时间步:
      • ϵ \epsilon ϵ-greedy 从 Q θ Q_{\theta} Qθ 选动作 a
      • 执行 a,得 r, s’
      • ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s) 到回放池
      • 从回放池采样一个 batch
      • 计算 TD 目标 y,用 MSE 损失更新 θ \theta θ
      • 每 C 步同步 θ − ← θ \theta^- \leftarrow \theta θθ
  • 输出训练好的 Q 网络

DQN 在 Atari 上的表现惊艳,从此深度强化学习真正起飞。


六、策略梯度:直接学策略

前面讲的 Q-learning 和 DQN 都属于基于价值的方法——学一个 Q 函数,再从中导出策略。另一种思路是直接学策略:把策略参数化 ( \pi_{\theta}(a|s) ),然后用梯度上升最大化期望回报。

目标函数:
[
J(\theta) = \mathbb{E}{s_0}[V^{\pi{\theta}}(s_0)]
]
策略梯度定理给出了梯度的解析形式:
[
\nabla_{\theta} J(\theta) = \mathbb{E}{\pi{\theta}} \left[ Q^{\pi_{\theta}}(s,a) \nabla_{\theta} \log \pi_{\theta}(a|s) \right]
]
这个结果很漂亮——它把策略梯度转化成了“对数概率 × 动作价值”的期望,我们只需要采样估计。

REINFORCE 算法

REINFORCE 是最简单的策略梯度实现:直接用蒙特卡洛采样的累计回报 ( G_t ) 代替 ( Q^{\pi_{\theta}}(s_t,a_t) )。对于有限步数的环境,梯度近似为:
[
\nabla_{\theta} J(\theta) = \mathbb{E}{\pi{\theta}} \left[ \sum_{t=0}^{T} G_t \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) \right]
]
流程:

  • 初始化策略参数 ( \theta )
  • 对每个 episode:
    • 用 ( \pi_{\theta} ) 采样一条完整轨迹 ( s_1,a_1,r_1,\dots,s_T,a_T,r_T )
    • 计算每个时刻 t 往后的回报 ( G_t )
    • 更新 ( \theta \leftarrow \theta + \alpha \sum_t G_t \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) )

优点:理论简洁,无偏。缺点:方差很大,需要完整片段,收敛慢。


六、策略梯度:直接学策略

前面讲的 Q-learning 和 DQN 都属于基于价值的方法——学一个 Q 函数,再从中导出策略。另一种思路是直接学策略:把策略参数化 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(as),然后用梯度上升最大化期望回报。

目标函数:
J ( θ ) = E s 0 [ V π θ ( s 0 ) ] J(\theta) = \mathbb{E}_{s_0}[V^{\pi_{\theta}}(s_0)] J(θ)=Es0[Vπθ(s0)]
策略梯度定理给出了梯度的解析形式:
∇ θ J ( θ ) = E π θ [ Q π θ ( s , a ) ∇ θ log ⁡ π θ ( a ∣ s ) ] \nabla_{\theta} J(\theta) = \mathbb{E}_{\pi_{\theta}} \left[ Q^{\pi_{\theta}}(s,a) \nabla_{\theta} \log \pi_{\theta}(a|s) \right] θJ(θ)=Eπθ[Qπθ(s,a)θlogπθ(as)]
这个结果很漂亮——它把策略梯度转化成了“对数概率 × 动作价值”的期望,我们只需要采样估计。

REINFORCE 算法

REINFORCE 是最简单的策略梯度实现:直接用蒙特卡洛采样的累计回报 G t G_t Gt 代替 Q π θ ( s t , a t ) Q^{\pi_{\theta}}(s_t,a_t) Qπθ(st,at)。对于有限步数的环境,梯度近似为:
∇ θ J ( θ ) = E π θ [ ∑ t = 0 T G t ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \nabla_{\theta} J(\theta) = \mathbb{E}_{\pi_{\theta}} \left[ \sum_{t=0}^{T} G_t \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) \right] θJ(θ)=Eπθ[t=0TGtθlogπθ(atst)]
流程:

  • 初始化策略参数$ \theta$
  • 对每个 episode:
    • π θ \pi_{\theta} πθ 采样一条完整轨迹 s 1 , a 1 , r 1 , … , s T , a T , r T s_1,a_1,r_1,\dots,s_T,a_T,r_T s1,a1,r1,,sT,aT,rT
    • 计算每个时刻 t 往后的回报 G t G_t Gt
    • 更新 θ ← θ + α ∑ t G t ∇ θ log ⁡ π θ ( a t ∣ s t ) \theta \leftarrow \theta + \alpha \sum_t G_t \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) θθ+αtGtθlogπθ(atst)

优点:理论简洁,无偏。缺点:方差很大,需要完整片段,收敛慢。

七、进阶:Actor-Critic 框架

前面的 MC、TD、Q-learning、DQN 都属于基于价值的方法。它们学一个 Q 函数,然后根据 Q 函数选动作。但在连续动作空间里,max 操作不好做;而且有些任务随机策略天然比确定性策略好。

另一条路是基于策略的方法(如 REINFORCE),直接学一个策略网络 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(as)。但原始的 REINFORCE 方差大、收敛慢。
Actor-Critic 把两者结合起来:

  • Actor(策略网络):负责输出动作,接收 Critic 的反馈来更新。
  • Critic(价值网络):评估当前状态或状态-动作对的好坏,指导 Actor。

更新时,Critic 用 TD 方法估计 Q ( s , a ) Q(s,a) Q(s,a) 或者优势函数 A ( s , a ) A(s,a) A(s,a),然后 Actor 的梯度就是:
∇ θ J ( θ ) ≈ E [ ∇ θ log ⁡ π θ ( a ∣ s ) ⋅ A ( s , a ) ] \nabla_{\theta} J(\theta) \approx \mathbb{E} \left[ \nabla_{\theta} \log \pi_{\theta}(a|s) \cdot A(s,a) \right] θJ(θ)E[θlogπθ(as)A(s,a)]
相比 REINFORCE 使用蒙特卡洛回报 G t G_t Gt,优势函数方差更低,学习更稳定。

Actor-Critic 是很多现代算法的骨架,可以是 on-policy(如 A2C)也可以是 off-policy(如 DDPG 和 SAC)。


八、连续控制的利器:DDPG 与 SAC

前面积累的知识足够理解两个专门为连续动作空间设计的 off-policy 算法:DDPG 和 SAC。

8.1 DDPG

DDPG 全称 Deep Deterministic Policy Gradient。它想解决:在连续动作空间里,Q-learning 的 (\max_{a’} Q(s’,a’)) 没法对连续 a 求最大值。于是 DDPG 用一个 Actor 网络 直接输出确定性动作 a = μ ( s ) a = \mu(s) a=μ(s)(不再输出概率分布),再有一个 Critic 网络 输出 Q ( s , a ) Q(s,a) Q(s,a)。训练时,Critic 拟合 r + γ Q ′ ( s ′ , μ ′ ( s ′ ) ) r + \gamma Q'(s', \mu'(s')) r+γQ(s,μ(s))(目标网络)。Actor 的梯度通过 Critic 对动作的导数回传。

关键组件

  • 经验回放(off-policy 的好处)
  • 目标网络(Actor 和 Critic 各自有一份)
  • 软更新:目标网络参数 θ ′ ← τ θ + ( 1 − τ ) θ ′ \theta' \leftarrow \tau \theta + (1-\tau)\theta' θτθ+(1τ)θ τ ≪ 1 \tau \ll 1 τ1
  • 动作噪声:在 Actor 输出的动作上加噪声(如 OU 或高斯噪声)来探索

DDPG 在连续控制任务(如 MuJoCo 机器人)上表现不错,但对超参数敏感,训练有时会不稳定。

8.2 SAC(Soft Actor-Critic)

SAC 是比 DDPG 更现代的算法,改进了两个痛点:探索不足训练不稳定。核心思想是在目标函数中加入熵(entropy) 奖励:

J ( π ) = ∑ t E ( s t , a t ) [ r ( s t , a t ) + α H ( π ( ⋅ ∣ s t ) ) ] J(\pi) = \sum_t \mathbb{E}_{(s_t,a_t)} \left[ r(s_t,a_t) + \alpha \mathcal{H}(\pi(\cdot|s_t)) \right] J(π)=tE(st,at)[r(st,at)+αH(π(st))]
其中 H \mathcal{H} H 是策略的熵, α \alpha α 是温度系数。鼓励策略更随机,探索更充分。

SAC 的几个亮点:

  • 随机策略:输出高斯分布的均值和方差,然后采样动作。
  • 双 Q 网络:维护两个 Critic,取较小值来避免过高估计(类似 TD3)。
  • 自动调节熵系数 α \alpha α 会自动调整,使得策略熵不低于一个目标值。
  • 重参数化技巧:采样动作时用 a = tanh ⁡ ( μ + σ ⋅ ϵ ) a = \tanh(\mu + \sigma \cdot \epsilon) a=tanh(μ+σϵ),让梯度能回传到策略均值/方差。

SAC 在很多连续控制环境中达到了 SOTA,而且超参数鲁棒性好,代码实现也相对整洁,是目前首选基线算法之一。


九、基于模型的控制:MPC 与 PETS

前面讲的都是无模型方法(model-free)。下面进入基于模型的领域。基于模型的方法先学一个环境模型(比如神经网络预测下一状态),然后用这个模型来做规划或生成额外数据。

9.1 随机打靶法与交叉熵方法(CEM)

模型预测控制(MPC) 的核心思想:每一步都做一次短期规划。给定当前状态 s k s_k sk,生成若干条长度为H的动作候选序列,用模型预测每条序列的累积奖励,选最优序列的第一个动作执行。

  • 随机打靶法:完全随机采样N条动作序列,简单粗暴,在一些简单环境里效果还行。
  • 交叉熵方法(CEM):进化策略的一种。维护一个动作序列的分布(比如高斯分布),每次采样N条序列,保留M条最优的,用这些最优序列更新分布参数,重复多次。最后取最优序列的第一个动作的均值作为输出。CEM 比随机打靶更高效。

9.2 PETS:概率集成与轨迹采样

PETS(Probabilistic Ensembles with Trajectory Sampling) 是一个经典的基于模型的强化学习算法,结合了 MPC 和模型集成。

它用神经网络构建环境模型,输出下一状态的高斯分布 N ( μ θ ( s , a ) , Σ θ ( s , a ) ) \mathcal{N}(\mu_{\theta}(s,a), \Sigma_{\theta}(s,a)) N(μθ(s,a),Σθ(s,a)),用负对数似然作为损失函数:
L ( θ ) = ∑ n [ μ θ ( s n , a n ) − s n + 1 ] T Σ θ − 1 [ …   ] + log ⁡ det ⁡ Σ θ ( s n , a n ) \mathcal{L}(\theta) = \sum_{n} [\mu_{\theta}(s_n,a_n)-s_{n+1}]^T \Sigma_{\theta}^{-1} [\dots] + \log \det \Sigma_{\theta}(s_n,a_n) L(θ)=n[μθ(sn,an)sn+1]TΣθ1[]+logdetΣθ(sn,an)
第一项是马氏距离(加权预测误差),第二项是正则项,防止协方差矩阵坍缩到 0 或无穷。

为了处理认知不确定性(数据不足导致的模型不确定),PETS训练多个模型(集成),每次预测时随机选一个模型,这样轨迹采样会考虑到模型的不确定性。最后用CEM做MPC。


十、基于模型的策略优化:MBPO

MBPO(Model-Based Policy Optimization)进一步优化了模型的使用方式。它基于两个观察:

  1. 模型推演步数越长,复合误差累积越快,结果越不可靠。
  2. 需要权衡“步数多带来的策略提升”和“误差增大带来的负面作用”。

所以 MBPO 不从头开始用模型推演整条轨迹,而是从真实环境中采样的状态出发,用模型推演一个短分支(branched rollout),比如只往后推演 k 步(k 通常很小,如 5~10)。这样误差可控,同时生成的模型数据可以用来训练策略。

MBPO 的具体流程:

  • 初始化策略 π(比如 SAC)、环境模型参数 p、真实数据集 D_env、模型数据集 D_model
  • 每轮:
    • 用真实数据训练环境模型 p
    • 用策略 π 与环境交互,将真实轨迹加入 D_env
    • 多次从 D_env 中均匀随机采样一个状态 s_t,以 s_t 为起点,用模型推演 k 步,生成的轨迹加入 D_model
    • 用 D_model 中的数据,通过无模型算法(SAC)更新策略 π

MBPO 显著提高了样本效率,在一些连续控制任务上能用很少的真实样本达到接近无模型方法的性能。


十一、总结与展望

从 MC、TD 到 DQN,再到策略梯度、Actor-Critic、DDPG、SAC,我们走完了无模型深度强化学习的主要脉络。接着又看到了基于模型的 MPC、PETS 和 MBPO,它们通过学一个环境模型来提升样本效率,但也面临复合误差的挑战。

当前挑战

  • 样本效率低(训练需海量交互)
  • 训练初期安全性无法保证
  • sim-to-real 差距
  • 可解释性差

前沿方向

  • 离线强化学习(利用静态数据)
  • 安全强化学习(结合控制理论约束)
  • 模型基强化学习(预测控制 + 端到端)
  • 多智能体协同

掌握这些内容,基本就拿到了现代深度强化学习的入场券。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐