#强化学习14——TD3算法详解与tensorflow2.0实现上篇文章强化学习13——DDPG算

这就就不可避免的降低了估值函数的准确度,由于估值方法的计算依据贝尔曼方程,即使用后续状态对估值进行更新,这种性质又加剧了精确度的下降。在每一次更新策略时,使用一个不准确的估计值将会导致错误被累加。这些被累加的错误会导致某一个不好的状态被高估,最终导致策略无法被优化到最优,并使算法无法收敛。

在DQN算法中针对Q值过估计的问题采用的是利用双网络分别实现动作的选择和评估,也就是DDQN算法。在TD3算法中,我们也使用两个Critic网络来评估Q值,然后选取较小的那个网络的Q值来更新,这样就可以缓解Q值高估现象。这样或许会导致些许低估,低估会导致训练缓慢,但是总比高估要好得多。

注意:这里我们使用了两个Critic网络,每个Critic网络都有相应的Target网络,可以理解为这是两套独立的Critic网络,都在对输入的动作进行评估,然后通过min()函数求出较小值作为更新目标。所以TD3算法一共用到6个网络。

代码实现:

self.q_net1=QNetwork(state_dim,action_dim,hidden_dim)self.q_net2=QNetwork(state_dim,action_dim,hidden_dim)self.target_q_net1=QNetwork(state_dim,action_dim,hidden_dim)self.target_q_net2=QNetwork(state_dim,action_dim,hidden_dim)self.policy_net=PolicyNetwork(state_dim,action_dim,hidden_dim,action_range)self.target_policy_net=PolicyNetwork(state_dim,action_dim,hidden_dim,action_range)如上所示,包含两套Q网络,用来估计Q值,一套策略网络。具体的网络更新部分和DDPG是流程是一样的,唯一不同的是两个Critic网络算出Q值后,选取最小值去计算目标值:

target_q_min=tf.minimum(self.target_q_net1(target_q_input), self.target_q_net2(target_q_input))target_q_value=reward+(1-done)*gamma*target_q_min然后就是分别对Critic网络和policy网络进行更新。

TD3中使用的第二个技巧就是对Policy进行延时更新。在双网络中,我们让target网络与当前网络更新不同步,当前网络更新d次之后在对target网络进行更新(复制参数)。这样就可以减少积累误差,从而降低方差。同样的我们也可以policy网络进行延时更新,因为actor-critic方法中参数更新缓慢,进行延时更新一方面可以减少不必要的重复更新,另一方面也可以减少在多次更新中累积的误差。在降低更新频率的同时,还应使用软更新:

关于policy网络延时更新的实现也很简单,只需要一个if语句就可以实现

ifself.update_cnt%self.policy_target_update_interval==0其中update_cnt是更新的次数,policy_target_update_interval是policy网络更新的周期,每当critic更新了一定次数后,再更新policy网络。

误差的根源是值函数估计产生的偏差。知道了原因我们就可以去解决它,在机器学习中消除估计的偏差的常用方法就是对参数更新进行正则化,同样的,我们也可以将这种方法引入强化学习中来:

在强化学习中一个很自然的想法就是:对于相似的action,他们应该有着相似的value。

这里的噪声可以看作是一种正则化方式,这使得值函数更新更加平滑。

defevaluate(self,state,eval_noise_scale):state=state.astype(np.float32)action=self.forward(state)action=self.action_range*action#addnoisenormal=Normal(0,1)noise=normal.sample(action.shape)*eval_noise_scaleeval_noise_clip=2*eval_noise_scalenoise=tf.clip_by_value(noise,-eval_noise_clip,eval_noise_clip)action=action+noisereturnaction如代码所示,给动作加上噪音这部分在策略策略网络评估部分实现,evaluate()函数有两个参数,state是输入的状态,参数eval_noise_scale用于调节噪声的大小。可以看到,首先经过前向计算得到输出的动作action。下面详细说下如何给动作加上噪音:首先我们构造一个正太分布,然后根据动作的形状进行取样normal.sample(action.shape),然后乘以参数eval_noise_scale实现对噪音进行缩放,为了防止抽出的噪音很大或者很小的情况,我们对噪音进行剪切,范围相当于两倍的eval_noise_scale。最后把噪音加到action上并输出。

