2018 ICRA
文章目录
Abstrct
无模型强化学习算法可以完成很多机器人学习任务,但需要大量的采样。而基于模型算法一般更高效,但很难延申到更复杂的模型,如深度神经网络模型(一般基于模型算法使用如线性模型近似,表达能力有限)。本文证明中等大小的神经网络模型和MPC组合起来可以在拥有极好的采样复杂度的同时,可以在不同的复杂的运动任务中得到非常稳定且貌似有理的步态(plausible gaits?)。
同时,本文推荐使用深度神经网络动力学模型来初始化一个无模型学习器,以此既可以有基于模型方法的采样效率,同时可以达到特定任务的无模型学习的性能表现。
最后,本文在MuJoCo运动任务上证明这种混成的方法相比于基于模型方法(模型训练集是随机采样得到的)可以在采样效率上得到3-5×提升
Introduction
无模型深度强化学习算法:能应用到很广泛的任务中,但采样复杂度很高,需要大量的采样
基于模型的算法(简单来说就是用少量的样本来学习一个模型作为该Dynamic System):更高效。但通常都是使用简单的函数近似(如高斯过程,线性时变模型,混合高斯模型等)或贝叶斯模型,这就使得这种方法很难应用到大量的复杂的高维非线性系统任务中。也有一些工作尝试用大的网络来对复杂系统进行建模,但表现都不太好,且限制在相当简单的低维任务中。
本文证明,当多层神经网络和一些如数据混合等的设计决策方法组合可以取得非常好的基于模型的采样复杂度。得到的模型可以使用带简单random-sampling shooting的MPC方法用于模型的控制。这种方法可以在许多MuJoCo benchmark系统中取得高效的步态。
尽管这种基于模型的方法相比于无模型方法采样效率更高,也更灵活,但由于模型偏置(模型与实际系统之间的误差)的存在,他们的渐近表现略差。为了解决这个问题,本文提出用这种基于模型的算法来初始化无模型学习器,提供一个很好的起始点,然后无模型学习算法基于此微调即可。实验证明,相比纯粹的无模型学习,这种混成的方法在swimmer,cheetah,hopper和ant benchmark上可以有3-5×采样效率的提高。
主要贡献:
(1)提出了一种基于神经网络模型的强化学习算法
(2)对神经网络动力学模型评估了许多设计决策
(3)展示了如何用一个基于模型的学习器来初始化无模型学习器,在显著减少采样复杂度的情况下得到一个很高的rewards
Related Work
略
Preliminaries
强化学习的目标就是学习一个策略最大化未来的rewards。在每个时间步t,智能体处于状态,执行某个动作,得到一个reward 并根据动力学方程(未知!)变换到下一个状态.每一步的目标是选取一个动作最大化未来奖励折扣和。在本文中,假设已知奖赏函数。
在基于模型的强化学习算法中,使用一个动力学模型来进行预测和动作选取。用表示学到的用参数化的离散时间动力学方程。输入,输出下一时刻的状态。接下来可通过求解下式最优化问题选取下一步状态:
在实际应用中,需要在每一时间步都求解该最优问题,而只执行序列的第一个动作,更新状态信息后在下一个时间步重新求解该过程。这个过程就被称为model predictive control(MPC)。
Model-Based Deep RL
这一节提出本文的基于模型的深度强化学习算法。包括几个部分:描述要学习的动力学方程;怎样训练该方程;怎样用该方程抽取策略;怎样使用强化学习来进一步改进学到的动力学方程。
神经网络动力学方程
本文使用参数化的深度神经网络作为动力学方程,就是网络的权重。一个直观的方法就是输入当前状态和动作,输出下一个状态。但这种方法当和非常接近,动作对结果影响很小的时候效果很不好,这种情况随着变小会更明显。
本文通过预测状态在一个时间步的变化来解决该问题。因此,下一个状态就表示为
训练动力学方程
收集数据:从满足初始分布的初始状态开始执行随机动作采样,记录长度为T的轨迹
数据预处理:把轨迹分片成输入和对应的label 。然后对其进行标准化处理(减平均值除以标准差),使得loss函数平等的权衡state的各个维度。同时对数据添加zero mean高斯噪声提高模型鲁棒性,将这些训练数据存储到数据集中。
训练模型:通过随机梯度下降最小化误差:
当在训练集上训练时,同时会在验证集上计算均方误差作为方程预测能力的评估,但这个误差只是评估的模型对下一个状态的预测能力,我们关心的其实是其对未来的预测能力(因为要用它作长期的控制)。因此本文通过前向传播H次计算H-步验证误差。对于上的每一个给定的实际动作序列,本文将地面实际的对应状态序列和动力学模型的多步状态预测进行比较:
: where
这个H-步验证只是被用来评估实验结果的,训练过程中是没有使用的。
基于模型的控制:为了能够在任务中编码使用学到的模型和奖赏函数,本文形式化定义了一个计算简单且误差鲁棒的基于模型的控制器。基于之前Preliminaries讨论的,首先使用学到的动力学模型优化H步视野的动作序列 where
.
由于动力学模型和奖赏函数是非线性的,所以精确的计算上式是很难的,本文使用一种简单的random-sampling shooting方法来求近似解:随机生成K个候选动作序列,用学到的模型生成对应的状态序列,由此可以计算奖赏序列,最后选取期望累计奖赏最高的动作序列。同时使用model predictive control(MPC):策略只执行第一个动作,得到下一个状态,在下个时间步重新计算最优动作序列。
这种预测动力学模型+MPC控制器的方法有利在模型只需要被训练一次,通过简单的改变奖赏函数,就可以实时的完成许多不同的目标,而不需要根据具体任务重新训练。
用强化学习提高基于模型的控制:本文使用交叉迭代收集当前模型的数据和使用当前混合数据重新训练模型的方式来增加额外的同策略数据。这种方式减轻了数据的状态-动作分布和基于模型的控制器的分布之间的不一致性来提高性能。 上图提供了基于模型的强化学习算法的概述:
首先,生成随机轨迹数据集,用来训练,然后使用基于模型的MPC控制器收集T个新的同策略数据点,添加到数据集上。然后用这两个数据集重新训练动力学方程。如此在训练模型和收集数据间交叉迭代,直到到达最大迭代次数。
MB-MF:Model-Based Initialization of Model-Free Reinforcement Learning Algorithm
上面提到的这种基于模型的强化学习算法可以用非常少的采样学习到非常复杂的步态,但在benchmark任务中,它的最终表现还是弱于纯粹的无模型学习算法。为了取得更好的效果,本文提出一种简单但有效的方式来把基于模型的方法和现成的无模型算法结合起来,以结合两者优势,主要思想就是训练一个策略来模拟学到的基于模型的控制器,然后把这个策略作为无模型强化学习的初始策略。
初始化无模型学习器
首先用MPC控制器(使用基于模型的强化学习算法学到的动力学方程)收集样例轨迹,构造数据集,然后训练一个神经网络策略来拟合中的“专家轨迹”。这里用条件高斯策略来参数化,其中平均数是用一个神经网络来参数化的(??没看懂),协方差是一个固定矩阵。然后使用行为克隆目标函数训练参数:
为了达到期望的性能表现,解决数据分布问题,本文使用DAGGER方法:迭代的进行训练策略,执行同策略,查询“专家”MPC控制器访问的状态的正确动作,然后重新训练策略。
无模型强化学习算法
初始化完成后,我们得到一个策略(使用基于模型的控制器训练出来的)作为无模型学习的初始状态,尽管本文的算法也可以结合其他的无模型强化学习算法,本文选取Trust Region Policy Optimization(TRPO),这种算法对于无模型微调来说是一种很好的选择,因为它不需要任何critic?或值函数来初始化(不是很了解这种算法,所以这儿不太清楚)。
这种算法和本文的方法可以很自然的结合起来,简单的将策略替代原本的随机初始化的策略即可。虽然很简单,但实验效果证明很有效。
Experimental Results
略