当前位置: 首页 > news >正文

网站正在建设中热用手机怎么申请免费自助网站

网站正在建设中热,用手机怎么申请免费自助网站,南宁定制网站制作价格,做公司网站的公司强化学习原理python篇06#xff08;拓展#xff09;——DQN拓展 n-steps代码结果 Double-DQN代码结果 Dueling-DQN代码结果 Ref 拓展篇参考赵世钰老师的教材和Maxim Lapan 深度学习强化学习实践#xff08;第二版#xff09;#xff0c;请各位结合阅读#xff0c;本合集只… 强化学习原理python篇06拓展——DQN拓展 n-steps代码结果 Double-DQN代码结果 Dueling-DQN代码结果 Ref 拓展篇参考赵世钰老师的教材和Maxim Lapan 深度学习强化学习实践第二版请各位结合阅读本合集只专注于数学概念的代码实现。 n-steps 假设在训练开始时顺序地完成前面的更新前两个更新是没有用的因为当前Q(s2, a)和Q(s2, a)是不对的并且只包含初始的随机值。唯一有用的更新是第3个更新它将奖励r3正确地赋给终结状态前的状态s3。 现在来完成一次又一次的更新。在第2次迭代正确的值被赋给了Q(s2, a)但是Q(s1, a)的更新还是不对的。只有在第3次迭代时才能给所有的Q赋上正确的值。所以即使在1步的情况下它也需要3步才能将正确的值传播给所有的状态。 为此修改第四步 4将转移过程(s, a, r, s’)存储在回放缓冲区中 r 用 n 步合计展示。 代码 修改ReplayBuffer和DQN中的calculate_y_hat_and_y实现 class ReplayBuffer:def __init__(self, episode_size, replay_time):# 存取 queue episodeself.queue []self.queue_size episode_sizeself.replay_time replay_timedef get_batch_queue(self, env, action_trigger, batch_size, epsilon):def insert_sample_to_queue(env):state, info env.reset()stop 0episode []while True:if np.random.uniform(0, 1, 1) epsilon:action env.action_space.sample()else:action action_trigger(state)next_state, reward, terminated, truncated, info env.step(action)episode.append([state, action, next_state, reward, terminated])state next_stateif terminated:state, info env.reset()self.queue.append(episode)episode []stop 1continueif stop replay_time:self.queue.append(episode)episode []breakdef init_queue(env):while True:insert_sample_to_queue(env)if len(self.queue) self.queue_size:breakinit_queue(env)insert_sample_to_queue(env)self.queue self.queue[-self.queue_size :]return random.sample(self.queue, batch_size)class DQN:def __init__(self, env, obs_size, hidden_size, q_table_size):self.env envself.net Net(obs_size, hidden_size, q_table_size)self.tgt_net Net(obs_size, hidden_size, q_table_size)# 更新net参数def update_net_parameters(self, updateTrue):self.net.load_state_dict(self.tgt_net.state_dict())def get_action_trigger(self, state):state torch.Tensor(state)action int(torch.argmax(self.tgt_net(state).detach()))return action# 计算y_hat_and_ydef calculate_y_hat_and_y(self, batch, gamma):# n_stepstate_space []action_spcae []y []for episode in batch:random_n int(np.random.uniform(0, len(episode), 1))episode episode[-random_n:]state, action, next_state, reward, terminated episode[-1]q_table_net dqn.net(torch.Tensor(next_state)).detach()reward reward (1 - terminated) * gamma * float(torch.max(q_table_net))episode[-1] state, action, next_state, reward, terminatedreward_space [_[3] for _ in episode]r_n_steps discount_reward(reward_space, gamma)y.append(r_n_steps)state, action, next_state, reward, terminated episode[0]state_space.append(state)action_spcae.append(action)y_hat self.tgt_net(torch.Tensor(np.array(state_space)))y_hat y_hat.gather(1, torch.LongTensor(action_spcae).reshape(-1, 1))return y_hat.reshape(-1), torch.tensor(y)def predict_reward(self):state, info env.reset()step 0reward_space []while True:step 1state torch.Tensor(state)action int(torch.argmax(self.net(state).detach()))next_state, reward, terminated, truncated, info env.step(action)reward_space.append(reward)state next_stateif terminated:state, info env.reset()continueif step 100:breakreturn float(np.mean(reward_space)) 结果 以相同的参数进行训练 绿色的线为n-steps DQN发现比普通DQN收敛速度显著提高。 Double-DQN 由于普通DQN是一种boostrap方法来更新自己的值在 6对于回放缓冲区中的每个转移过程如果片段在此步结束则计算目标 y r yr yr否则计算 y r γ m a x Q ^ ( s , a , w ) yr\gamma max \hat Q(s, a, w) yrγmaxQ^​(s,a,w) 过程中max步骤又扩大了该高估的误差影响为了解决该问题Deep Reinforcement Learning with Double Q-Learning论文的作者建议使用训练网络来选择动作但是使用目标网络的Q值。所以新的目标Q值为 Q ( s t , a t ) r t γ Q ′ ( s t 1 , arg max ⁡ a Q ( s t 1 , a ) ) Q(s_t,a_t) r_t\gamma Q(s_{t1}, \argmax \limits_{a} Q(s_{t1}, a)) Q(st​,at​)rt​γQ′(st1​,aargmax​Q(st1​,a)) 代码 修改第六步 class DQN:def __init__(self, env, obs_size, hidden_size, q_table_size):self.env envself.net Net(obs_size, hidden_size, q_table_size)self.tgt_net Net(obs_size, hidden_size, q_table_size)# 更新net参数def update_net_parameters(self, updateTrue):self.net.load_state_dict(self.tgt_net.state_dict())def get_action_trigger(self, state):state torch.Tensor(state)action int(torch.argmax(self.tgt_net(state).detach()))return action# 计算y_hat_and_ydef calculate_y_hat_and_y(self, batch, gamma):y []action_sapce []state_sapce []## for state, action, next_state, reward, terminated in batch:q_table_net self.net(torch.Tensor(next_state)).detach()## double DQN tgt_net_action self.get_action_trigger(next_state)y.append(reward (1 - terminated) * gamma * float(q_table_net[tgt_net_action]))action_sapce.append(action)state_sapce.append(state)y_hat self.tgt_net(torch.Tensor(np.array(state_sapce)))y_hat y_hat.gather(1, torch.LongTensor(action_sapce).reshape(-1, 1))return y_hat.reshape(-1), torch.tensor(y)def predict_reward(self):state, info env.reset()step 0reward_space []while True:step 1state torch.Tensor(state)action int(torch.argmax(self.net(state).detach()))next_state, reward, terminated, truncated, info env.step(action)reward_space.append(reward)state next_stateif terminated:state, info env.reset()continueif step 100:breakreturn float(np.mean(reward_space))结果 Dueling-DQN 这个对DQN的改进是在2015年的“Dueling Network Architectures for Deep Reinforcement Learning”论文中提出的。 该论文的核心发现是神经网络所试图逼近的Q值Q(s, a)可以被分成两个量状态的价值V(s)以及这个状态下的动作优势A(s, a)。 在同一个状态下所有动作的优势值之和为因为所有动作的动作价值的期望就是这个状态的状态价值。 这种约束可以通过几种方法来实施例如通过损失函数。但是在论文中作者提出一个非常巧妙的解决方案就是从神经网络的Q表达式中减去优势值的平均值它有效地将优势值的平均值趋于0。 Q ( s , a ) V ( a ) A ( s , a ) − 1 n ∑ a ′ A ( s , a ′ ) Q(s,a) V(a)A(s,a)-\frac{1}{n}\sum _{a}A(s,a) Q(s,a)V(a)A(s,a)−n1​a′∑​A(s,a′) 这使得对基础DQN的改动变得很 简单为了将其转换成Dueling DQN只需要改变神经网络的结构而 不需要影响其他部分的实现。 代码 class DuelingNet(nn.Module):def __init__(self, obs_size, hidden_size, q_table_size):super().__init__()# 动作优势A(s, a)self.a_net nn.Sequential(nn.Linear(obs_size, hidden_size),nn.ReLU(),nn.Linear(hidden_size, q_table_size),)# 价值V(s)self.v_net nn.Sequential(nn.Linear(obs_size, hidden_size),nn.ReLU(),nn.Linear(hidden_size, 1),)def forward(self, state):if len(torch.Tensor(state).size())1:state state.reshape(1,-1)v self.v_net(state)a self.a_net(state)mean_a a.mean(dim1,keepdimTrue)# torch.mean(a, axis1).reshape(-1, 1)return v a - mean_a 结果 Ref [1] Mathematical Foundations of Reinforcement LearningShiyu Zhao [2] 深度学习强化学习实践第二版Maxim Lapan
http://www.pierceye.com/news/838889/

