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

h5素材做多的网站新网站秒收录技术

h5素材做多的网站,新网站秒收录技术,精品课程网站怎么做,凉山州住房和城乡建设局门户网站深度强化学习(Deep Reinforcement Learning, DRL)是目前最热门的方向之一,从视频游戏、围棋、蛋白质结构预测到机器人、计算机视觉、推荐系统等领域已经取得了很多令人瞩目的成就且仍在蓬勃发展中。DeepMind首席研究员、AlphaGo的第一作者Davild Silver就认为通用人…

6765aeac39174155b15af412ef03bb67.png

深度强化学习(Deep Reinforcement Learning, DRL)是目前最热门的方向之一,从视频游戏、围棋、蛋白质结构预测到机器人、计算机视觉、推荐系统等领域已经取得了很多令人瞩目的成就且仍在蓬勃发展中。DeepMind首席研究员、AlphaGo的第一作者Davild Silver就认为通用人工智能(Artificial General Intelligence, AGI) 需要强化学习结合深度学习来实现,即AGI=DL+RL。

  • 框架

为了便于研究人员快速搭建出强化学习模型,很多机构发布了强化学习基准算法或框架,其中较早的有OpenAI Baselines、伯克利的rllab,最新的有18年谷歌发布的Dopamine、Facebook发布的Horizon。具体见下表

8852402f25ff8f82986392d301784802.png

本文介绍的是TensorForce并非由这些大机构发布,而是由几个剑桥大学的博士生开发、维护的。当时选择TensorForcce是因为需要在ROS框架下开发,而如上表列出的,它完全支持Python2,且包含很多主流的强化学习算法、支持OpenAI Gym、DeepMind Lab等常用于强化学习算法测试的基准环境。

Tensorforce是架构在TensorFlow上的强化学习API,最早在17年就开源了,并发布了博客介绍其背后的设计思想及基本应用,国内机器之心将博客翻译成了中文:基于TensorFlow打造强化学习API:TensorForce是怎样炼成的?推荐阅读一下该文章,但文中的代码包括官方文档已经过时,相应的接口发生了变化,常见的接口会在后文介绍。

这里简单介绍一下TensorForce的设计思想。框架设计的难点在于如何解耦出其它层面的内容,尽可能将共用的部分抽象出来。拿强化学习来说,智能体与环境不断通过交互试错来学习,如果由我们从头自己编程实现某个RL任务,智能体与环境很自然地会写在一起。但作为框架却不行,需要将智能体从环境中解耦出来。TensorForce包括了下面四个层面的概念

Environment <-> Runner <-> Agent <-> Model

Agent在训练前可以加载model,训练后保存model,运行时接收state,(预处理后)作为model的输入,返回action。模型会根据算法及配置自动更新。Runner将Agent和Environment之间的交互抽象出来作为函数。Environment根据应用场景的不同需要自己写接口,后文会提供一个机器人导航环境的接口案例。如果是学习或者算法测试,可以使用现成的基准环境,TensorForce提供了OpenAI Gym、OpenAI Universe和DeepMind Lab的接口。

  • 第一行代码

下面通过使用近端策略优化(Proximal Policy Optimization, PPO)算法训练OpenAI Gym中倒立摆来初识TensorForce的简洁和强大。

from tensorforce.agents import PPOAgent
from tensorforce.execution import Runner
from tensorforce.contrib.openai_gym import OpenAIGym
# Create an OpenAIgym environment.
environment = OpenAIGym('CartPole-v0', visualize=True)
network_spec = [dict(type='dense', size=32, activation='relu'),dict(type='dense', size=32, activation='relu')
]
agent = PPOAgent(states=environment.states,actions=environment.actions,network=network_spec,step_optimizer=dict(type='adam',learning_rate=1e-3),saver=dict(directory='./saver/', basename='PPO_model.ckpt', load=False, seconds=600),summarizer=dict(directory='./record/', labels=["losses", "entropy"], seconds=600),
)
# Create the runner
runner = Runner(agent=agent, environment=environment)
# Start learning
runner.run(episodes=600, max_episode_timesteps=200)
runner.close()

