本文首发于:行者AI

众所周知,在依据价值学习的强化学习算法中,如DQN,函数近似过错是导致Q值高估和次优战略的原因。咱们表明这个问题仍然在AC结构中存在,并提出了新的机制去最工商银行小化它对艺人(战略函数)算法和议论家(估值函数)的影响。咱们的算法建立在双Q学习的基础上Go,经过选取两个估值工商银行函数中的较算法是什么小值,然后约束它对Q值的过高估量强化学习。(出自TD3论文摘要)

1. 什么是TD3

TD3是Twin Delayed D算法的时刻复杂度是指什么eep Deterministic policy gradient algorithm的全称。TD3全称中Deep Deterministic policy gradient algorithm就是DDPG的全称。那么DDPG和TD3有何渊源呢?其实简略的说,TD3是DD算法工程师PG的一个优化版别。

1.1 TD3为什么被提出

在强化学习中,关于离散化的动作的学习,都是以DQN为基础的,DQN则是经过的argMaxQtableargMaxQ_{table}的方法去挑选动作,往往都会过大强化学习的估量价值函算法导论数,然后构成过错。在连续的google动作控制的AC结构中,如果每一步都选用这种方法去估量,导致过错一步一步的累加,导致不能找到最优战略,最终算法使算法不能得到收敛。

1.2 TD3在DDPG的基础上都做了些什么

  • 运用两个Critic网络。运用两个网络对动作价值函数进行估量,(这Double DQN 的思想差不多算法导论)。在练习的时分挑选Gomin(Q1(s,a),Q2(s,a))min(Q^{theta1}(s,a),Q^{theta2}(s,a))作为估量值。

  • 运用软更新的方法 。不再选用直接复制,而是运用 =′+(1−)theta = tautheta^′ + (1 – tau)theta的方法更新网络参数。

  • 运用战略噪音。运用Epsilon-Greedy在探求的时分运用了探求噪音。(仍是用了战略噪声,在更新参数的时分,用于滑润战略希望)

  • 运用推迟学习。Critic网络更新的频率要比Actor网络更新的频率要大算法导论

  • 运用梯度截取。将Actor宫颈癌龚俊参数更新的梯度截取到某个范围内。

2. TD3算法思路

浅谈TD3:从算法原理到代码完成

TD3算法的大致思路,首要初始化算法3个网络,别离为Q龚俊1,Q公积金2,Q_{theta1},Q_{theta2},pi_phi ,参数为1,2,theta_1,theta_2,phi,在初始化3个Target网络,别离将开始初始化的3个算法网络参数别离对应的复制给target算法的时刻复杂度是指什么宫颈癌疫苗络。1′←1,2′←2,′←theta{_1^′}leftarrowtheta_1,the强化学习ta{_2^′}leftarrowtheta_2,phi_′leftarrowp算法的五个特性hi 。初始化Replay Buffer be狗狗币ta 。然后经过循环迭代,一次次找到最优战略。每次迭代,在选算法的有穷性是指择acGotion的值的时分参加了噪音,使a(s)+a~pi_phi(s) + epsilon∼N(0,)epsilon sim N(0,sigma),然后将算法的特征(s,a,r,s′)(s,a,r,s^′)放入beta,当beta抵达必定的值时分。然后随机从beta中Sample出Mini-Batc算法的时刻复杂度取决于h个数据,经过a~∼′(s′)+tilde{a} simpi_{phi^′}(s^′) + epsilon∼clip(N(0,~),−c,c)epsilon sim clip(Ngoogle(0,tildesigma),-c,c),核算出s′s^′状况下对应的Action的值a~tilde a,经过s′,a~s^′,tilde a,核算出targetQ1,targetQ2targetQ1,targetQ2,获取min(targetQ1,targetQ)min(targetQ1,targetQ),为s′s^′targetQtargetQ值。

经过贝尔曼宫颈癌方程核算sstargetQtargetQ值,经过两个Current网络依据s,as,a别离核算出当时的QQ值,在将两个当时网络的QQ值和targetQtargetQ值经过MSE核算Loss,更新参数。Critic网络更新之后,Actor网络则选用了延时更新,(一般选用Critic更新2次,Actor更新1次)。经过梯度上升的方法更新Actor网络。经过软更新的方法,更新target网络。

  • 为什么在更新C枸杞ritic网络时,在核算Action值的时分参加噪音,是为了滑润前面参加的噪音。

  • 贝尔曼方程:针对一个连续的MRP(Markov Reward Process)的进程(龚俊连续的状况奖赏进程)宫颈癌,状况ss转移到下一个状况s′s^′ 的概率的固定的算法的时刻复杂度是指什么,与前面的几轮状况无关。其间,vv表明一个对当时状况state 进行估值龚俊的函数。公积金gamma一般为趋近于1,但是小于1。

浅谈TD3:从算法原理到代码完成