相关文章:

  • 签订网站建设合同山东建设工程招标网官方网站
  • 迅速建设企业网站外贸网站服务器选择
  • 建设网站详细流程wordpress建站数据库
  • 贵阳建立网站聊城网站建设设计
  • 网站怎么设置关键词百度网址大全首页设为首页
  • 中企动力网站怎么样怎么做公司内网网站
  • 求职网站网页模板一个网站可以做多少个小程序
  • 深圳市住房和建设局网站登录怎样在百度建网站
  • 外国做视频在线观看网站asp简单网站开发
  • 介绍移动互联网的网站有哪些做网站时怎么选择数据库类型
  • 工厂的网站在哪里做的免费建站的软件
  • 中国电子系统建设三公司网站网站建设上如何提高市场竞争力
  • 青海住房和建设厅网站电子商务网站建设与管理教案
  • 免费在线自助建站搬瓦工可以长期做网站
  • 建设外贸网站报价外贸网站制作推广公司
  • 网站开发人员工作内容白沟做网站
  • 产品展示网站模板源码产品宣传
  • 国内wordpress有名的网站河南住房和城乡建设厅网站资质
  • 湛江seo建站wordpress5.1更新
  • 泊头公司做网站做网站价格差异很大
  • 网站开发啊wordpress 图片本地化
  • 尚品中国多年专注于高端网站建设免费加盟无需店面
  • 游标卡尺 东莞网站建设wordpress 域名解析
  • 站长工具视频怎么开免费网站
  • 网站地址怎么申请注册最近新闻大事
  • interidea 做网站网站域名备案 更改
  • 哈尔滨公司做网站动画设计的大学排名
  • 网站建设与网页制作试卷网站搜索引擎优化推广
  • 网站子目录设计网站开发数据库技术
  • 可以做音基题的音乐网站上海网站设计公司有哪些