一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于自适应近端优化的机器人动作方法

2022-08-17 10:26:42 来源:中国专利 TAG:


1.本发明属于仿真机器人技术领域,具体涉及一种基于自适应近端优化的机器人动作方法。


背景技术:

2.在近几十年的机器人研究领域,行为学习起到了至关重要的作用。尤其在机器人世界杯中,全球各地的参赛队伍都将遗传学习算法应用于机器人模型的参数学习,试图建立自由行为模型。然而在模型的自由行为方面,特别是自由行走训练仍存在很大的局限性:学习获得的行为很难被当前的观测值和机器人状态所约束;在学习过程中依旧容易重复失败的先例。
3.强化学习则没有这方面的诸多缺点,即使被限制在较小的观测空间和行为空间下依旧有良好的表现。深度强化学习算法(drl)在大样本的连续观测空间或是连续动作空间的训练中展现出其他算法难以匹敌的优秀性能。例如离线策略算法ddpg、dqn或是在线策略算法a2c、ppo。这些算法在实际竞技运动中的实践也初见成效:例如星际争霸中进行人工智能的多线操作;dota2中战胜人类职业选手。
4.尽管深度学习算法在机器人训练中的应用十分广泛,但其训练效率仍无法满足预期,并且对于硬件的要求也在逐年上升。同时,还存在着诸如在训练环境的取得良好效果的参数在真正的仿真环境中无法实现等问题。本文意在通过调整算法中的细节操作来改善仿真机器人的训练效率,缩小同一参数在不同环境下的表现差距。


技术实现要素:

5.本发明所要解决的技术问题是克服现有技术的不足,提供一种基于自适应近端优化的机器人动作方法,通过调整算法中的细节操作来改善仿真机器人的训练效率,缩小同一参数在不同环境下的表现差距。
6.本发明提供一种基于自适应近端优化的机器人动作方法,包括如下步骤,
7.步骤s1.开始执行仿真训练任务,判断机器人数据迭代次数是否达到要求次数,若没有达到,则重置机器人到一个初始状态,使用策略运行机器人进行t步或达到目标状态,若达到,则使用来自当前迭代过程中的k组数据训练critical网络;
8.步骤s2.使用gae估算优势函数值,忽视优势函数值中为负的数据或将其转换为正值;
9.步骤s3.使用过去h组迭代数据和损失函数获取k组数据训练策略方差;
10.步骤s4.使用当前迭代数据和损失函数获取k组数据训练策略均值。
11.作为本发明的进一步技术方案,仿真训练的服务项目为robocup 3d足球,其主体环境基于simspark生成,采用ode引擎在50hz的频率下运行,simspark环境中提供了以实体nao机器人为参照的仿真模型;该机器人拥有22个自由度,其中腿部关节拥有7个自由度,手部关节有4个,脖颈有2个;各关节所能达到的最大角速度为每20毫秒7.02度,由于仿真服务
器的更新频率为50hz,在没有接受到agent发出的信号时默认其以前一个信号周期的状态运行,对于单个机器人,从自身改变参数并给服务器发出信号到接受到服务器返回的信号最快为40ms,即两个信号周期。
12.进一步的,策略为自适应近端策略,在时间t时,agent观测到状态矩阵s
t
并采取动作a
t
~π
θ
(a
t
|s
t
),其中π
θ
为策略,执行动作之后与环境的交互生成新的观测值s

