博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用于分层强化学习的随机神经网络
阅读量:5910 次
发布时间:2019-06-19

本文共 4554 字,大约阅读时间需要 15 分钟。

用于分层强化学习的随机神经网络

论文链接:https://openreview.net/pdf?id=B1oK8aoxe

1. 引言

近期,深度强化学习取得了许多令人印象深刻的结果,但这些深度强化学习算法一般都是采用单纯探索策略,如 ε-贪婪算法或统一的高斯探索噪声,这些方法在奖励稀疏的任务中表现不佳。要想解决这些问题,可采用两种策略:

1. 设计动作的层次结构,这需要专业知识以及细致的手动工程。

2. 使用与领域无关的内在奖励来指导探索,然而,对于如何将一个任务的知识进行转化以解决其他任务尚不清楚,这可能会导致过高的样本复杂性。

本文作者提出了一个可以在预训练环境中学习一系列技能的通用框架,该框架可以通过在这些技能上训练高级策略再应用于下游项目。作者利用随机神经网络(SNN)与代理奖励(proxy reward)相结合来学习这些技能,这样的设计不需要太多与下游项目相关的知识。为了鼓励 SNN 策略的行为多样性,研究者在预训练阶段提出了一种基于互信息(MI)的信息理论正则器。

2. 问题描述

本论文作者通过一组时域有限的离散时间折扣马尔可夫决策过程(MDPs)M 指定了一组下游任务。目标是在整个过程中实现期望折扣回报的最大化。

为了解决这些问题,首先这些下游项目要满足一些结构性假设,这是确保泛化性能的最低要求。正如智能体空间的思想,状态空间可以分为两部分:智能体状态和休息状态,这两个状态间的相互作用是很弱的。在 M 中,智能体状态对 M 中的 MDP 都是一样的,所有的 MDP 都要共享相同的动作空间。

建立了一系列满足结构假设的任务后,目标是要最小化解决这些任务所需的全部样本的复杂性。之前的技术是利用解决前期任务收集到经验来帮助解决后面的任务,但这并不适用于奖励稀疏的任务。因而研究者提出了一个在预训练环境中学习有用技能的通用框架。

3.方法论

作者用 5 步过程描述了该方法。该方法利用了预训练任务的优势,而且是用最少的专业知识来构建,同时可以学得很多有用的技能来解决稀疏奖励的极具挑战的任务。

3.1 建立预训练环境

为了建立智能体学习可用于下游任务的有用技能的预训练环境,作者允许智能体在最小设置下自由地与环境进行交互。例如,对移动机器人来说,预训练环境会是一个宽敞的环境,机器人可以先在这个环境中学到必要的移动能力。

与在预训练环境中指定特定技能的目标不同,研究者使用鼓励局部最优解的代理收益作为唯一的奖励信号,来指导技能学习。再以移动机器人为例,在不限制移动方向的情况下,代理奖励可与机器人的移动速度成正比。

3.2 用于技能学习的随机神经网络

一旦建立了预训练环境,有一种直接方法是学习一系列训练不同策略的技能,每种策略在不同的随机初始化下都有单峰动作分布,但这样会有很高的样本复杂性。为了解决这个问题,作者提出使用在计算图中有随机单位的随机神经网络(SNN)。因为 SNN 有丰富的表征能力,还可以逼近任何表现良好的概率分布,本文作者用 SNN 训练了不同的策略。

本文实现了一个简单的 SNN 类,结合具备统一权重类别分布的隐变量和从环境到神经网络的观测结果,形成联合嵌入。然后将联合嵌入馈送给具备计算分布参数的确定性单位(deterministic unit)的前馈神经网络。

直接将观测值和隐变量级联形成最简单的联合嵌入(图 1(a)),但这样形成的联合嵌入表达能力有限。之前的研究显示整合形式越丰富表达能力就越好,在这些研究的启发下,本论文作者提出了一个简单的双线性积分作为观测结果和隐变量的外积。正如实验所示,由于该级联对应根据隐码 h 改变第一个隐藏层的偏置项,积分对应改变第一个隐藏层的权重。因此,训练单一的 SNN 就能得到灵活的不同策略权重共享方案。

用于分层强化学习的随机神经网络

图 1:FNN 中隐向量集成的不同架构

3.3 信息论正则化

因为我们无法确定不同政策是否可以学得不同的技能,为了鼓励 SNN 策略行为的多样性以及避免 SNN 陷入单一模式,作者在预训练阶段提出一个基于 MI(互信息)的信息论正则器。

