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

mc做地图画网站关于网站开发相关法律条款

mc做地图画网站,关于网站开发相关法律条款,三端互通传奇发布网,wordpress 文章添加字段AI前线导读#xff1a;近日#xff0c;UC伯克利的研究团队RISELab在其Github的项目Ray Rlib 0.6.0中添加了面向多智能体强化学习#xff08;multi-agent Reinforcement Learning#xff09;的支持。本文由团队成员Eric Liang首发于RISELab团队主页#xff0c;AI前线翻译整…AI前线导读近日UC伯克利的研究团队RISELab在其Github的项目Ray Rlib 0.6.0中添加了面向多智能体强化学习multi-agent Reinforcement Learning的支持。本文由团队成员Eric Liang首发于RISELab团队主页AI前线翻译整理。本文主要是关于多智能体强化学习的简明教程以及在RLib中的设计思路。 为什么要使用多智能体强化学习 研究人员发现在实际的强化学习设置中很多问题都讨论到使用多智能体学习是否有意义。在特定的环境中与训练单一策略的方案相比多智能体方案能提供以下优点 对问题的分解更具有可解释性。举个例子假设现在需要在城市环境中训练蜂窝天线仰角控制的策略。一种方案是训练一个“超级智能体”在城市中控制所有的蜂窝天线另一种方案是将每个天线建模成分离的智能体后者显然更加合理。因为只有相邻的天线和用户观测到的天线需要彼此互联而其他个体之间则不需要复杂的响应机制。对于可扩展性的潜力首先将一个庞大的、复杂的单一智能体分解为多个简单的智能体不仅可以减少输入和输出的维度同时也可以有效的增加每次迭代过程中训练数据的输入数量。其次对每个智能体的操作和观测空间进行分区可以起到与时域抽象方法类似的作用该方法成功地在单智能体策略中提高了学习效率。相对地类似的分级方法可以显式地实现为多智能体系统。最后好的分解策略可以对环境变化具有更好的鲁棒性例如单一的超智能体很容易对某个特定环境产生过拟合。图 1单智能体方法a和b与多智能体强化学习c。一些多智能体应用的例子 减少交通拥堵事实证明智能化控制少数自动驾驶车辆的速度我们可以大幅增加交通流量。多智能体是这种自动化策略的基础因为在混合自动化系统中将交通信号灯和车辆建模为单个智能体是不现实的因为这需要在一个广泛区域内的所有智能体之间同步所有的观测值和行为。图 2交通流量模拟上图为没有自动驾驶车辆的情况下图为有自动驾驶车辆的情况。天线仰角控制可以根据本地环境的用户分布和拓扑结构来优化蜂窝基站的联合配置。每个基站可以被建模为覆盖城市的多个智能体之一。图 3天线仰角控制系统OpenAI FiveDota 2 AI智能体经过训练可以相互协调并与人类对抗。五个AI玩家中的每一个都作为单独的神经网络策略实施并与大规模PPO一起训练。图 4电脑玩家进行Dota 2游戏介绍RLib中的多智能体支持 本文主要针对RLib中的通用多智能体支持进行介绍包括与Rlib中的大多数分布式算法A2C/A3C、PPO、IMPALA、DQN、DDPG和Ape-X的兼容性介绍。本文还讨论了多智能体强化学习面临的挑战并展示了如何使用现有算法训练多智能体策略同时还提供了针对非平稳环境和环境变化较多情况下的特定算法的实现。 由于当前可供使用的多智能体强化学习库几乎没有这就增加了基于多智能体方法的实验成本。在科研和应用两个领域中RLib希望减少从单智能体模式转为多智能体模式的矛盾并简化转变过程。 为什么支持多智能体很困难 为类似强化学习这种快速发展的领域开发软件是极具挑战性的多智能体强化学习更甚之。这一工作的难点主要是针对处理多智能体学习中出现的核心问题的技术。 举个例子非平稳环境。在下图中红色智能体的目标是学习如何调节整个交通流的速度。蓝色智能体则只学习如何最小化它自己的行进时间。红色智能体可以通过简单地以所需速度驾驶来实现其目标。然而在多智能体环境中其他智能体将会学习如何达到其目标——例如蓝色智能体通过绕行以缩短其时间。这是有问题的因为从单智能体的视角来看例如图中红色智能体蓝色智能体也是“环境的一部分”。事实上从单智能体视角来看环境的动态变化违反了马尔可夫假设而在Q-learning算法例如DQN中这是整个算法设计的前提。图 5环境中的非平稳过程最开始在a中红色智能体通过减速来控制整个交通流的速度。然而紧接着蓝色智能体会学习绕过红色智能体b这时红色智能体的处理机制将无法有效的应对当前环境。针对上述情况很多算法被提出例如LOLA、RIAL和Q-MIX。 从高层面讲强化学习模型的训练过程中这些算法会考虑其他智能体的行为。通常是在训练阶段部分集中化在执行阶段分散化处理。在实现方面这意味着策略网络之间是彼此依赖的例如Q-MIX算法中的网络混合图 6Q-MIX混合网络结构具体可参考QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning。独立的Q-估测通过单调的混合网络进行累积从而高效地进行最终行为的计算。类似地基于梯度策略的算法例如A3C和PPO等可能无法兼容多智能体配置。因为随着智能体数量的增加置信度评价将变得越来越困难。考虑下图中这种多智能体的所处的情况。可以看出随着智能体数量的增加对智能体的激励与其行为的相关性将会越来越小。此时交通速度已经降为了0但是智能体并不能作出正确的响应以打破僵局。图 7复杂情况下的优势估测在上图的交通阻塞情况中难以判断哪个智能体是主要原因在阻塞情况被解决后同样无法确定应当给哪个智能体分配更高的置信度。一类方法通过中心化值函数如图8中的“Q”框来模拟其他智能体对环境中的影响MA-DDPG则使用了这种方法。直观地讲通过统计其他智能体的行为可以有效减少对每个智能体进行优势估计时的变化性。图 8MA-DDPG基本框架选自Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments。在执行阶段仅使用局部信息但在训练阶段需要使用全局信息进行优化。到这里本文已经介绍了研究多智能体强化学习所面临的两大挑战与解决策略。在很多情况下使用单智能体强化学习算法训练多智能策略可以取得不错的结果。例如OpenAI Five就是利用了大规模PPO和特殊化网络模型的组合。 在RLib中训练多智能体 那么在多智能体设置中如何使用特殊化算法与单智能体强化学习RLib为此设计了简单易行的方法。相关细则如下 策略被表示为对象在RLib中所有的基于梯度的算法都会声明一个策略图对象该对象包含一个策略模型πθ(ot)和一个轨迹后处理函数postθ(traj)以及策略损失L(θ; X)。该策略图对象为分布式框架提供了足够的内容与功能以执行环境部署通过检索πθ、经验整理通过应用postθ以及策略优化通过减小策略损失。策略对象是黑箱为了支持多智能体配置在每个环境中RLib仅管理多个策略图的创建与执行并在策略优化过程中对他们的损失进行累计。在RLib中策略图对象通常被当成黑箱这就意味着可以用任何框架包括TensorFlow和PyTorch来实现它们。此外策略图可以在内部共享变量和层以实现Q-MIX和MA-DDPG等算法而不需要特殊的框架支持。 更了更具体的说明这些细则接下来的几节将介绍一些RLlib中的多智能体API来执行大规模多智能体训练的代码示例。 多智能体环境模型 由于不确定标准的多智能体环境借口因此RISELab将这个多智能体环境模型编写为Gym接口的直接扩展。在多智能体环境中每一步会存在多种行为实体。图6所示的是一种交通控制场景其中多个可控实体例如交通灯、自动驾驶车辆一起工作以减少高速公路拥堵。 在该场景中 每个智能体都可以在不同的时间尺度上作出响应即异步工作。智能体会随时间进出该环境。图 9RLib多智能体环境可以模拟多个独立智能体随时间进出环境的情况。不同的智能体可以被赋予不同的策略。下面这段代码是使用MultiAgentEnv接口的一个示例该接口可以从多个就绪的智能体中返回观测值和激励 # 示例使用多智能体环境\u0026gt; env MultiAgentTrafficEnv(num_cars20, num_traffic_lights5)# 观测值是字典形式的不是每一个智能体都需要在每个时间点被表示于字典中。\u0026gt; print(env.reset()){   \u0026quot;car_1\u0026quot;: [[...]],   \u0026quot;car_2\u0026quot;: [[...]],   \u0026quot;traffic_light_1\u0026quot;: [[...]],}# 每个智能体都需要定义一个行为来返回他们的观测值\u0026gt; new_obs, rewards, dones, infos env.step(actions{\u0026quot;car_1\u0026quot;: ..., \u0026quot;car_2\u0026quot;: ...})# 同样的新的观测值激励完成的信息等也是字典形式\u0026gt; print(rewards){\u0026quot;car_1\u0026quot;: 3, \u0026quot;car_2\u0026quot;: -1, \u0026quot;traffic_light_1\u0026quot;: 0}# 独立的智能体可以早早离开; 当\u0026quot;__all__\u0026quot;设置为True时环境配置完成。\u0026gt; print(dones){\u0026quot;car_2\u0026quot;: True, \u0026quot;__all__\u0026quot;: False} OpenAI gym中的任何离散的Box、Dict或者Tuple都可以为这些独立的智能体提供支持每个智能体都允许接受多种类型的输入包括智能体间的通信。 多级的API支持 在较高的层次上RLib模型将智能体和策略建模为在一段持续时间内可以互相绑定的对象如图7所示。用户可以在不同程度上使用这一抽象的对象从仅使用一个单智能体共享策略到多策略再到完全自定义的策略优化图10RLib中的多智能体执行与单智能体执行模型对比级别1多智能体共享策略 如果环境中的所有智能体都是同质的例如在交通模拟中的多个独立的车辆则可以使用现有的单智能体算法进行训练。由于只有一个策略被训练因此RLib只需要在策略优化之前在内部累积不同智能体的经验用户方面的变化则很小。 单智能体的情况 register_env(\u0026quot;your_env\u0026quot;, lambda c: YourEnv(...))trainer PPOAgent(env\u0026quot;your_env\u0026quot;)while True:   print(trainer.train())  # distributed training step 多智能体的情况 register_env(\u0026quot;your_multi_env\u0026quot;, lambda c: YourMultiEnv(...))trainer PPOAgent(env\u0026quot;your_multi_env\u0026quot;)while True:   print(trainer.train())  # distributed training step 注意此处的PPOAgent只是从单智能体API继承的命名约定。它更像是智能体的一个训练器而不是真正的智能体。 级别2多智能体多策略 这种情况下需要定义每个智能体会被哪个策略处理。在RLib中可以通过策略映射函数处理此问题该函数在智能体首次进入环境时将环境中的智能体分配给特定策略。下面的例子展示了一个分级控制设定其中监督智能体将工作分配给它们监督的工作智能体。完成这一目标的所需配置是监督策略和工作策略的集合 def policy_mapper(agent_id):   if agent_id.startswith(\u0026quot;supervisor_\u0026quot;):       return \u0026quot;supervisor_policy\u0026quot;   else:       return random.choice([\u0026quot;worker_p1\u0026quot;, \u0026quot;worker_p2\u0026quot;])在本例中我们通常将监督智能体与一个单独的监督策略绑定然后将其他工作智能体随机分配给两个不同的工作策略绑定。这些配置会在智能体首次进入环境时完成并在智能体离开环境之前持续工作。最后我们需要定义不止一个策略配置。这是作为上级智能体配置的一部分来完成的trainer PPOAgent(env\u0026quot;control_env\u0026quot;, config{   \u0026quot;multiagent\u0026quot;: {       \u0026quot;policy_mapping_fn\u0026quot;: policy_mapper,       \u0026quot;policy_graphs\u0026quot;: {           \u0026quot;supervisor_policy\u0026quot;:                (PPOPolicyGraph, sup_obs_space, sup_act_space, sup_conf),           \u0026quot;worker_p1\u0026quot;: (               (PPOPolicyGraph, work_obs_s, work_act_s, work_p1_conf),           \u0026quot;worker_p2\u0026quot;:                (PPOPolicyGraph, work_obs_s, work_act_s, work_p2_conf),       },       \u0026quot;policies_to_train\u0026quot;: [             \u0026quot;supervisor_policy\u0026quot;, \u0026quot;worker_p1\u0026quot;, \u0026quot;worker_p2\u0026quot;],   },})while True:   print(trainer.train())  # distributed training step 这将生成一个如图5所示的配置。你可以为每个策略定制个性化的策略图类以及不同的策略配置字典。任何RLib的支持的定制例如自定义模型和预处理都可以用于每个策略以及新的策略类的批量定义。 其他示例Sharing layers across policies、 Implementing a centralized critic 级别3自定义训练策略 对于一些高级的应用于研究情景不可避免地会遇到一些框架方面的限制。 例如假设需要多种训练方法的情况一些智能体将使用PPO进行学习一些则使用DQN。这种情况下可以通过在两个不同的训练器之间交换权重来完成参考代码但这种方法的可扩展性较差例如想加入新的算法或是想同时使用经验对环境模型进行训练的时候。 为了应对这种情况RLib的底层系统Ray可以按需分配计算。Ray提供了两个简单的并行接口 Tasks通过func.remote()被异步执行的Python函数。Actors通过class.remote()在集群中被创建的Python类。Actor方法可以被actor.method.remote()调用。 RLib在Ray的tasks和actors上构建为分布式强化学习提供工具包。其中包括 策略图之前示例已展示策略评估PolicyEvaluator类会对生成批量经验的环境交互循环进行管理。当创建为Ray actors时它可以用于在分布式环境中收集经验。策略优化这一部分用于对策略的优化。你可以使用现有的优化器也可以使用自定义策略。 例如你可以创建策略优化器以收集多智能体的输出然后对他们进行处理以提高策略 # 初始化一个单节点的Ray集群ray.init()# 为自定义策略图创建局部实例sup, w1, w2 SupervisorPolicy(), WorkerPolicy(), WorkerPolicy()# 创建策略优化器 (Ray actor进程会在集群中运行)evaluators []for i in range(16):   ev PolicyEvaluator.as_remote().remote(       env_creatorlambda ctx: ControlEnv(),       policy_graph{            \u0026quot;supervisor_policy\u0026quot;: (SupervisorPolicy, ...),            \u0026quot;worker_p1\u0026quot;: ..., ...},       policy_mapping_fnpolicy_mapper,       sample_batch_size500)   evaluators.append(ev)while True:   # Collect experiences in parallel using the policy evaluators   futures [ev.sample.remote() for ev in evaluators]   batch MultiAgentBatch.concat_samples(ray.get(futures))   # \u0026gt;\u0026gt;\u0026gt; print(batch)   # MultiAgentBatch({   #     \u0026quot;supervisor_policy\u0026quot;: SampleBatch({   #          \u0026quot;obs\u0026quot;: [[...], ...], \u0026quot;rewards\u0026quot;: [0, ...], ...   #      }),   #     \u0026quot;worker_p1\u0026quot;: SampleBatch(...),    #     \u0026quot;worker_p2\u0026quot;: SampleBatch(...),   # })   your_optimize_func(sup, w1, w2, batch)  # Custom policy optimization   # Broadcast new weights and repeat   for ev in evaluators:       ev.set_weights.remote({           \u0026quot;supervisor_policy\u0026quot;: sup.get_weights(),           \u0026quot;worker_p1\u0026quot;: w1.get_weights(),           \u0026quot;worker_p2\u0026quot;: w2.get_weights(),        }) 总之RLib提供了多个层级的API旨在提高其可定制性。在最高层级这里提供了几个简单的“开箱即用”的训练过程但用户也可以从核心的多智能体抽象对象中选择使用自定义的算法和训练策略。这里有一些可以直接运行的脚本供使用 multiagent_cartpole.py, multiagent_two_trainers.py. 性能表现 RLlib旨在扩展到大型集群以及多智能体模式同时也提供类似向量化这种针对单核心效率的优化。这允许在小型机器上高效地使用多智能体API。 为了说明这些优化方法的重要性下图分析了单核心策略评估与环境中智能体数量的关系。在这个基准测试中观测值是小浮点向量策略是小型16*16的全连接网络。每个智能体被随机分配给10个这样的策略网络。RLib在每个环境中的10000个智能体上管理超过70k actions/s/core此时Python的计算开销就变成了瓶颈。当向量化功能关闭的时候经验累积的速度降低了40倍RISELab还评估了在环境中使用多个不同策略网络的更具挑战性的情况。在这里仍然可以利用向量化将多个TensorFlow调用融合为一个从而获得更稳定的单核性能下图是不同策略的数量从1扩展到50的评估结果结论 这篇博文介绍了一个快速通用的多智能体强化学习框架。 RISELab目前正与BAIRBerkeley FLow team和行业的早期用户合作以​​进一步改进RLlib。 快尝试使用’pip install ray [rllib]快速安装RLib并运行你自己的测试用例吧。 有关RLlib和多代理支持的文档请访问https://rllib.io。 查看英文原文An Open Source Tool for Scaling Multi-Agent Reinforcement Learning
http://www.pierceye.com/news/109009/