t
并收到反馈r
t
,优化的最终目标为获取使累计奖励和达到最大数值的θ,其中γ为[0,1]中的任意数值,γ越低表示学习过程越偏向于速度,反之则允许较长时间的过程;ppo-cma在每一次的迭代过程中都生成出进程,收集“经验”[si,ai,ri,si]。在每一个迭代中,初始状态s0满足一个独立的稳定分布,逐步优化直到到达目标状态或是最大的进程长度。
[0013]
进一步的,策略梯度采用gae,梯度ppo中策略梯度损失为
[0014]
其中,i为最小批采样索引,m为最小批采样大小,a
π
(si,ai)为优势函数,用来估测在状态si时采取的动作ai;正的a
π
表示动作优于平均水准;使用高斯策略处理连续动作空间,策略网络生成状态的均值μ
θ
(s)和协方差c
θ
(s)来采样动作,动作空间的分布符合正态分布即为
[0015][0016]
将协方差矩阵简化为对角矩阵,则为
[0017][0018]
设当前策略均值μ(si)的优势函数为线性函数,则可以将优势函数值为负的动作镜像为正值的动作,则其中,为高斯核函数,给远离均值的动作分配更低的权值。
[0019]
本发明的优点在于,能够以较快的速度稳定地收敛。为尽可能的使训练环境贴近比赛环境,需要模拟训练多段参数。本方法在训练速度上的提升对于实际的动作训练帮助巨大。在执行三维连续动作的任务时稳定性明显优于其他算法。
附图说明
[0020]
图1为本发明的方法流程示意图。
[0021]
图2为本发明的学习率参数示意图;
[0022]
图3为本发明的步数参数示意图;
[0023]
图4为本发明的采样容量参数示意图;
[0024]
图5为本发明的双足行走任务参数示意图;
具体实施方式
[0025]
请参阅图1,本实施例提供本发明一种基于自适应近端优化的机器人动作方法,包括如下步骤,
[0026]
步骤s1.开始执行仿真训练任务,判断机器人数据迭代次数是否达到要求次数,若没有达到,则重置机器人到一个初始状态,使用策略运行机器人进行t步或达到目标状态,若达到,则使用来自当前迭代过程中的k组数据训练critical网络;
[0027]
步骤s2.使用gae估算优势函数值,忽视优势函数值中为负的数据或将其转换为正值;
[0028]
步骤s3.使用过去h组迭代数据和损失函数获取k组数据训练策略方差;
[0029]
步骤s4.使用当前迭代数据和损失函数获取k组数据训练策略均值。
[0030]
仿真训练所服务的项目为robocup 3d足球,其主体环境基于simspark生成,采用ode引擎在50hz的频率下运行。simspark环境中提供了以实体nao机器人为参照的仿真模型。该机器人拥有22个自由度,其中腿部关节拥有7个自由度,手部关节有4个,脖颈有2个。
[0031]
各关节所能达到的最大角速度为每20毫秒7.02度。由于仿真服务器的更新频率为50hz,在没有接受到agent发出的信号时默认其以前一个信号周期的状态运行。对于单个机器人而言,从自身改变参数并给服务器发出信号到接受到服务器返回的信号最快为40ms,即两个信号周期。在比赛项目中采用的是有噪声干扰下的现实时间环境,同时模拟22个仿真机器人。本实施例仅模拟无噪声环境下的单个机器人运动。
[0032]
本实施例采用采用自适应近端策略优化算法(ppo-cma),在时间t时,agent观测到状态矩阵s
t
并采取动作a
t
~π
θ
(a
t
|s
t
),其中π
θ
表示策略。在线策略意味着优化策略的选择同时也决定了探索分布。执行动作之后于环境的交互生成新的观测值s

