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

广州市住宅建设发展有限公司网站做企业网站要不要我们自己提供网站相关的图片?

广州市住宅建设发展有限公司网站,做企业网站要不要我们自己提供网站相关的图片?,在线翻墙,网站建设市场趋势1 组成#xff08;Target Network Delayed Training#xff09; Actor网络#xff1a;这个网络负责根据当前的状态输出动作值。在训练过程中#xff0c;Actor网络会不断地学习和优化#xff0c;以输出更合适的动作。Critic网络#xff1a;TD3中有两个Critic网络#xff… 1 组成Target Network Delayed Training Actor网络这个网络负责根据当前的状态输出动作值。在训练过程中Actor网络会不断地学习和优化以输出更合适的动作。Critic网络TD3中有两个Critic网络也称为Twin Critic。这两个网络的主要功能是评估Q值action的未来奖励值也就是根据给定的状态和动作来估计未来的奖励。使用两个Critic网络可以减小估计的Q值的方差使结果更加稳定。 目标网络TD3还引入了目标网络的概念。目标网络是Actor和Critic网络的副本它们用于在训练过程中提供稳定的目标值。这有助于防止训练过程中的震荡和不稳定。 2 特点 回放缓冲区replay bufferReplay Buffer 是一个固定大小的循环队列用于存储智能体与环境交互产生的经验experience四元组数据包含了不同时间步长的状态、动作、奖励和下一个状态s,a,r,s_。通过这些数据TD3能够学习到如何在给定的状态下选择最优的动作以最大化未来的奖励。 - store_transition()方法TD3采用了截断双Q学习、在目标策略网络中加入噪声以及降低策略网络和目标网络的更新速度等策略以进一步提高算法的稳定性和性能。random noisy指的是随机生成噪声用于增加动作的多样性避免策略过于稳定。体现MLP多层感知机Multi-Layer Perceptron是一种基于神经网络的分类器常用于解决分类问题。MLP 中的一层由若干个神经元组成每个神经元接收上一层的输出并对其进行加权和再经过激活函数进行非线性变换。MLP 层可以被看作是一种前向传播过程它将上一层的输出作为输入经过若干次变换最后得到输出结果。在TD3中有主网络目标网络每个网络又分别包含策略网络和Q值网络主网络在训练过程中不断地更新其权重和偏置通过梯度下降等优化算法直接更新参数目标网络通过定期地从主网络中复制得到polyak加权平均的以更新。这种定期复制参数的方式确保了目标网络能够跟随主网络的进步同时又保持了相对的稳定性训练会不太稳定。这是因为目标网络在一段时间内是固定的所以它提供的目标Q值是稳定的这有助于减少训练过程中的波动提高算法的稳定性。 3 代码 tf.placeholder是一个用于定义输入数据的占位符。当运行TensorFlow的会话session时你需要为这些占位符提供实际的值。  self.x_ph tf.placeholder(tf.float32, [None, obs_dim])x_ph是一个占位符本代码定义这个占位符假设obs_dim是10那么你可以为self.x_ph提供形状为[1, 10]、[10, 10]、[100, 10]等的张量只要它们是浮点数类型且第二个维度是10。reward一般写为[None,] 定义了一个一维张量其长度可以是任意的一般为批次大小。同时注意区分 tf.variable_scope(main)定义了一个用于Actor-Critic方法的神经网络结构 with tf.variable_scope(main):self.pi, self.q1, self.q2, self.q1_pi mlp_actor_critic(self.x_ph, self.a_ph, **ac_kwargs)     ​​actor网络pi输出动作策略两个critic网络q1、q2输出动作的q值q1_pi也是一个critic网络输出pi输出的动作的q值 最后是输出动作策略的q值 神经网络细节hidden_sizes 是一个元组tuple它定义了多层感知机MLP中隐藏层的尺寸即每个隐藏层中的神经元数量。例如如果 hidden_sizes(400, 300)那么 MLP 将有两个隐藏层第一层有 400 个神经元第二层有 300 个神经元。 list(hidden_sizes)[act_dim] 的作用是将 hidden_sizes 元组转换为列表并在其后追加一个新的元素 act_dim。这里的 act_dim 是动作空间的维度即输出层的神经元数量。 list(hidden_sizes)[act_dim] 则定义了整个神经网络包括2个400尺寸和300尺寸的隐藏层和动作数量尺寸的输出层的层尺寸。一些参数含义及选择 4 步骤 4.1 initTD3 net TD3(a_dim, s_dim, a_bound,batch_size64)         1定义占位符x_ph(主网络S)、x2_ph(目标网络S)、a_ph(A)、r_ph(R)、d_ph(Done) self.x_ph tf.placeholder(tf.float32, [None, obs_dim]) # 输入self.x2_ph tf.placeholder(tf.float32, [None, obs_dim])self.a_ph tf.placeholder(tf.float32, [None, a_dim]) # actionself.r_ph tf.placeholder(tf.float32, [None,]) # rewardself.d_ph tf.placeholder(tf.float32, [None,]) # done标识          2定义主网络的actor-critic神经网络actor策略网络pi输出动作两个criticQ值网络q1、q2输出动作的q值(减少过估计)q1_pi也是一个critic网络输出pi输出的动作的q值。 with tf.variable_scope(target):# 只关心第一个返回值pi_targ它代表了目标策略网络的输出pi_targ, _, _, _ mlp_actor_critic(self.x2_ph, self.a_ph, **ac_kwargs)          3定义目标网络的actor策略网络只关心目标actor策略网络pi_targ的输出动作。pi_targ 是一个与原始策略网络 pi 结构相同的神经网络输出但它的权重在训练过程中会以不同的方式更新通常是缓慢地跟踪原始网络的权重。这种延迟更新的目标网络有助于稳定学习过程因为它提供了一个更一致的目标来优化原始网络。在TD3中目标网络通常用于计算目标Q值这些目标Q值然后用于训练原始Q值网络。这种方法有助于减少过估计问题提高算法的稳定性和性能。         4目标策略平滑在目标策略 pi_targ 上添加噪声 epsilon噪声 epsilon 是一个正态分布其均值为 0标准差为 target_noise最终将噪声大小修建到noise_clip范围内添加后创建了一个新的动作 a2修建到action_bound范围内。目标策略平滑是一种正则化技术它有助于减少过拟合并鼓励算法探索不同的动作。在TD3中它还可以帮助减少由于函数近似误差引起的Q值估计的过高问题。         5定义目标网络的criticQ值网络输入修改后的动作 a2目标策略平滑后的策略和状态计算目标Q值 q1_targ 和 q2_targ。这些目标Q值将用于训练原始Q值网络。 with tf.variable_scope(target, reuseTrue):# 生成均值为0方差为target_noise的噪声epsilon tf.random_normal(tf.shape(pi_targ), stddevtarget_noise)# 噪声值被裁剪到[-noise_clip, noise_clip]的范围内epsilon tf.clip_by_value(epsilon, -noise_clip, noise_clip)# 在目标策略pi_targ上添加噪声epsilona2 pi_targ epsilon# 加了噪声的动作再次被裁剪到动作空间的界限[-self.act_limit, self.act_limit]内a2 tf.clip_by_value(a2, -self.act_limit, self.act_limit)# 输入平滑后的动作定义目标Q值网络_, q1_targ, q2_targ, _ mlp_actor_critic(self.x2_ph, a2, **ac_kwargs)          6取q1_targ 和 q2_targ这两个估计中的最小值作为最终的Q值目标。这样做可以进一步减少过估计的风险。 min_q_targ tf.minimum(q1_targ, q2_targ)          7Bellman备份操作描述了状态-动作值函数Q函数的递归更新规则。当前状态-动作对的值可以通过加上奖励self.r_ph和折扣后的下一个状态的最大Q值gamma * (1 - self.d_ph) * min_q_targ来计算。当self.d_ph为1时表示当前状态是终止状态没有未来的奖励或状态。同时使用tf.stop_gradient阻止梯度传播不需要对备份backup变量进行梯度计算因为它只是用于计算损失函数而不是用于更新网络权重。 # Bellman备份并阻止梯度传播 backup tf.stop_gradient(self.r_ph gamma * (1 - self.d_ph) * min_q_targ)          8计算损失函数policy loss和Q-Value losses。         - 策略损失是策略网络输出的动作在Q网络中的Q值q1_pi期望的负数策略网络的目标是最大化这个Q值即选择能导致高回报的动作。因为优化器通常用于最小化损失所以取负值来将问题转化为最小化问题。tf.reduce_mean 用于计算所有样本的平均损失。         - Q值损失是通过计算Q网络估计的两个Q值q1、q2与目标Q值backup之间的均方误差MSE来得到的。这样通过最小化Q值损失Q网络会逐渐学习到更准确的Q值估计。 self.pi_loss -tf.reduce_mean(self.q1_pi) q1_loss tf.reduce_mean((self.q1 - backup) ** 2) q2_loss tf.reduce_mean((self.q2 - backup) ** 2) self.q_loss q1_loss q2_loss          9定义策略网络优化器和Q值网络优化器使用策略网络优化器来最小化策略损失函数pi_loss指定了应该更新变量为主网络的策略网络main/pi使用策略网络优化器来最小化策略损失函数pi_loss指定了应该更新变量为主网络的策略网络main/pi # 定义策略网络优化器 pi_optimizer tf.train.AdamOptimizer(learning_ratepi_lr) # 定义Q值网络优化器 q_optimizer tf.train.AdamOptimizer(learning_rateq_lr) # 使用pi_optimizer优化器来最小化self.pi_loss指定了应该更新变量main/pi self.train_pi_op pi_optimizer.minimize(self.pi_loss,var_listget_vars(main/pi)) # 使用q_optimizer 优化器来最小化self.q_loss指定了应该更新变量main/q self.train_q_op q_optimizer.minimize(self.q_loss,var_listget_vars(main/q))          10Polyak 平均用于目标变量的更新目标网络的参数v_targ被更新为当前v_targ0.995和主网络参数v_main0.005的加权和使得目标网络参数的变化比主网络更加平滑。polyak用于控制目标网络参数更新的速度越小就变得越慢。 self.target_update tf.group([tf.assign(v_targ, polyak * v_targ (1 - polyak) * v_main)for v_main, v_targ in zip(get_vars(main), get_vars(target))])          11将目标网络的参数初始化为与主网络相同。这是训练开始时的常见做法以确保两者在开始时是同步的。 target_init tf.group([tf.assign(v_targ, v_main)for v_main, v_targ in zip(get_vars(main), get_vars(target))])          12TensorFlow 会话和变量初始化执行11 # 创建一个TensorFlow会话 self.sess tf.Session() # 初始化所有全局变量 self.sess.run(tf.global_variables_initializer()) # 将目标网络的参数初始化为与主网络相同。 self.sess.run(target_init) 4.2 get_action方法用于根据当前的状态 s 来选择一个动作并在需要时添加一些噪声。给定一个缩放比例action_noisenoise_scale为0.1 4.3 store_transition()方法对1得到的a放入step中执行随机事件影响新的状态s_和奖励r将s,a,r,s_放入replay buffer。 4.4 learn()方法         - 算法从 Replay Buffer 中随机采样一小批经验用于更新Q值网络和策略网络actor network。这种随机采样有助于打破经验之间的相关性使得训练更加稳定。从回放缓冲区中随机抽取一个大小为batch_size64的批次数据。         - 根据抽取的批次数据构建一个字典feed_dict         - Q值网络的更新将字典中的数据依次喂给step进行q网络更新每次都计算q1、q1的qloss8、更新q网络9         - 策略网络的更新延迟更新只有当 self.learn_step 是 self.policy_delay 的整数倍时才会更新策略网络。这有助于稳定训练过程因为Q值网络通常比策略网络更容易训练。此外除了更新策略网络还执行了目标网络的更新 self.target_update10这是为了保持目标网络的稳定性。         ** 延迟更新好处在策略网络的更新和Q值网络的更新之间加入了一个时间差。这意味着Q值网络有更多的机会收敛到一个较为稳定和准确的预测然后再将这些预测用于更新策略网络。这样策略网络可以在更可靠的信息基础上进行更新有助于减少由于Q值网络的不稳定性而导致的错误更新。 5 一些问题 为什么只优化主网络的策略网络和Q值网络并不优化目标网络         目标网络在TD3中的主要作用是提供一个稳定的目标Q值来计算损失。在训练过程中如果直接优化目标网络那么目标Q值将会变得不稳定从而影响训练的稳定性和收敛性。因此在TD3中我们固定目标网络的参数一段时间例如每更新几次主网络后才更新一次目标网络这样可以确保目标Q值在一段时间内是稳定的。这样我们就可以在稳定的目标Q值基础上优化主网络的Q值网络和策略网络。虽然不直接优化目标网络但是通过定期将主网络的参数复制到目标网络间接地实现了目标网络的更新。这种更新方式确保了目标网络的稳定性同时又能跟上主网络的进步。 为什么目标网络是先通过策略网络生成动作a再将经过平滑处理的a值送入Q值网络         在TD3中目标网络的目的是提供一个稳定的目标Q值。首先目标策略网络根据下一个状态生成一个动作这个动作是通过策略网络的输出得到的。然后这个动作会被加上一个小的噪声通常是裁剪的正态分布噪声以鼓励探索并减少过估计问题。最后这个经过平滑处理的动作被送入目标Q值网络以计算目标Q值。理解为目标网络是给出结果但主网络是给出a以及通过已知数据s、a、s_、r对两个网络进行更新没有先后过程         主网络同时接收动作和状态是因为主网络需要同时更新策略网络和Q值网络。策略网络用于生成当前状态下的动作而Q值网络则用于评估这个动作的价值。这两个网络的输出共同决定了当前策略的好坏因此需要同时更新。 为什么计算出来两个主Q值网络的损失之后要将他们加起来         TD3使用两个Q值网络Q1和Q2来减少过估计问题。每个Q值网络都会独立地计算一个Q值并分别计算损失。将这两个损失相加后再进行反向传播更新网络参数。这样做的目的是同时优化两个Q值网络确保它们都能提供准确的Q值估计。通过取两个Q值网络的最小值作为当前策略的Q值可以进一步减少过估计问题。 为什么要对目标网络进行Polyak平均 Polyak平均也称为软更新是一种平滑地更新目标网络参数的方法。在TD3中目标网络的参数不是直接复制主网络的参数而是通过一个较小的学习率例如0.005来逐步接近主网络的参数。这种更新方式确保了目标网络的稳定性同时又能跟上主网络的进步。Polyak平均可以有效地减少训练过程中的波动提高算法的稳定性。                2.  反向传输         在深度学习中反向传播Backpropagation是一个用于训练神经网络的重要算法。它的核心思想是通过计算损失函数对模型参数的梯度从输出层反向传递梯度信息以便更新模型参数从而最小化损失函数使模型更好地拟合训练数据。 具体到“将这两个损失相加后再进行反向传播更新网络参数”这一步骤我们可以这样理解         首先在训练神经网络时通常会定义一个损失函数来表示预测值与实际值之间的误差。在这个场景中由于有两个Q值网络Q1和Q2因此会有两个对应的损失函数分别计算Q1和Q2网络的预测误差。         接下来这两个损失函数会分别计算出各自的损失值然后将这两个损失值相加得到一个总的损失值。这个总的损失值就代表了整个神经网络在当前状态下的预测误差。         然后进入反向传播阶段。在这个阶段算法会使用链式法则来计算损失函数对每个模型参数的梯度。这些梯度表示了参数对损失函数的影响程度即如果稍微调整这些参数损失函数会如何变化。         最后根据计算出的梯度使用优化算法如梯度下降来更新网络的参数。通过不断迭代这个过程神经网络会逐渐学习到如何更好地拟合训练数据从而提高预测性能。
http://www.zqtcl.cn/news/853968/