相关文章:

  • 网站二级目录做网站淄博网站建设 很乱
  • 常州做网站企业海口网站开发建设
  • 做php网站用什么软件开发wordpress页面图片轮播图
  • 做网站页面大小多大8上的信息课做网站作业
  • 自己做微网站创欧科技 网站建设
  • 网站设计师大学学什么专业北京燕华工程建设有限公司网站
  • 广州专业网站建设企业wordpress 数据库修改
  • 淮南装饰公司网站建设seo 网站树
  • 设计素材下载网站网络营销课程设计报告
  • 安庆公司做网站搜索引擎收录提交入口
  • 城固网站建设wordpress主题谁的最好
  • 国外建站企业北京鑫创网站建设
  • 网站做视频wordpress插件手动升级
  • wordpress收不到网站没有收款接口网站怎么做收款
  • 信阳做网站推广用tornado做网站
  • 网站开发与数据库ppt成都优化网站建设
  • 毕业设计静态网站建设选题依据企业网络营销的优势
  • 网站图片动态换名网站充值支付宝收款怎么做
  • 蜘蛛网是个什么网站做特卖的购物网站
  • 从零学做网站古典 网站模板
  • h5网站模板开发网站后台哪些功能需要前端配合
  • 网站建设 宜宾佛山企业网站自助建站
  • 苏宁易购网站建设 的定位手机网站制作招聘
  • 个人网站备案申请360老是提示危险网站
  • 建网站哪个好 优帮云自己怎么注册域名
  • 做3ds磁铁卡网站大连旅顺博物馆
  • 邢台市住房和城乡建设局网站大连网站推广机构
  • 网站建设开标书房地产网页设计
  • 中国建设建设工程造价管理协会网站建设视频网站要求吗
  • 商务网站教程深圳定制纸箱