TD3算法,这个论文的名字一眼就看出,这个的目的是为了解决函数模拟的误差。
按照spinningup的说法,这个算法是基于DDPG的,做了三个方面的改进:
第一点:Clipped Double Q-learning 第二点:Delayed policy update 第三点:Traget policy smoothing
注意:1:TD3是一个off policy的算法 2:TD3只能用于连续动作空间
Double DQN在2016年被提出,为什么不用这个直接替代呢?
后来发现AC框架下,policy改变的非常缓慢,也就意味着current net和target net估计出来的结果非常非常接近,所以起不了作用。
于是提出了一个double q learning的变体,但是偏差很小 ,或者无偏高方差在将来都会导致过估计。
于是我们提出了一个clipped double q variant
考虑到noise与过估计偏差的联系,文章提出了几个方法用于减小方差:
1:target NN 2 :为了解决policy和value的耦合问题,提出了delaying policy update 知道value估计收敛 3:一种新的正则化策略(SARSA style update bootstraps similar action estimates)
在之前的工作就已经对估计偏差进行了研究,我们主要是对着一项研究的两项进行阐述:高估偏差 和 高方差
先说一下整体的结构:
两个 Q 函数,一个策略
同时有两个Q函数对应的target net,一个策略对应的target policy
每次筛选出【o1,a,o2,r,d】后,
先将o1和a,d传入两个Q函数,和策略,得到两个Q值,q1,q2,和策略得出的选择的动作 a1,以及获得其中一个网络Q1的采用筛选出来动作a1后得到的 q1_a1 值(也是Q值)
policy的loss就是直接min -q1_a1
再将o2传入target policy网络中,得到target网络筛选出来的动作 target_a
然后对target_a添加噪音,得到新的target_a。
将target_a ,o2,d传入target Q网络中,得到target_q1,target_q2
然后再算bellman backup : r+min(target_q1,target_q2)
于是两个Q网络的loss 就变成了 backup - qi
至于更新,平时只train Q网络,每个一定的步数去train pi网络,同时update target params
以上就是完整的结构。
再根据论文说一下三个创新点的原因:
Clipped Double Q-learning:为了降低过估计。
delayed policy update:文章证明了target Net具有更加稳定,且减少了error在多步的状态中。
target policy smoothing Regularization:原文解释:其实就是为了解决DDPG会因为小的value 估计导致大的动作误差,所以认为相似的动作具有相似的value
以上,证明需要看具体论文(证明了收敛性,过估计,实现细节等)