3. 代码结束

代码主要是依据DD强化学习PG的代码以及TD3的论文复现的,运用的是Pytorc枸杞h1.7结束的。

3.1 建立网络结构

Q1网络结构主要是用于更新Actor网络

class Actor(nn.Module):
def __init__(self, stat算法规划与剖析e_dim, action_dim, max_action):
super(Actor, self).__init__()
self.f1 = nn.Line狗狗币ar(state_dim, 256)
sel算法导论f.f2 = nn.Linear(256, 128)
self.f3 = nn.Linear算法规划与剖析(128, action_dim)
self.max_action = max_action
def公积金借款 forward(self,x):
x = self.f1(x)
x = F.relu(x)
x = self.f2(x)龚俊
x = F.relu(x)
x = self.f3(x)
return torch.tanh(googlex) * self.max_action
class Cri算法剖析的意图是tic(nn.Module):
def __init__(self, state_dim, action_dim):
super(Critic龚俊,self).__公务员考试init__()
self.f11 = nn.Linear(state_dim+action_dim, 256)
self.f12 = nn.Linear(256, 128)
self.f13 = nn.Linear(128, 1)
self.f21 = nn.算法工程师Linear(state_dim + actiGoon_dim, 256)
self.f22 = nn.Linear(256, 128)
self.f23 = nn.Linear(128, 1)
def forward(self, state, action):
sa = torch.cat([state, action], 1)
x = self.f11(sa)
x = F.relu(x公务员考试)
x = self.f12(x)
x = F.relu(x)
Q1 = self.f13(x)
x = self.f2算法是什么1(sa)
x = F.relu(x)
x = self.f22(x)
x = F.relu(x)
Q2 = self.f23(算法规划与剖析x)
return Q1, Q2

3.2 定义网络

 self.actor = Actor(self.state_dim, self.action_dim, self.max_action)
self.target_actor = copy.deepcopy(se狗狗币l算法的有穷性是指f.actor)
self.actor_optimizer = tor算法的五个特性ch.算法是什么optim.Adam(self.actor.param算法eters(), lr=3e-4)算法的五个特性
#定义critic网络
sel公积金f.critic = Critic(self算法的时刻复杂度是指什么.state_dim, self.action_dim)
self.target_critic = copy.deepcopy(self.critic)
s公务员考试elf.critic公积金借款_optimizer = torch.optim.Adam(sel算法的特征f.critic.parameters(), lr=3e-4)

3.3 更新网络算法的特征

更新网络选用软更新推迟更新等方法

 d算法规划与剖析ef learn(self):
self.total_it += 1
data = self.buffer.smaple(size=1公积金借款28)
state算法规划与剖析, action, done, state_next, reward算法导论 = data
with t算法的有穷性是指orch.no_grad:
noise = (torch.rand_like(action) * self.poli算法cy_noise).clamp(-self.noise_clip, self.noise_clip)
next_action = (self.target_actor(state_next) + noise).clamp(-self.max工商银行_action, self.max_action)
target_Q1,target_Q2 = self.target_critic(state_next, next算法规划与剖析_action)
target_Q = torch.强化学习min(target_Q1, target_Q2)
target_Q = reward + done * self.discount * target_Q
current_Q1, cu算法规划与剖析rrent_Q2 = self.critic(state, action)
critic_loss = F.mse_loss(current_Q1, target_Q) + F.mse_loss(current_Q2算法剖析的意图是, target_Q)
critic_l算法剖析的意图是oss.backward()算法的五个特性
self.critic_optimizer.step()
if s工商银行elf公务员考试.total_it % self.policy_freq == 0:
q1,q2 =强化学习 self.critic(state, self公积金.actor(state))
actor_loss = -torch公积金.min(q1, q2).mean()
self.ac算法规划与剖析tor_opti公积金借款mizer.zero_grad()
actor_loss.backward公积金借款()
self.actor算法规划与剖析_optimizer.step()
for param, target_param in zip(self.c算法ritic.parameters(), self.target_critic.parameters()):
target_param.data.copy_(self.tau * par公积金借款am.data + (1 - self.tau) * target_param.dat狗狗币a)
for param, target_param in zip(s算法工程师elf.actor.parameters(), self.target_actor.算法导论parameters()):
target_param.data.copy_(self.tau * param.data + (1 - self.ta算法剖析的意图是u) * tar算法的时刻复杂度是指什么get_param.data)

4. 总结

TD3是DDPG的一个升级版,在处理很多的问题上,作用要比DDPG的作用好的多,无论是练习速度,仍是成果都有明显算法的有穷性是指的进步。

浅谈TD3:从算法原理到代码完成

5. 资料

  1. proceedings.mlr.press/v80/fu枸杞jimot…

PS:更多技术干货,快重视【公众号 | xingzhe_ai】,与行者一同议论吧!