具体来讲,对于移动机器人而言,作者添加了额外的奖励,该奖励与隐变量和机器人当前状态的互信息成比例。作者在此仅测量了当前状态下相关子集的 MI。从数学上讲,Z 代表可以表示隐变量的随机变量,X 表示智能体当前状态的随机变量。额外奖励可表示为:

用于分层强化学习的随机神经网络

由于固定分布,H(Z) 是常量,所以 MI 最大值等于条件熵 H(Z|X)最小值。这也就意味着,给出机器人所在的地方,就可以得知机器人当前状态的行为。

3.4 学习高级策略

用于分层强化学习的随机神经网络

在从预训练任务中学到一系列技能后,我们可以通过训练高级策略使用这些技能解决奖励稀疏的下游任务。

对于一个给定的任务 M,将高级策略(管理器神经网络,如图 2 所示)接收到的完整状态作为输入,输出参数化的类别分布,从该分布中,我们从 K 个可能的选择中采样出离散行为。一般而言,高级策略运行得比低级策略(SNN)慢,只能每 T 个时间步切换一下其分类输出。T,也就是所谓的切换时间,是取决于下游任务的超参数。

在这篇论文中,SNN 的权重在训练阶段是冻结的。

3.5 策略优化

为了优化策略,作者在预训练阶段和高级策略训练阶段使用的是置信域策略优化(TRPO)算法。这是由于 TRPO 出色的实验性能以及它无需对超参数进行过多调整。

4. 实验细节

4.1 实验任务

作者在之前的一篇论文 [5] 中对两个分级任务实现了分层 SNN 框架:移动+走迷宫和移动+收集食物。本文部署了 Swimmer 机器人完成这些任务。大家可以在附录 C-D 中看到更复杂的机器人(蛇和蚂蚁)的结果。

为了说明下游任务的多样性,论文作者构建了四个不同的迷宫。如图 3(a)-3(b) 所示,迷宫 0 是与基准 [5] 中描述的相同任务,迷宫 1 是迷宫 0 的反射。迷宫 2 和迷宫 3 是图 3(c) 所示环境的不同实例,在这个例子中,目标分别被放置在东北角和西南角。图 3(d) 描述了收集食物的任务,在这个任务中,机器人若收集到绿色球则得 1 分,收集到红色球得 -1 分,在每一个 episode 开始的时候随机放置这些球。连续控制问题的基准 [3] 还表明,采用朴素探索策略的算法不能解决走迷宫和收集食物的任务,更为先进的内在激励探索 [6] 可以改善机器人的表现。附录 B 说明了使用 SNN 的更好的结果。

用于分层强化学习的随机神经网络

图 3:稀疏奖励任务图示

4.2 超参数

在所有的实验中,所有策略都用步长为 0.01、折扣为 0.99 的 TRPO 进行训练,所有的神经网络都有相同的架构——有 32 个隐藏单元的 2 层。对预训练任务而言,batch size 和最大路径长度分别为 50000 和 500,这与基准中的超参数是一样的。对下游任务而言,如表 1 所示:

用于分层强化学习的随机神经网络

表 1:下游任务算法的超参数

5. 结果

