【Smooth Exploration for Robotic Reinforcement Learning-平滑探索】

sim2real系列文章


提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • sim2real系列文章
  • 摘要
  • 一、Introduction
  • 二、Background
    • 2.1 动作或者策略参数空间的探索
    • 2.2 状态依赖的探索
  • 三、广义状态依赖探索
  • 四、实验
    • 4.1 、 平滑和性能的对比
    • 4.2、 和原始SDE的对比
    • 4.3 控制机器人A
      • 实验设定
      • 实验结果
      • 附加实物实验:
  • 五、相关工作
  • 六、结论
  • 七、Acknowledgments


摘要

        强化学习使机器人从实际环境交互中学习技能。实际上,应用于强化学习的非结构化的基于步长的探索,在仿真中非常成功,在实际机器人运动模式中导致抖动。由此产生的晃动行为的后果是探索能力差,甚至会对机器人造成损害。我们通过将状态依赖探索(SDE)[1]适应于当前的深度RL算法来解决这些问题。为了使能此适应性,我们对原始的SDE提出了2个扩展,使用更多的一般特征和周期性采样噪声,这将导致一个新的探索方法,广义的状态依赖探索(gSDE). 我们评估gSDE方法在仿真环境,在pybullet连续控制任务上,然后直接在3个不同的实际机器人上:一个是A,B和C。gSDE的噪声采样间隔可以在性能和平滑度之间实现折衷,这可以直接在真正的机器人上进行训练而不会损失性能。


一、Introduction

最早使用人工智能方法的机器人之一被称为“Shakey”,因为它在操作过程中会晃动很多,现在抖动在机器人中已经变得很常见,但是由于不同的原因。当使用DRL学习机器人技能时候,标准的探索方法是每一步 t t t 从高斯分布独立地采集噪声矢量 ϵ t \epsilon_t ϵt,然后将其添加到策略输出。这种方法导致的噪声如图1左侧分析,在仿真中非常有效。
【Smooth Exploration for Robotic Reinforcement Learning-平滑探索】_第1张图片
非结构化的探索已经应用于机器人。但是对于实际机器人的实验,这种方法有很多缺点,在一些文献中已经不断提出:
1):每一步独立采样导致抖动动作,还有嘈杂、不稳定的轨迹
2):抖动的运动模式可能会导致实际机器人的电机损害,导致磨损的增加
3): 在实际环境中,系统作用为低通滤波器。
因此,连续连贯的扰动将互相抵消,导致探索的效果不佳。特别是高频控制,随着步骤数的增加,导致很大的方差。

实际上,我们已经在实际机器人上观测到这些缺陷,包括A,是主要的实验平台。对于所有的实际假定,DRL有非结构化噪声不能应用于David.

在机器人中,很多方法已经被提出用来处理非结构化噪声。包括,非相关噪声,低通滤波器,动作重复,低水平的控制器。一种更规则的解决方法是对参数空间的探索,而不是动作空间。这些方法经常需要算法的根本性改变,当参数数量很多时候这些事很难调节的。

SDE 是一种折中与动作探索和参数探索之间的算法,SDE用依赖于状态的探测函数替换采样噪声,该函数在一段时间内返回给定状态的相同动作。这将导致每个周期更平滑的探索和更小的方差。

据我们所知(to the best of our knowledge),还没有DRL算法成功地和SDE相结合。我们推测,这是因为它要解决的问题:抖动,剧烈的运动-在模拟中不那么明显,这是当前社区的焦点。

本文中,我们的目标是恢复人们对SDE的兴趣,将其作为一种有效的方法,用于解决在真实机器人上使用独立采样高斯噪声所产生的探索问题。我们的具体贡献是:

1、突出结构化高斯探索的问题,section1
2、引入SDE到当前DRL算法,然后解决一些原始公式问题,section2.2;3
3、评估不同的方法在平滑性和邪能之间的折中,显示采样噪声间隔对性能的影响,section4.1;4.2
4、直接应用到4个实物上去,不需要仿真和滤波器, section4.3

二、Background

强化学习的MDP是基本

2.1 动作或者策略参数空间的探索