t
并收到反馈r
t
。优化的最终目标是找到使累计奖励和达到最大数值的θ,其中γ为[0,1]中的任意数值,γ越低表示学习过程越偏向于速度,反之则允许较长时间的过程。ppo-cma在每一次的迭代过程中都生成出一系列的进程,收集大量“经验”[si,ai,ri,si]在每一个迭代中,初始状态s0满足一个独立的稳定分布,逐步优化直到到达目标状态或是最大的进程长度。在完成预定的优化次数后,算法结束。
[0033]
策略梯度采用gae,梯度ppo中策略梯度损失为其中,i为最小批采样索引,m为最小批采样大小,a
π
(si,ai)为优势函数,用来估测在状态si时采取的动作ai;正的a
π
表示动作优于平均水准;使用高斯策略处理连续动作空间,策略网络生成状态的均值μ
θ
(s)和协方差c
θ
(s)来采样动作,动作空间的分布符合正态分布即为
[0034][0035]
将协方差矩阵简化为对角矩阵,则为
[0036]
[0037]
设当前策略均值μ(si)的优势函数为线性函数,则可以将优势函数值为负的动作镜像为正值的动作,则a
′i=2μ(si)-ai,其中,为高斯核函数,给远离均值的动作分配更低的权值。
[0038]
ppo的基本思想是在每次迭代经验的基础上一次进行多个小批量梯度优化,而非一个。其中最关键的是使用同一批数据进行迭代优化时,通过控制两次策略之间的散度来保证优化过程的稳定性。ppo有两个变体:使用一个额外的损失项来控制kl散度和更新策略;使用所谓的代理损失函数。本实施例使用的ppo框架是后者。
[0039]
ppo-cma仅对算法的细节做出改变:使用标准策略梯度损失来代替代理损失函数并在训练时抛弃负值的优势函数估计值;先更新方差再更新均值;保存近h次迭代的训练数据来训练方差网络。
[0040]
为模拟cma的进化路径探索,策略算法需要保存近h次的训练数据并从中采样出用以方差训练的数据批次。原本的算法则是使用最新迭代所产生的数据。与进化算法相同的是:如果均值在朝固定的方向改变时,处于某个给定状态的方差会变大。直接实现路径探索需要额外的神经网络,因此设立一个独立的状态变量p(s)。与探索均值和方差类似,p(s)作为状态表现得一部分需要作为权重在神经网络中进行计算。
[0041]
考虑到单纯地忽略优势函数值为负的行为可能会忽略掉重要的信息,本文尝试将此类动作转化为相应的正值动作。假设当前策略均值μ(si)的优势函数为线性函数,则可以将优势函数值为负的动作镜像为正值的动作。
[0042]
考虑到单纯地忽略优势函数值为负的行为可能会忽略掉重要的信息,本文尝试将此类动作转化为相应的正值动作。假设当前策略均值μ(si)的优势函数为线性函数,则可以将优势函数值为负的动作镜像为正值的动作;例如a
′i=2μ(si)-ai,其中为高斯核函数,用来给远离均值的动作分配更低的权值。这种镜像的方法比起平均的动作值能更好地到达期望目标。但与加权最大似然估计类似,为保证稳定性权值其权值必须为非负的。如果优势函数线性的假设成立,通过镜像方法就能使训练数据翻倍,大大加快训练效率。
[0043]
训练流程如表1所示,
[0044]
[0045][0046]
表1关节参数表
[0047]
表1中头部关节,手臂关节,臀部,膝盖,脚踝,脚趾关节,脚步力传感器,加速度计和陀螺仪为模型原始的传感器。每个力传感器返回12个三维力向量。索引118与119给神经网络设定了初始的探索方向与范围。
[0048]
由于行走动作主要的参数取决于腿部关节,所以给腿部关节分配了最多的变量。对于每个关节,动作空间都包含两个值:各个关节的目标角度和最大角速度。实验过程中发现只设立目标角度的一维变量无法达到期望效果。另一方面,设置角度与角速度有利于关节电机的运作,间接方便了神经网络的训练,如表2所示。
[0049][0050]
表2角度参数表
[0051]
为简化训练流程,机器人设立的目标动作都相对较短。在奖励设置时不采用连续的奖励,而是累计的短期奖励。最终的奖励包括:成功执行动作的次数,偏差过大的动作次数和失败的动作次数reward=x-y-z。为缩短训练时间,一旦机器人摔倒或是执行完动作后能够确保稳定训练过程会被立刻中止。最终的累计奖励为不同目标下执行情况的奖励累计
和rewaord=∑a0(d
0-d)/d
0-a1z,其中d0为期望动作状态,d为最终机器人的状态,a0和a1为训练调整参数。
[0052]
本实施例中训练环境能尽可能得与比赛环境相似,但两者是对立关系。提高训练环境复杂度会大大增加算法训练时间,降低算法优化效率;而训练环境过于单一则使得动作难以移植到比赛代码上。有一种方法能够同时满足两个条件,即将较长的动作拆分为多段小动作,分层优化。但在具体执行上又产生了新的问题:多段分层优化使得机器人的各种动作有着复杂且相异的参数,在实际运行中由于触发条件与干扰因素较多,频繁地切换参数导致机器人行为的错误率大大提高,并且复杂的参数也对服务器的计算能力提出了较高的要求。本文中的训练过程为初始状态的机器人被随机放置于目标周围的一定范围内,在一段时间的准备后朝目标位置的向量方向前进而非一开始就计算好距离(这能大大加快机器人的前进速度)。当目标距离小于某个定值时,开始进入减速状态。在到达目标状态后机器人需要重新恢复自由态并且保持稳定。完成以上流程即为一次成功的训练。
[0053]
第二类ppo的框架能够多线程地执行训练任务,在多个并行的环境中同时训练一个模型。这种模式的运行需要保证算法在各周期的训练中都能稳定地从环境中获得观测值。由于训练时实际针对的目标参数数目较少且流程较短,经常出现个别训练流由于初始化或无法收敛而使整个进程速度变慢。simspark中的异步模式能够很好解决上述问题。算法选取一定百分比的环境返回观测值,剩余环境继续执行剩余次数的训练。由于agent必须收到观测值才能继续之后的步骤,生成一组用零填充的观测值给agent使其继续行动产生数据。由此选择的动作则强制忽略,避免影响整体的结果。这大大降低了多线程同时训练所带来的诸如单个进程故障而导致整个训练停滞和训练效率较低等问题。
[0054]
机器人的许多动作例如转弯,踢球等都是非对称动作。分开训练左右两边无疑是低效且不明智的。某一边的训练参数可以镜像到另一边,这在通常的动作训练中是可行的——仅需要将动作空间镜像即可。而在深度强化学习算法下的动作镜像则无法照搬前者。由于agent在交互时产生的各种数据都需要镜像,除了动作空间需要改变,观测空间也要作出相应的变化。对于某个特定的动作,一侧电机的参数需要镜像,所有关节的角度与速度也要镜像。镜像行为意味着将相关的变量全部进行取反操作。此类操作可以在映射到神经网络的到达域时乘以一个值全为负一的列向量,也可以在这之前对联合值进行取反,或是仅对需要映射的非对称联合关节进行操作。针对观测空间,所有关节都需要使用以上的镜像操作。同时目标坐标也需要在y轴上进行镜像,力向量与加速度也需要进行y轴镜像。陀螺仪则需要在y轴和z轴上同时对称。
[0055]
为评估训练算法效果,选用ppo与未调试的训练算法进行对比。选取接近目标点与两足行走任务,调试各参数观察算法效果。
[0056]
首先调试超参数。ppo定义了一系列的超参数用以训练调整。使用初始的参数,仅改变其中某个的数值进行对比实验。由于训练过程较为复杂,本实验忽略超参数之间的作用关系,仅考虑其对结果的直接影响。
[0057]
学习率控制神经网络对于任务的某个路径学习的速度。学习率过低会导致学习速度慢,影响最后的收敛效率;过高则会使得算法过早地适应于某个路径而排斥后发现的更优解,如图2所示。
[0058]
由图2所示,当学习率为5e-4时算法能较快地确定某个较优的可行解并在之后的
探索中逐步稳定。5e-3的学习率速度较快但收敛效果不佳。5e-5的学习率初始的学习速度低,在之后逐步攀高振荡不止。
[0059]
步数是网络一次更新所需要的循环次数。步数越多,网络进行一次更新所需要的数据就越多。
[0060]
由图3所示,当步数为4000时初始的速度较高且能够较快地稳定于某个范围。3000与5000的步数起始速度快慢不一,中后期振荡明显,无法稳定地收敛。
[0061]
采样容量决定了网络更新时梯度下降所采样的数据大小。
[0062]
由图4所示,采样容量为1024与2048时都能较为快速地完成训练,收敛于较优值。而3072的采样容量更新速度慢,并且过早地收敛于低效的目标。
[0063]
由图5所示,选取不同任务分别使ppo,调参前的本方法和调参后的算法进行比较。在学习双足行走任务时,调整参数后的算法能够更加稳定快速地收敛,保证不会出现先频繁振荡。ppo在尝试此任务时失败故图例不予展示。改进后的算法具有明显优于ppo的性能
[0064]
以上显示和描述了本发明的基本原理、主要特征和优点。本领域的技术人员应该了解,本发明不受上述具体实施例的限制,上述具体实施例和说明书中的描述只是为了进一步说明本发明的原理,在不脱离本发明精神范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护的范围由权利要求书及其等效物界定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献