为了解不同 SNN 架构的相关性以及它们是如何影响已经完成的探索的,技能学习过程中的每一步都需要进行评估。在稀疏环境中得到结果的解释如下所示:(实现结果的视频:https://goo.gl/5wp4VP)。

5.1 预训练中的技能学习

作者在此使用「访问图」(visitation plot)显示机器人在 500 个时间步的 100 个 rollout 中的质心位置 (x, y),以检验学得技能的多样性。图4(a) 表示 6 个不同前馈策略的 6 个访问图,每一个都在预训练环境中从头训练。因为 Swimmer 机器人有前向和后向运动的偏好,因此访问会集中于初始化方向而没有额外的激励,由于每个独立训练策略都有通用的代理奖励,从而保证了潜在有用的技能。图 4(b) 为 6 个策略的每一个都叠加了 50 个rollout,为方便图像解释和对比,作者使用不同颜色来表示。

图 4(c)-4(d) 描述了有或没有双线性积分时,不同选择下 SNN 获取的访问图。根据图 4(c) 可知,隐变量和观测结果之间的简单关联几乎不会对隐变量产生明显的影响。有双线性积分的预训练 SNN 会获得更多的前向和后向的移动。

用于分层强化学习的随机神经网络

图 4:通过不同方法和架构学习的一系列技能

用于分层强化学习的随机神经网络

图 5:不同的随机初始化架构的访问图(一个 rollout 有 1M 步)。所有轴范围都在 [-30,30],我们在 [-2,2] 的范围内添加了一个高斯噪声的缩放。

5.2 技能的分层使用

为了说明分层架构是如何影响随机探索覆盖区域的,作者比较了一百万步的单个 rollout 的访问图。图 5(a) 描述了用标准高斯噪声执行的探测,结果并不好。如图 5(b)-5(d) 所示,在探索中使用预训练策略的分层模型结果有了显著提升。另一方面,多策略的分层更注重上下的探索运动,然而由于基础策略的附加行为,用 SNN 获得的探索产生了更宽的空间覆盖。

5.3 走迷宫和收集食物

因为标准的强化学习算法不能解决稀疏奖励的任务,所以有了一个更好的基准线:给下游任务添加预训练任务中机器人产生的、用于比较的、相同的质心代理奖励。如图 6(a)-6(c) 所示,由于时间范围较长以及相关信用分配的问题,基准线在所有迷宫中的表现都不好。分层架构在每一个新的 MDP 中都可以更快地进行学习,因为它们可以通过将时间步整合到有用的基元从而收缩时间范围。有一个问题要强调一下,SNN 是用 MI 奖励预训练得到的,这意味着在一些走迷宫任务中,无需更多调整和侧向运动,如图 6(c) 所示。但在图 6(d) 的食物收集任务中,部署了用 MI 奖励预训练得到的 SNN 的算法返回的平均值更高,学习曲线的方差更低。

用于分层强化学习的随机神经网络

图 6:分层架构在稀疏的下游 MDPs 中进行更快的学习。

此外,作者还就收集环境将本文的方法与之前研究的方法进行了比较。公平起见,所有的结果设置都与 [5] 一样。如图 7 所示,SNN 分层方法要比最先进的内在激励方法(如 VIME)更好。

用于分层强化学习的随机神经网络

图 7:在基准设置下食物收集环境的结果

6. 讨论和未来研究

作者提出了一种可以通过随机神经网络表征学习多种技能、使用代理奖励学习大量技能的无监督过程,以及一种可用于未来任务的、允许重复使用学得的有用技能的分层结构的新方法。带有双线性积分和互信息奖励的 SNN 框架可以很大程度上提升学习技能的表现力和多样性。此外,分层结构可以促进智能体在新环境中进行探索。

正如文章结尾所说的那样,在这篇文章里仍存在一些局限性,但我们可以通过未来研究改进方法。首先,对不稳定的机器人转换技能时,现在的方法还不够稳定,这可以通过学习转换策略或在预训练任务中整合这些转换进行改善。其次,冻结了低级策略的权重,在训练高等策略过程中的转换时间就是固定的。可以像之前的研究一样,用离散隐向量对随机计算图使用直通估计(straight-through estimator),引入端到端训练改善第一个问题。可以通过管理器学习终止策略解决第二个问题,与 Option-critic 架构类似。最后,当前研究只使用了标准前馈架构,这样就无法使用任何之前技能活跃时收集到的感官信息。未来研究的一个方向是要在管理器层引入循环神经网络架构。

转载地址:http://navpx.baihongyu.com/

你可能感兴趣的文章
配置新服务器 的一些 依赖库 php mysql nginx
查看>>
老调重弹-access注入过主机卫
查看>>
剑指offer十五之反转链表
查看>>
在 Linux 中使用 Azure Premium 存储的基本优化指南
查看>>
Day6下午题解1
查看>>
【Apache Nutch系列】Nutch2.0配置安装异常集锦
查看>>
深入了解MyBatis二级缓存
查看>>
Java IO(1)基础知识——字节与字符
查看>>
3.7 su命令 3.8 sudo命令 3.9 限制root远程登录
查看>>
数组 类型 在 存储过程中 使用
查看>>
Vmware Workstation及Centos6.8 的安装
查看>>
Android系统shell中的clear命令实现【转】
查看>>
全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装爬虫框架Scrapy(离线方式和在线方式)(图文详解)...
查看>>
生成字符Banner
查看>>
通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
查看>>
[UWP]附加属性2:实现一个Canvas
查看>>
SQLServer 复制中移除和添加发布而不初始化所有项目
查看>>
CXF WebService中传递复杂对象(List、Map、Array)
查看>>
【BIEE】11_根据显示指标展示不同报表
查看>>
Mybatis分页插件PageHelper简单使用
查看>>