diff --git a/docs/chapter12/chapter12.md b/docs/chapter12/chapter12.md index a3a0e90..fbb4816 100644 --- a/docs/chapter12/chapter12.md +++ b/docs/chapter12/chapter12.md @@ -116,7 +116,7 @@ DDPG 通过 off-policy 的方式来训练一个确定性策略。因为策略是 ![](img/12.9.png 'size=500') -虽然 DDPG 有时表现很好,但它在超参数和其他类型的调整方面经常很敏感。DDPG 常见的失败情况是已经学习好的 Q 函数开始显著地高估 Q 值,然后导致策略被破坏了,因为它利用了 Q 函数中的误差。 +虽然 DDPG 有时表现很好,但它在超参数和其他类型的调整方面经常很敏感。DDPG 常见的问题是已经学习好的 Q 函数开始显著地高估 Q 值,然后导致策略被破坏了,因为它利用了 Q 函数中的误差。 我们可以拿实际的 Q 值跟这个 Q-network 输出的 Q 值进行对比。实际的 Q 值可以用 MC 来算。根据当前的 policy 采样 1000 条轨迹,得到 G 后取平均,得到实际的 Q 值。 @@ -141,11 +141,11 @@ $$ 其中 $\epsilon$ 本质上是一个噪声,是从正态分布中取样得到的,即 $\epsilon \sim N(0,\sigma)$。 -目标策略平滑化起到了 regularizer 的作用,它处理了 DDPG 中可能发生的一种特殊的失败情况:如果 Q 函数近似器对某些动作形成了一个不正确的尖峰,那么策略将迅速利用这个尖峰,然后出现敏感或不正确的行为。这种情况可以通过在类似的动作上平滑 Q 函数来避免,目标策略平滑化就是为了做到这一点。 +目标策略平滑化起到了 regularizer 的作用。 ![](img/12.10.png) -我们可以讲 TD3 跟其他算法进行对比。这边作者自己实现的 DDPG(our DDPG) 和官方实现的 DDPG 的表现不一样,这说明 DDPG 对初始化和调参非常敏感。TD3 对参数不是这么敏感。在 TD3 的论文中,TD3 的性能比 SAC(Soft Actor-Critic) 高。但在 SAC 的论文中,SAC 的性能比 TD3 高,这是因为强化学习的很多算法估计对参数和初始条件敏感。 +我们可以将 TD3 跟其他算法进行对比。这边作者自己实现的 DDPG(our DDPG) 和官方实现的 DDPG 的表现不一样,这说明 DDPG 对初始化和调参非常敏感。TD3 对参数不是这么敏感。在 TD3 的论文中,TD3 的性能比 SAC(Soft Actor-Critic) 高。但在 SAC 的论文中,SAC 的性能比 TD3 高,这是因为强化学习的很多算法估计对参数和初始条件敏感。 TD3 的作者给出了对应的实现:[TD3 Pytorch implementation](https://github.com/sfujim/TD3/),代码写得很棒,我们可以将其作为一个强化学习的标准库来学习。