对于连续动作空间,探索正常是在动作空间完成,每一步,一个噪声矢量 ϵ \epsilon ϵ是独立从高斯分布采样,然后添加到控制器的输出
注意:动作空间
a t = μ ( s t ; θ μ ) + ϵ t , ϵ t ∼ N ( 0 , σ 2 ) (1) \mathbf{a}_t=\mu\left(\mathbf{s}_t ; \theta_\mu\right)+\epsilon_t, \quad \epsilon_t \sim \mathcal{N}\left(0, \sigma^2\right)\tag{1} at=μ(st;θμ)+ϵt,ϵtN(0,σ2)(1)
其中,
μ ( s t ) \mu(\mathbf{s}_t) μ(st): 是确定性策略,
π ( a t ∣ s t ) ∼ N ( μ ( s t ) , σ 2 ) (2) \pi\left(\mathbf{a}_t \mid \mathbf{s}_t\right) \sim \mathcal{N}\left(\mu\left(\mathbf{s}_t\right), \sigma^2\right)\tag{2} π(atst)N(μ(st),σ2)(2) 是随机策略的结果,用来进行探索,
θ μ \theta_{\mu} θμ: 定义确定策略的参数。
为了更简单,全文中,我们只考虑高斯分布的对角协方差矩阵。此处, σ \sigma σ和动作空间 A \mathcal{A} A具有相同的维度,
可以选择地,探索也可以在参数空间实现,
注意:参数空间
a t = μ ( s t ; θ μ + ϵ ) , ϵ ∼ N ( 0 , σ 2 ) (3) \mathbf{a}_t=\mu\left(\mathbf{s}_t ; \theta_\mu+\epsilon\right), \quad \epsilon \sim \mathcal{N}\left(0, \sigma^2\right)\tag{3} at=μ(st;θμ+ϵ),ϵN(0,σ2)(3)

在每个episode的开始,噪声扰动 σ \sigma σ被采样,然后添加到策略参数 θ μ \theta_\mu θμ。这通常会导致更一致的探索,但随着参数数量的增加,这就变得更具挑战性。

2.2 状态依赖的探索

SDE 是一种折中的解决方案,添加基于状态 s t s_t st的函数的噪声,到确定性动作策略 μ ( s t ) \mu(s_t) μ(st)。在每个episode的开始,参数 θ σ \theta_\sigma θσ的探索方程是从高斯分布得来,动作 a t a_t at结果如下,
a t = μ ( s t ; θ μ ) + ϵ ( s t ; θ ϵ ) \mathbf{a}_t=\mu\left(\mathbf{s}_t ; \theta_\mu\right)+\epsilon\left(\mathbf{s}_t ; \theta_\epsilon\right) at=μ(st;θμ)+ϵ(st;θϵ)
θ ∼ N ( 0 , σ 2 ) (4) \theta \sim \mathcal{N}\left(0, \sigma^2\right)\tag{4} θN(0,σ2)(4)

注意:上述的动作噪声是基于状态的,和(2)每步骤都采集高斯噪声不同,和(3)变化参数空间也不同,而是episode开始之后有一个state,此时有一个对应的参数噪声,可以得到探索噪声,此后探索噪声保持几个周期不变化,需要更新的时候,再采集新的状态,更新新的参数

这种基于episode的探索更平滑,更连续。在每一个episode中,动作不再是围绕一个平均值不断震荡,对于一个给定的state,动作保持不变。

不应该将SDE与非结构化噪声混淆,后者的方差可以是状态相关的,但噪声仍然在每一步采样,就像SAC一样。