相关文章:

  • 哈尔滨营销网站建设wordpress 加载图片不显示
  • 电商网站功能结构图网站做中秋专题怎么弄
  • 深圳专业建站平台陕西省建设工程质量安全监督总站网站
  • 制作网页的网站的软件是用户反馈数据分析软件园
  • 南京 做网站seo查询网站
  • 卖高仿名牌手表网站共享wifi小程序搭建
  • c#网站开发模板想在意大利做购物网站
  • 2015做那些网站能致富60天做网站
  • 沈阳个人建站模板网站图片计时器怎么做
  • 福州定制网站开发北京排名seo
  • 地方门户网站开发方案长沙有哪个学校可以学网站建设
  • 建个购物网站水果建设网站前的市场分析
  • 建网站的目的小程序登录代码
  • 南京有名的网站建设公司自学室内装修设计教程
  • 新乡市做网站的公司开发公司简介企业介绍
  • 礼品网站模板淘宝店铺购买交易平台
  • 属于公司的网站怎么做外贸服装网站开发
  • 做暧网站泸州公司做网站
  • 做文库类网站网站所有权 备案
  • 网站开发主要内容站长之家网站查询
  • 网站推广优化排名公司wordpress添加说说
  • 维护一个网站要多少钱企业怎么做网站
  • 怎么做兼职网站成都必去十大网红景点
  • 网站建设如何传视频教程电脑网站设计公司
  • 网站开发培训教程制作网站开发公司
  • 网站前端做报名框代码seo教育培训机构
  • 做网站要学习什么分销网站
  • 镇江市住房和城乡建设局网站常州建设网站
  • 学做美食的网站男女做暖暖到网站
  • 手机的网站建设目标刚做的网站 搜不到