TD3
DDPG常常会遇到Q值overestimate的问题,这将会导致Critic部分给出错误的评判,导致Actor部分错误利用了这部分知识进行学习。TD3则是为了解决这个问题。
- 技巧一:快速双q学习。TD3学习两个q函数而不是一个q函数(即twin),并使用两个q值中较小的一个作为Bellman误差损失函数中的目标。
- 技巧二:延迟的政策更新。TD3更新策略(和目标网络)的频率低于q函数。本文建议每两个q函数更新一次策略更新。这样可以有效避免policy带来的偏差问题。
- 技巧三:目标政策平滑。TD3为目标动作添加了噪声,使得策略更难利用Q函数误差,因为Q在动作中的变化是平滑的。
要点
最特别的一点就是要学习两个Q函数
两个q函数都使用一个单一的目标,使用两个q函数中的任何一个给出一个较小的目标值进行计算
对目标使用较小的q值,并向较小的q值回归,有助于防止q函数中的高估。
SAC
SAC是一种将随机策略优化方法和DDPG算法(确定性策略)相结合的算法。它虽然也使用了双裁剪的Q学习方法,但是它并不能严格算成TD3的改进版本。它的一个重要特点就是加入了熵的方法。
Entropy-Regularized Reinforcement Learning
该方法在传统RL方法的基础上,加入了熵的思想。普通方法在执行完一个决策之后,都会获得一个即时reward,而该方法除了即时reward外,还加入了一个基于熵的reward。
SAC
Q学习
与TD3方法的相同与不同
相同点:
- 和TD3一样,两个q函数都是通过MSBE最小化来学习的,通过回归到一个单一的共享目标
- 与TD3一样,共享目标是使用目标Q-network计算的,目标Q-network是通过polyak对训练过程中的Q-network参数进行平均得到的。
- 与TD3中一样,共享目标使用剪切的双q技巧。
不同点
- 与TD3不同,该目标还包括一项,该项来自SAC对熵正则化的使用
- 与TD3不同,目标中使用的下一状态操作来自当前策略,而不是目标策略。
- 与TD3不同,没有明确的目标政策平滑。TD3训练了一个确定性策略,因此它通过向下一状态动作添加随机噪声来实现平滑。SAC训练了一个随机策略,因此来自该随机性的噪声足以获得类似的效果。
SAC利用这种对目标的样本近似,为每个q函数设置MSBE损耗。这里唯一尚未确定的是,用哪个Q函数来计算样本备份:像TD3一样,SAC使用剪切双Q技巧,并在两个Q近似器之间取最小Q值。但这里需要注意的是,计算目标值的时候的那个动作产生,是由本身策略产生的,而不是由目标策略产生的。
疑问:
为什么这里就不需要设置目标的策略参数了呢?