线性探索方程 ϵ ( s ; θ ϵ ) = θ ϵ s \epsilon(s;\theta_\epsilon) = {\theta_\epsilon}s ϵ(s;θϵ)=θϵs.高斯分布的操作算子,显示action动作部分 a j a_j aj是正态分布的。
π j ( a j ∣ s ) ∼ N ( μ j ( s ) , σ ^ j 2 ) (5) \pi_j\left(\mathbf{a}_j \mid \mathbf{s}\right) \sim \mathcal{N}\left(\mu_j(\mathbf{s}), \hat{\sigma}_j^2\right)\tag{5} πj(ajs)N(μj(s),σ^j2)(5)
其中, σ ^ \hat\sigma σ^是对角矩阵, σ j ^ = ∑ i ( σ i j s i ) 2 \hat{\sigma_j}=\sqrt{\sum_i\left(\sigma_{i j} \mathbf{s}_i\right)^2} σj^=i(σijsi)2
由于我们知道策略的分布,因此,我们可以得到对数似然函数 log ⁡ π ( a ∣ s ) {\log \pi(\mathbf{a} \mid \mathbf{s})} logπ(as)关于方差 σ \sigma σ的导数
∂ log ⁡ π ( a ∣ s ) ∂ σ i j = ( a j − μ j ) 2 − σ ^ j 2 σ ^ j 3 s i 2 σ i j σ ^ j (6) \frac{\partial \log \pi(\mathbf{a} \mid \mathbf{s})}{\partial \sigma_{i j}}=\frac{\left(\mathbf{a}_j-\mu_j\right)^2-\hat{\sigma}_j^2}{\hat{\sigma}_j{ }^3} \frac{\mathbf{s}_i^2 \sigma_{i j}}{\hat{\sigma}_j}\tag{6} σijlogπ(as)=σ^j3(ajμj)2σ^j2σ^jsi2σij(6)
这可以很容易地插入到似然比梯度估计,这使得 σ \sigma σ在训练过程中能够适应。SDE因此可以和标准梯度方法兼容,同时可以解决非结构化探索的大部分缺点。
对于非线性的探索函数,得到的分布 π ( a ∣ s ) \pi(a|s) π(as)在大部分情况下是未知的,因此,计算精确的导数w.r.t的方差不是简单的,可能需要近似推理。这个问题以后再说,此处不提了。

三、广义状态依赖探索

考虑方程式。(5)和(6),原始公式的一些局限性是明显的:
1):噪声在每个episode过程中是不变的,如果episode的周期太长的话,这将导致探索的不足。
2):策略的方差,
σ ^ j = ∑ i ( σ i j s i ) 2 \hat{\sigma}_j=\sqrt{\sum_i\left(\sigma_{i j} \mathbf{s}_i\right)^2} σ^j=i(σijsi)2
依赖于状态空间的维度,意味着初始的 σ \sigma σ必须对每个问题都进行调节。
3):状态与探测噪声之间只有线性相关性,这限制了探测的可能性。
4):状态必须归一化,因为梯度和噪声大小取决于状态大小。

为了减轻上述问题并且将其适用于DRL,对其做了如下改进,
1、我们采集探索方程的参数 θ ϵ \theta\epsilon θϵ每n步而不是整个episode一次;
2、为了替代状态s,可以使用任何一个特征。选择策略特征 z μ ( s ; θ z μ ) \mathbf{z}_\mu\left(\mathbf{s} ; \theta_{\mathbf{z}_\mu}\right) zμ(s;θzμ)
确定策略输出前的最后一层 μ ( s ) = θ μ z μ ( s ; θ z μ ) ) \left.\mu(\mathbf{s})=\theta_\mu \mathbf{z}_\mu\left(\mathbf{s} ; \theta_{\mathbf{z}_\mu}\right)\right) μ(s)=θμzμ(s;θzμ))作为噪声函数 ϵ σ ( s ; θ ϵ ) = θ ϵ z μ ( s ) \epsilon_\sigma\left(\mathbf{s} ; \theta_\epsilon\right)=\theta_\epsilon \mathbf{z}_\mu(\mathbf{s}) ϵσ(s;θϵ)=θϵzμ(s)的输入。

为了解决问题1,每n steps采集参数 θ σ \theta_\sigma θσ一次,并产生一个统一的框架[27],它包括非结构化的探索(n = 1)和原始的SDE (n =集长)。
尽管这个公式遵循了深度RL算法的描述,每m步更新一次参数,但这个关键参数对平滑性和性能的影响直到现在都被忽略了。
利用政策特征可以缓解问题234:状态s和噪音 σ \sigma σ是非线性关系,策略的方差仅仅依赖于网络结构。这将使gSDE更加任务独立,因为网络结构经常可以认为是常数,从而可以节约大量的参数和计算,当工作状态空间较大时候,参数和算子的数量仅仅是最后一层尺寸的函数,且动作维度不再是状态空间尺寸。因此,当使用状态作为噪声函数的输入或策略为线性时,这种表述更一般,并包括原始的SDE描述。
我们称之为广义状态依赖探索(gSDE)。

