Lec6 Actor Critic
- 为什么加入 baseline 项可以减少方差呢?
- 因为 Q(s, a) - V(s) 可以分离出动作 a 本身的价值,降低梯度波动.
- 我们发现 A(优势函数)只需要 fit V, 因为 A =
r + V(s_(t+1)) - V(s_t) - 如何定义 呢? 图中下方的 1/N 公式更好,但是这需要从同一个 出发多次采样,除了仿真以外是不可能的!
- 所以我们采用图中上方那个公式.

- 于是我们有了第一个训练 critic 的方法:

- 下一步:我们也可以直接用 V 估计之后的收益,尽管训练一开始估计很不准. 这就是 temporal difference 或者说 bootstrap.
- td 方法具有 Lower variance, Higher bias. (“because it’s using b_hat instead of a single sample estimator”, 或者说 是一个期望而不是一个采样. )

GAE(Generalized Advantage Estimation) 方法:用多步 td 代替单步 td.
off-policy: 具体查看 10-actor-critic算法.
Lec7 Value-based RL (Q-learning)
- 我们直接把 actor-critic 算法的 a 设定为选择 Q(s, a) 最大的 a(概率为 1,其他概率为 0). 这样就不用训练 actor 了.
- 可能会遇到贪心永远走老路的问题,因此可使用 epsilon-greedy(1 - epsilon 概率随机动作)或者 boltzmann 探索(按照 Q 大小选择动作)
- 这种写法不 work(比如改完参数也是改变了目标函数,导致在目标附近来回震荡),我们来看下一章如何优化.
Lec8 Q-learning in practice
- DQN’s target-network 方法: 复制一份 Q2 目标网络不更新参数只算 y = r(s, a) + gamma * Q2(s’, a’),每隔 10000 步同步一次(或者 polyak 方法:每次按 0.001 缓慢更新权重). 原来的网络 Q1 则与环境互动并存数据.
- 并通过 replay buffer 采样,打破数据前后关联.
- n-step 技巧:连续计算后面 N 步奖励衰减求和。
- 逐渐降 epsilon 探索率.
- huber 损失:误差小时依然用 mse,误差大时改用绝对值.
- 更强的方法:Double DQN. 用的仍然是原来两套网络.
1# DQN2a_next = argmax_a Q_target(s2, a)3y = r + gamma * Q_target(s2, a_next)4loss = mse(Q_online(s, a), detach(y))56# Double DQN7a_next = argmax_a Q_online(s2, a) # 训练网络选动作8y = r + gamma * Q_target(s2, a_next) # 目标网络评估动作9loss = mse(Q_online(s, a), detach(y))
在传统的 DQN 算法中,本来就存在两套函数的神经网络——目标网络和训练网络(参见 7.3.2 节),只不过的计算只用到了其中的目标网络,那么我们恰好可以直接将训练网络作为 Double DQN 算法中的第一套神经网络来选取动作. (- 动手学强化学习)
即使 Q_online 因正误差选中了某个动作,Q_target 对同一个动作的估计不一定也正好虚高,所以 target 不会系统性地总取到最大正误差。(- GPT5.5)