THE END
1.强化学习原理与代码实例讲解强化学习工作原理以及代码深入研究强化学习理论、算法和应用,有助于推动人工智能技术的发展,为解决实际工程问题提供新的思路和方法。 1.4 本文结构 本文将首先介绍强化学习的基本概念和核心算法原理,然后通过代码实例讲解强化学习的具体实现方法,并探讨其在实际应用中的场景和未来发展趋势。https://blog.csdn.net/universsky2015/article/details/140649404
2.7个流行的Python强化学习算法及代码实现详解python目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。这些算法已被用于在游戏、机器人和决策制定等各种应用中,本文我们将对其做一个简单的介绍,感兴趣的可以学习一下+ 目录 目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。 这些算法已被用于在游戏、机器人https://www.jb51.net/article/273488.htm
3.几行代码实现强化学习Gym是用于开发和比较强化学习算法的工具包。 它通常用于实验和研究目的,因为它提供了一个易于使用的界面来处理环境。 只需使用以下命令安装软件包: 复制 pip install gym 1. 之后,您可以使用以下代码创建环境: 复制 import gymenv=gym.make(‘CartPole-v0’) https://www.51cto.com/article/623337.html
4.18.强化学习(QLearning)python代码实现游戏python源码.zip基于Q-Learning强化学习算法走迷宫游戏python源码.zip基于Q-Learning强化学习算法走迷宫游戏python源码.zip基于Q-Learning强化学习算法走迷宫游戏python源码.zip基于Q-Learning强化学习算法走迷宫游戏python源码.zip 基于Q-Learning强化学习算法走迷宫游戏python源码.zip 【备注】 1.项目代码均经过功能验证okhttps://www.iteye.com/resource/weixin_43471818-11166990
5.百度算法岗武功秘籍(中)● 问了反卷积是怎么做的, unpooling中maxPooling怎么实现? 3.1.3 OCR ● OCR识别有哪些算法模型? 3.1.4 图像分类 ● 如果图像分类有百万个class,你会怎么设计模型? 3.2 深度学习-RNN递归神经网络方面 3.2.1 自然语言处理NLP ① Bert ● 文本分类,bert了解吗?输入有什么改进? https://www.flyai.com/article/948
6.强化学习QLearning算法详解腾讯云开发者社区QLearning是强化学习算法中value-based的算法,Q即为Q(s,a)就是在某一时刻的 s 状态下(s∈S),采取 动作a (a∈A)动作能够获得收益的期望,环境会根据agent的动作反馈相应的回报reward r,所以算法的主要思想就是将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。 https://cloud.tencent.com/developer/article/2157015
7.强化学习详解:理论基础与核心算法解析本文详细介绍了强化学习的基础知识和基本算法,包括动态规划、蒙特卡洛方法和时序差分学习,解析了其核心概念、算法步骤及实现细节。 关注作者,复旦AI博士,分享AI领域全维度知识与研究。拥有10+年AI领域研究经验、复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇SCI核心期刊学术论文,上亿营收AI产品研发负责人。https://www.jianshu.com/p/09c44358b4a6
8.2021届计算机科学方向毕业设计(论文)阶段性汇报本课题旨在利用强化学习算法,将与人类的不断交互的信息引入到图像分割的过程中,从而实现交互式的图像分割,增加分割的准确率和收敛速度,最终降低分割所需要的标注成本。 目前现已基于开源的ppo强化学习算法进行修改,完成了算法主体部分的代码框架搭建,并且完善了数据处理、训练过程可视化等一系列实验准备工作。 开展了预训https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3943
9.动手学强化学习(七.1):DQN算法代码jasonzhangxianrong动手学强化学习(七.1):DQN 算法代码 一、代码如下: importrandomimportgymimportnumpy as npimportcollectionsfromtqdmimporttqdmimporttorchimporttorch.nn.functional as Fimportmatplotlib.pyplot as pltimportrl_utilsclassReplayBuffer:'''经验回放池'''def__init__(self, capacity):https://www.cnblogs.com/zhangxianrong/p/18053989
10.头条文章可以看到, 图 5(a)中,红色三角形数据和蓝色圆点数据为标注数据; 图 5(b)中,绿色的小圆点为非标注数据。 图 5(c)显示监督学习将有标签的数据进行分类;而半监督学习如图 5(d)中部分是有标签的,部分是没有标签的,一般而言,半监督学习侧重于在有监督的分类算法中加入无标记样本来实现半监督分类。 https://card.weibo.com/article/m/show/id/2309404598738399395890
11.科学网—[转载]强化学习在资源优化领域的应用基于这种行业趋势,本文针对强化学习算法在资源优化领域的应用展开调研,帮助读者了解该领域最新的进展,学习如何利用数据驱动的方式解决资源优化问题。鉴于资源优化问题场景众多、设定繁杂,划分出3类应用广泛的资源优化问题,即资源平衡问题、资源分配问题、装箱问题,集中进行调研。在每个领域阐述问题的特性,并根据具体的问题特性https://blog.sciencenet.cn/blog-3472670-1312677.html
12.斯坦福提出对比偏好学习:无需强化学习即可从人类反馈中学习与对比学习的联系。CPL 方法直接使用一个对比目标来进行策略学习。研究者表示,鉴于对比学习目标已经在大型数据集和神经网络方面取得了有目共睹的成功,因此他们预计 CPL 能比使用传统强化学习算法的强化学习方法进行更好的扩展。 实践方面需要考虑的问题 对比偏好学习框架提供了一个通用的损失函数,可用于从基于优势的偏好https://m.thepaper.cn/newsDetail_forward_25272676
13.吴翼人工智能基于多样性决策框架,吴翼团队还提出了多个多样性强化学习算法,并开源了多智能体决策代码库MAPPO。目前团队开发的多样性学习框架,是领域内首个能够在机器人控制、星际争霸、多人足球游戏等多个复杂任务场景中,都能自动探索出多样性策略行为的算法框架。同时,基于多样性策略为进行自我博弈训练,实现在miniRTS,overcooked等https://sqz.ac.cn/artificial-38