四、实验

1、对比gSDE和SDE
2、gSDE与其他类型的探测噪声相比,在平滑性和性能之间的折衷方面如何;
3、实际系统效果如何。

4.1 、 平滑和性能的对比

平滑性的评价指标:
C = 100 × E t [ ( a t + 1 − a t Δ max ⁡ a ) 2 ] \mathcal{C}=100 \times \mathbb{E}_t\left[\left(\frac{\mathbf{a}_{t+1}-\mathbf{a}_t}{\Delta_{\max }^{\mathrm{a}}}\right)^2\right] C=100×Et[(Δmaxaat+1at)2]
为了评估平滑性,我们定义了一个连续性成本C,介于0(恒定输出)和100(动作从一个极限跳到另一个极限时训练的连续性成本Ctrain是机器人磨损的代理

我们比较了以下配置的性能:(a)无探测噪声,(b)非结构化高斯噪声(原始SAC实现),©相关噪声(Ornstein-Uhlenbeck过程[30]与σ=0:2,图中为OU噪声),(d)自适应参数噪声19, (e) gSDE。
为了将探测噪声与由于参数更新而产生的噪声分离开来,并更接近真实的机器人设置,我们只在每一集的末尾应用梯度更新。

我们将预算固定为100万步,并报告超过10次运行的平均分数,以及训练期间的平均持续成本及其标准误差。在每10000步中,我们使用确定性控制器(deterministic controller)µ(st)在20个评估片段上测试学习到的策略。关于实现,我们使用了Stable-Baselines3的修改版本[31]和
RL Zoo培训框架[32]。我们所遵循的调优超参数的方法及其详细信息可以在附录中找到。我们用来运行实验和调优超参数的代码c

4.2、 和原始SDE的对比

在本节中,我们研究了所提议的修改对原始SDE的贡献:每n步采样探测函数参数,并使用策略特征作为噪声函数的输入

采样间隔:
其中n允许在非结构化探索n = 1和原始SDE每集公式之间进行插值。这种插值允许在列车时刻的性能和平滑度之间做出妥协(参见表1和图2)。
图3b显示了该参数对WALKER2D任务中PPO的重要性。如果采样间隔太大,代理将无法在长时间的事件中进行足够的探索。另一方面,当采样频率n≈1时,就会出现第1节中提到的问题。
【Smooth Exploration for Robotic Reinforcement Learning-平滑探索】_第2张图片

【Smooth Exploration for Robotic Reinforcement Learning-平滑探索】_第3张图片
策略特征作为输入
图3a显示了改变对SAC和PPO的探索函数输入的效果。尽管它在不同的任务中有所不同,但是使用策略特性(图中“潜在的”)通常是有益的,特别是对于PPO。它还需要较少的调优和不需要规范化,因为它只依赖于策略网络体系结构。这里,PyBullet任务是低维的,状态空间大小的顺序是相同的,因此不需要仔细地对每个任务进行调优。依赖特征还可以直接从像素中学习,这在原始公式中是不可能的。与原SDE相比,提出的两种改进都有利于性能的提高,其中噪声采样间隔n的影响最大。幸运的是,如表1和图2所示,SAC可以相当自由地选择。在附录中,我们提供了一项额外的消融研究,表明gSDE对初始勘探方差的选择具有鲁棒性。

4.3 控制机器人A

实验设定

为了评估gSDE的有效性,我们将其应用到一个真实的系统中。该任务是将肌腱驱动的弹性连续颈部33控制到给定的目标位。由于非线性的肌腱耦合,以及需要精确建模的结构变形,控制这样的软机器人是具有挑战性的。这种建模的计算成本很高[34,35],并且需要在物理系统中可能不成立的假设。

该系统是欠驱动的(只有4根肌腱),因此,所需的位姿是一个4D矢量:旋转的3个角度θx, θy, θz和位置x的一个角度。输入是一个16D矢量,由:测量肌腱长度(4D),当前肌腱力(4D),当前姿势(4D)和目标姿势(4D)组成。奖励是到目标方向的负测地线距离和到目标位置的负欧氏距离之间的加权和。权重的选择使两个分量具有相同的大小。我们还添加了一个小的连续性成本,以减少最终策略中的振荡。动作空间包括肌腱力的期望增量,限制在5n,出于安全原因,肌腱力被剪切在10n以下和40n以上,当代理达到期望的姿势或在5秒超时后,事件终止。该插曲被认为是成功的,如果所需的姿势是在一个阈值10毫米的位置和5◦的方向。代理控制30赫兹的肌腱力,而PD控制器监控机器人上的电机电流为3千赫。渐变更新直接在4核笔记本电脑上完成,在每集之后。

实验结果

结果我们首先在机器人上进行了非结构化的探索,但不得不提前停止实验:指令中的高频噪声正在破坏肌腱,并可能由于肌腱与轴承的摩擦而导致肌腱断裂。因此,作为基线,我们使用SAC和手工制作的动作平滑(2hz截止巴特沃斯低通滤波器)训练了两个小时的策略。然后,我们使用SAC和gSDE训练了相同的时间。我们将这两种学习到的控制器与[34,35]中使用预定义轨迹提出的现有基于模型的控制器(基于被动的方法)进行比较(参见图4b)。在评估轨迹上,控制器是同样精确的(cf.表2):在方向的平均误差低于3◦和一个在位置低于3毫米。然而,使用低通滤波器训练的策略比其他两种策略更加敏感。我们将这种抖动量化为两个时间步之间的平均绝对差,表示为表2中的连续性代价。
【Smooth Exploration for Robotic Reinforcement Learning-平滑探索】_第4张图片
表2:评价轨迹上的平均位置、方向误差和平均连续性代价的比较。当差异显著时,我们强调最佳方法。基于模型的控制器和学习的控制器产生了相当的结果,但使用低通滤波器训练的策略有更高的连续性代价。

附加实物实验:

我们还成功地将SAC与gSDE应用于另外两个真实的机器人任务(见图5a):训练一个弹性四足机器人行走(学习曲线见图5b)和学习使用RC车在轨道上驾驶。两个实验都已完全完成真正的机器人,不用模拟也不用滤镜。我们在补充材料中提供训练过的控制员的视频。

五、相关工作

六、结论

在这项工作中,我们强调了在连续控制的Deep RL算法的非结构化探索中产生的几个问题。由于这些问题,这些算法不能直接应用于现实机器人的学习。为了解决这些问题,我们通过扩展原始公式,将状态依赖探测应用到深度RL算法中:我们每n步采样噪声,并用学习到的特征替换输入的探测函数。这个通用版本(gSDE)为非结构化高斯探测提供了一个简单而有效的替代方案。gSDE在几个连续控制基准上取得了非常有竞争力的结果,同时减少了列车运行时的磨损。我们还通过进行消融研究来研究每个修正的贡献:噪声采样间隔具有最大的影响,并允许在性能和平滑度之间妥协。该策略与SAC算法相结合,对超参数选择具有鲁棒性,适合于机器人应用。为了演示它,我们成功地将SAC与gSDE直接应用在三个不同的机器人上。尽管sim2real方法已经取得了很大的进展,但我们认为应该在实际系统上直接学习上投入更多的努力,即使这在安全性和学习时间方面带来了挑战。这篇论文是朝着这个目标迈出的一步,我们希望它能重新唤起人们对开发探测方法的兴趣,这些方法可以直接应用到真正的机器人上。

七、Acknowledgments

本文描述的工作部分由“Helmholtz-Gemeinschaft Deutscher Forschungszentren”的“降低复杂性模型”项目和欧盟H2020项目资助“人工智能方法在机器人领域的垂直创新”。我们要感谢所有对本文早期版本给予宝贵反馈的人。

代码如下(示例):

代码不好

你可能感兴趣的:(sim2real,机器人,自动驾驶,python,人工智能,机器学习)