本文首发于:行者AI
众所周知,在基于价值学习的强化学习算法中,如DQN,函数近似误差是导致Q值高估和次优策略的原因。我们表明这个问题依然在AC框架中存在,并提出了新的机制去最小化它对演员(策略函数)和评论家(估值函数)的影响。我们的算法建立在双Q学习的基础上,通过选取两个估值函数中的较小值,从而限制它对Q值的过高估计。(出自TD3论文摘要)
1. 什么是TD3
TD3是Twin Delayed Deep Deterministic policy gradient algorithm的全称。TD3全称中Deep Deterministic policy gradient algorithm就是DDPG的全称。那么DDPG和TD3有何渊源呢?其实简单的说,TD3是DDPG的一个优化版本。
1.1 TD3为什么被提出
在强化学习中,对于离散化的动作的学习,都是以DQN为基础的,DQN则是通过的 a r g M a x Q t a b l e argMaxQ_{table} argMaxQtable的方式去选择动作,往往都会过大的估计价值函数,从而造成误差。在连续的动作控制的AC框架中,如果每一步都采用这种方式去估计,导致误差一步一步的累加,导致不能找到最优策略,最终使算法不能得到收敛。
1.2 TD3在DDPG的基础上都做了些什么
-
使用两个Critic网络。使用两个网络对动作价值函数进行估计,(这Double DQN 的思想差不多)。在训练的时候选择 m i n ( Q θ 1 ( s , a ) , Q θ 2 ( s , a ) ) min(Q^{\theta1}(s,a),Q^{\theta2}(s,a)) min(Qθ1(s,a),Qθ2(s,a))作为估计值。
-
使用软更新的方式 。不再采用直接复制,而是使用 θ = τ θ ′ + ( 1 − τ ) θ \theta = \tau\theta^′ + (1 - \tau)\theta θ=τθ′+(1−τ)θ的方式更新网络参数。
-
使用策略噪音。使用Epsilon-Greedy在探索的时候使用了探索噪音。(还是用了策略噪声,在更新参数的时候,用于平滑策略期望)
-
使用延迟学习。Critic网络更新的频率要比Actor网络更新的频率要大。
-
使用梯度截取。将Actor的参数更新的梯度截取到某个范围内。
2. TD3算法思路
TD3算法的大致思路,首先初始化3个网络,分别为 Q θ 1 , Q θ 2 , π ϕ Q_{\theta1},Q_{\theta2},\pi_\phi Qθ1,Qθ2,πϕ ,参数为 θ 1 , θ 2 , ϕ \theta_1,\theta_2,\phi θ1,θ