强化学习TD3算法笔记1——论文解读

相关论文

TD3:TD3
Double DQN:Double DQN
DDPG:DDPG

TD3论文结构

  1. 摘要:提出Actor-Critic面对的问题,概括了TD3算法和效果
  2. 引言:提出当前对于Actor-Critic的理解不足,回顾了离散action空间中的一个问题overestimation及其解决方案
  3. 相关工作:回顾之前讨论bias和varianve问题的工作
  4. 背景:介绍强化学习的基础以及DDPG算法
  5. Overestimation Bias:讨论Actor-Critic中的overestimation bias和解决方案
  6. Variance:讨论Actor-Critic中的variance来源及解决方案,综合解决方案提出TD3算法
  7. 实验:对比各种算法并验证提出的方案的效果
  8. 结论:总结这篇论文的创新和贡献

在这里我们只是简单梳理了一下论文中最重要的两个核心部分的思路并对比了TD3和DDPG算法。

Overestimation

Overestimation是TD3主要关注的问题之一,关于overestimation在强化学习中的影响大家可以在Double DQN中得到比较详细的解答。下面我对overestimation进行一些简述。
Double DQN图表分析
从上图中可以看到在第一列中,作者利用不同阶数的多项式对真实的Q(浅紫色曲线)进行拟合。拟合后的曲线在取样密集处都能够比较好的和真实的Q进行拟合,但是在取样稀疏的地方并不能很好的拟合,从而产生一定的误差;不仅如此,对于阶数高的多项式在取样密集的地方虽然可以学到更多的特征,但是在取样稀疏的地方却会产生更大的偏差。
第二列中,作者分别利用不同的取样点得到了不同的拟合曲线,其中黑白相间的曲线代表的是max Q值后的曲线,而绿色的曲线则是没有被选择的曲线。
DQN
Double DQN
为了从理论层面说明第二列的效果将两个公式列出对比,DQN采用就是上面公式对Q值进行估计的,而Double DQN则采用下面公式先通过对action进行取最优,然后通过最优的action对Q值进行估计,这时候估计的Q值在目标网络中并不一定是最大的,从而减弱了一些overestimation。
第三列则是Double DQN和DQN误差的对比。

下面给出overestimation在DDPG存在的证明。
DDPG高偏
如上述论文的推导,在DDPG中当前网络和目标网络都存在一个域分别使得公式5和6成立,这是引文两个网络更新的参数不同,而各自的参数在自己的网络处是梯度更新最快的。然后在公式5和6 的基础上作出假设,某个阶段出现了overestimation(偏差总是存在的),即
假设
从而我们可以推导出公式7。其次是这些overestimation会产生一个循环,导致overestimation累积传播,这样的结果是次优action会得到次优Critor的高度评价,从而在下一次的策略中强化次优action。
由于Double DQN在处理overestimation上是优于DDPG的,于是TD3作者尝试将Double DQN融入DDPG中来抑制overestimation,最终效果有一丝的好转,但是还是存在很高的overestimation。
尝试失败的原因是因为在原始的Double DQN中两个Q函数较为独立,但在DDPG仍然紧密相关。于是作者提出了进一步的改进方案。
初始方案
初始方案中,作者借鉴Double DQN的思想,在DDPG的基础上引入一个新的Q值,即一个新的Critic网络,但是由于两个Q值网络参数紧密相连,如上图公式所示,两个策略的评估更新都需要对方网络的参数,因此这个方案达到的效果不是作者的预期。
最终解决方案
在新的一个方案中,采用min方式来更新策略评估函数,这种方式使得overestimation得到了极好的处理。
min论证这段话论证了min操作对于处理overestimation的有效性。

Variance

Variance来源从上图可以看出variance的变化与目标网络的更新频率有关。
参数更新
因此在参数更新时为了使variance变化更小,可以使T以更小的值对参数进行更新,这可以使得Critic目标网络更加的稳定。
由于Overestimation在Critic目标网络不稳定,即variance波动比较大时会引导agent往错误的方向学习
,因此作者建议在critic稳定前不更新其他参数。
除此之外,在更新Actor的时候,加入regularization,即加入一个额外的噪声,可以使得Actor不会在一个点寻找Q值,而是在这个点周围的域寻找Q值。

TD3和DDPG对比

DDPG
TD3
从上面两个算法的伪代码可以看出,TD3比DDPG多加了一个Critic目标网络,之后对得到的两个Q值函数进行min操作。除此之外,TD3还多了一个regulation的操作,即在进行动作决策时加入一个额外的噪声。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TD3算法的伪代码如下: 1. 初始化神经网络参数和经验缓存 2. for episode in range(total_episodes): 3. 初始化环境状态 4. for t in range(max_steps_per_episode): 5. 选择动作a通过actor网络和添加噪声 6. 执行动作a并观察奖励和下一个状态 7. 将经验存储到经验缓存中 8. 从经验缓存中采样一批经验 9. 使用target actor网络预测下一个状态的动作 10. 计算target Q值 11. 更新critic网络的参数 12. 每隔一定的时间更新target actor和target critic网络的参数 13. 使用actor网络预测当前状态的动作 14. 计算actor的loss 15. 更新actor网络的参数 16. 更新target actor和target critic网络的参数 17. 返回训练好的actor和critic网络参数 在每个时间步骤中,TD3算法使用actor网络选择动作并添加噪声,然后执行动作并观察奖励和下一个状态。经验被存储在经验缓存中,并随机采样一批经验进行训练。然后,使用target actor网络预测下一个状态的动作,并计算target Q值。接下来,更新critic网络的参数以最小化critic loss。然后,更新actor网络的参数以最大化actor的loss。目标网络的参数也会定期更新,以保持稳定性。最后,训练完成后返回训练好的actor和critic网络参数。 请注意,伪代码中的详细实现细节可能因实际情况而异,此处只提供了一个概括性的描述。参考论文和实现代码以获取更详细的信息。 参考文献: 作者. (年份). 标题. 出版物. 作者. (年份). 标题. 出版物. 作者. (年份). 标题. 出版物.<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [深度强化学习-TD3算法原理与代码](https://blog.csdn.net/weixin_46133643/article/details/124509577)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值