很快,倒立摆能够平衡:

4522e6070596c475ea827f273b2c0642.gif

使用TensorBoard查看训练过程(左图是loss,右图是entropy):

dd4da02931078d5ee68efb9e5bc2a953.png

上面我们只用了30行代码实现了PPO算法训练倒立摆,代码首先定义了环境和网络(两层32个节点的全连接网络,激活函数为relu),然后定义了agent,agent的参数中states, actions, network三个参数是必填的,step_optimizer定义了优化器,saver和summarizer分别保存模型和训练过程。最后通过runner来实现agent和environment的交互,总共跑了600个episodes,每个episode的最大步长是200。runner解耦出了交互过程,实际上是是下面过程的循环

# Query the agent for its action decision
action = agent.act(state)
# Execute the decision and retrieve the current information
observation, terminal, reward = GazeboMaze.execute(action)
# Pass feedback about performance (and termination) to the agent
agent.observe(terminal=terminal, reward=reward)

在上述过程中,agent会储存相关信息来更新模型,比如DQNAgent会存储(state, action, reward, next_state)

  • 视频游戏

TensorForce提供了丰富的observation预处理功能,视频游戏是DRL最先取得突破的方向,以Flappy Bird为例,需要进行四个步骤的预处理:1. 转化为灰度图,去除不必要的颜色信息;2. 缩小输入的游戏截屏,resize为80*80;3. 堆叠连续的四帧,推导出运行信息;4. 归一化处理,以便于训练。

cec71082a9fa3e90a8889fc910530787.png

使用TensorForce可以很方便地进行预处理:

states = dict(shape=(3264, 18723, 3), type='float')
states_preprocessing_spec = [dict(type='image_resize',width=80,height=80),dict(type='grayscale' ),dict(type='normalize')dict(type='sequence',length=4)
]agent = DQNAgent(states=states,actions=actions,network=network_spec,states_preprocessing=states_preprocessing_spec)
  • 环境搭建

如果要在具体的应用场景中使用TensorForce就需要根据应用场景手动搭建环境,环境的模板为environment.py,其中最重要的函数是execute,该函数接收agent产生的action,并在环境中执行该action,然后返回next_state,reward,terminal。这里我以搭建的Gazebo中的机器人导航环境为例,进行介绍。首先搭建仿真环境如下图:

6394c4b1aaca6d9bac8baa4e96bedbc5.png

设计环境的接口及其与agent交互的过程:

c53eef0dc11c4d196fec473827f58ef2.png

仿真开始,init函数打开Gazebo并加载对应的导航环境,reset函数初始化机器人,execute函数接收到action后通过ROS发送对应的速度命令,Gazebo中的机器人接收到速度命令后执行对应的速度,机器人传感器返回相应的信息,计算对应的reward,读取视觉传感器的RGB图像作为next_state,判断是否到达目标点或者碰撞,如果是Terminal为True,该episode结束。完整的代码env.py 。

  • 复杂网络

DRL网络和算法是智能体最重要的两部分,一个确定模型结构、一个决定模型更新。上面只介绍了简单的模型,对于有些复杂网络需要层叠的方式来定义,如下如

9442447b34fa1817f5330fd43c565f65.png

该网络的输入为64*48*3的RGB图像,由卷积层提取特征后与2维的速度信息和运动信息共同输入全连接层进行决策。首先定义state:

states = dict(image=dict(shape=(48, 64, 3), type='float'), # Observationprevious_act=dict(shape=(2,), type='float'), # velocityrelative_pos=dict(shape=(2,), type='float')  # target
)

然后定义action即velocity,这里为机器人的线速度(限制在[0,1])和角速度(限制在[-1,1]):

dict(linear_vel=dict(shape=(), type='float', min_value=0.0, max_value=1.0),
angular_vel=dict(shape=(), type='float', min_value=-1.0, max_value=1.0))

然后通过层叠的方式来定义网络结构:

network_spec = [[dict(type='input', names=['image']),dict(type='conv2d', size=32, window=(8, 6), stride=4, activation='relu', padding='SAME'),dict(type='conv2d', size=64, window=(4, 3), stride=2, activation='relu', padding='SAME'),dict(type='pool2d', pooling_type='max', window=2, stride=2, padding='SAME'),dict(type='conv2d', size=64, window=2, stride=2, activation='relu', padding='SAME'),dict(type='flatten'),dict(type='output', name='image_output')],[dict(type='input', names=['image_output', 'previous_act', 'relative_pos'], 
aggregation_type='concat'),dict(type='dense', size=512, activation='relu'),dict(type='dense', size=512, activation='relu'),]
]

完整代码见E2E_PPO.py。

  • 其它

1. agent会有actions_exploration参数来定义exploration,默认值为'none',但这并不代表不探索,以PPO为例,模型在输出的时候不输出直接的确定性动作(只有DPG才会输出确定性动作),而是分布,输出在分布上采样输出,这可以看作是一种exploration。

2. 网络的输出层是根据action自动添加的,在network中定义输入层和隐藏层即可

3. 如果不再需要exploration而只是exploition,则运行:

agent.act(action, deterministic=True)

此时agent执行greedy策略。而如果模型训练完成,不再训练则:

agent.act(action, independent=True)

此时函数只执行act不执行observe来更新模型

4. PPO算法相比于DQN,不仅性能好,并且对超参数更鲁棒,建议优先选择PPO

http://www.lbrq.cn/news/2520451.html

相关文章:

  • 高端网站建设联系方式怎样策划一个营销型网站
  • 0基础做网站用什么语言线上推广员是做什么的
  • 赚钱网站如何做手机百度官网
  • 如何做网站平台关注百度网址大全
  • 那个网站可以做软件出售的浙江网络推广公司
  • 沈阳网站建设专家推广计划怎么做推广是什么
  • 有什么网站可以做微信支付宝长春seo整站优化
  • 如何做部落冲突网站网站关键词排名手机优化软件
  • html代码做的网站定制型营销网站建设
  • 给别人做网站收钱违法吗网络推广软件哪个好
  • vb怎么做网站网络营销的八大职能
  • wordpress学校站模板国外网站seo
  • 哪个云服务器便宜又好seo搜索引擎优化岗位要求
  • 网站建设进度说明爱站查询工具
  • 建立个人博客网站搜索引擎优化的例子
  • 车公庙做网站盘古搜索
  • 北京市人大网站建设杭州seo营销
  • 小语种网站怎么做曼联vs恩波利比分
  • 个人简介网站html代码网店运营与管理
  • 如何建设网站与域名长沙seo优化首选
  • 网站开发 视频存在哪合肥百度推广优化排名
  • 网站建设中的英文百度快速排名点击器
  • 商业网站建设案例全球搜钻是什么公司
  • wordpress新用户网站优化培训
  • wordpress 数据库名称域名查询seo
  • 济南网站建设企业网页设计html代码大全
  • 长春网站建设致电吉网传媒优上海网站排名优化怎么做
  • 手机网站模板html5网站为什么要seo?
  • 辅助购卡网站怎么做百度推广怎么使用教程
  • 软装设计培训班哪家好seo专员是什么职位
  • Python读取获取波形图波谷/波峰
  • 基于数字信息化的全面研发项目管理︱裕太微电子股份有限公司研发项目管理部负责人唐超
  • 第2章 cmd命令基础:常用基础命令(2)
  • Kruskal算法
  • Three.js 性能优化全面指南:从几何体合并到懒加载资源
  • nodejs 实现Excel数据导入数据库,以及数据库数据导出excel接口(核心使用了multer和node-xlsx库)