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

Learning Smooth Humanoid Locomotion through Lipschitz-Constrained Policies

Learning Smooth Humanoid Locomotion through Lipschitz-Constrained Policies

  • 研究动机
  • 解决方案
  • 技术路线
    • 背景知识
    • Lipschitz约束策略
  • 实验结果

Learning Smooth Humanoid Locomotion through Lipschitz-Constrained Policies

研究动机

  • 由于仿真中使用的简化动力学和驱动模型,所得到的模型往往接近理想化,这意味着电机可以在任何状态下产生所需的扭矩。因此,基于RL的策略在仿真中训练时,容易发展出类似于开环控制(bang-bang 控制)的抖动行为,导致连续时间步之间的动作差异显著,产生实际执行器无法产生的极高输出扭矩,这些行为往往无法转移到真实机器人上。因此,强制执行平滑行为对于成功的仿真到现实世界的转移至关重要。
  • 训练过程中引入平滑性奖励是一种有效的方法,促使产生更平滑的行为。在机器人运动中,通常惩罚关节速度、关节加速度和能量消耗,或通过应用低通滤波器来平滑策略行为。然而,平滑性奖励需要仔细调整权重以平衡平滑行为与任务完成之间的关系,而低通滤波器往往会抑制或限制探索,导致在为新机器人训练控制器时需要额外的努力。

解决方案

引入Lipschitz-Constrained Policies(LCP),一种通用且可微的方法,用于鼓励RL策略发展平滑的行为。LCP通过可微的梯度惩罚在策略的输出动作与输入观察之间施加Lipschitz约束。LCP只需几行代码即可实现,并且可以轻松集成到现有的RL框架中。

技术路线

背景知识

Lipschitz连续性是一种限制函数变化速度的性质。该性质可用于描述函数平滑性,如图所示。

在这里插入图片描述
Lipschitz连续性。给定两个度量空间 ( X , d X ) (X,d_X) (X,dX) ( Y , d Y ) (Y,d_Y) (Y,dY),其中 d X d_X dX表示集合 X X X上的度量, d Y d_Y dY是集合 Y Y Y上的度量。如果函数 f : X → Y f:X\rightarrow Y f:XY满足存在一个实常数 K K K,使得对于 X X X中的所有 x 1 x_1 x1 x 2 x_2 x2,都有

d Y ( f ( x 1 ) , f ( x 2 ) ) ≤ K d X ( x 1 , x 2 ) d_Y(f(x_1),f(x_2))\le K d_X(x_1,x_2) dY(f(x1),f(x2))KdX(x1,x2)

任何这样的 K K K被称为函数 f f f的Lipschitz常数。因此,如果一个函数的梯度是有界的:

∣ ∣ ▽ x f ( x ) ∣ ∣ ≤ K ||\bigtriangledown _xf(x)||\le K ∣∣xf(x)∣∣K

那么这个函数 f f f是Lipschitz连续的。

Lipschitz约束策略

Lipschitz约束策略是一种通过在训练过程中引入Lipschitz约束来训练产生平滑行为的策略方法。

平滑奖励可以减轻抖动行为,但奖励函数设计复杂,需要调整大量的超参数。此外,这些平滑度奖励是不可微的,因为它们是作为基础环境的一部分来实施的。通常需要通过采样方法,如策略梯度进行优化。而这项工作提出一种基于Lipschitz连续性的简单且可微的平滑度目标,用于策略优化。

m a x π J ( π ) \underset{\pi}{max}J(\pi) πmaxJ(π)
s . t . m a x s , a [ ∣ ∣ ▽ s l o g π ( a ∣ s ) ∣ ∣ 2 ] ≤ K 2 s.t. \quad\underset{s,a}{max}[||\bigtriangledown_s log\pi (a|s)||^2]\le K^2 s.t.s,amax[∣∣slogπ(as)2]K2

其中 K K K为常数, J ( π ) J(\pi) J(π)为RL目标。由于计算所有状态下的最大梯度准则并不容易,因此用对策略推理过程中收集的样本的期望值来近似这一约束条件

m a x π J ( π ) \underset{\pi}{max} J(\pi) πmaxJ(π)
s . t . E s , a ∼ D [ ∣ ∣ ▽ s l o g π ( a ∣ s ) ∣ ∣ 2 ] ≤ K 2 s.t.\quad \mathbb{E}_{s,a\sim\mathcal{D}}[||\bigtriangledown_s log\pi(a|s)||^2]\le K^2 s.t.Es,aD[∣∣slogπ(as)2]K2

其中 D \mathcal{D} D是由策略收集的状态-动作对 ( s t , a t ) (s_t,a_t) (st,at)组成的数据集。而后,使用拉格朗日乘数 λ \lambda λ将约束重新形式化为惩罚项。

m i n λ ≥ 0 m a x π J ( π ) − λ ( E s , a ∼ D [ ∣ ∣ ▽ s l o g π ( a ∣ s ) ∣ ∣ 2 ] − K 2 ) \underset{\lambda \ge 0}{min}\underset{\pi}{max}J(\pi)-\lambda(\mathbb{E}_{s,a\sim\mathcal{D}}[||\bigtriangledown_s log\pi(a|s)||^2]- K^2) λ0minπmaxJ(π)λ(Es,aD[∣∣slogπ(as)2]K2)

为简化目标函数,将 λ g p \lambda_{gp} λgp设置为手动指定的系数,由于 K K K是一个常数,因此可推出一个简单的策略可变梯度惩罚。

m a x π J ( π ) − λ g p E s , a ∼ D [ ∣ ∣ ▽ s l o g π ( a ∣ s ) ∣ ∣ 2 ] \underset{\pi}{max}J(\pi)-\lambda_{gp}\mathbb{E}_{s,a\sim\mathcal{D}}[||\bigtriangledown_s log\pi(a|s)||^2] πmaxJ(π)λgpEs,aD[∣∣slogπ(as)2]

实验结果

请阅读原文。

http://www.xdnf.cn/news/13092.html

相关文章:

  • 麦克风前的“定心术”:用正念与演讲焦虑温柔和解
  • JS Day05
  • ESP32 在Arduino开发环境中,如果程序运行报错如何定位程序报错是哪行代码
  • 香橙派3B学习笔记7:snap安装管理软件包_打包程序与依赖
  • day 48
  • 注意高温陷阱?---可恢复保险丝应用失效案例分享
  • 自动交换两个文件的文件名 VSB脚本技巧 电脑技巧
  • 操作系统期末版
  • 免杀对抗--PE文件结构
  • 汽车车载软件平台化项目规模颗粒度选择的一些探讨
  • 【学习笔记】TLS
  • 贝叶斯医学分析中“先验”的如何进行选择(文献解读)
  • Java【基础篇0】
  • java中装饰模式
  • Go内存池设计与实现:减少GC压力
  • ASM,LVM,扫描并扩容步骤-linux
  • 什么是双脉冲测试?
  • 【C++】第十一节—一文详解vector(使用+杨辉三角+深度剖析+模拟实现+细节详细补充)
  • 为什么要引入内联函数?
  • Python Selenium登录网易邮箱
  • FastAPI实战起步:从Python环境到你的第一个“Hello World”API接口
  • day 18进行聚类,进而推断出每个簇的实际含义
  • token和md5
  • Spring Boot 完全指南:快速构建企业级应用
  • vue中Echarts的使用
  • 【评测】Qwen3-Embedding模型初体验
  • frida Hook入门
  • [FreeRTOS]1.FreeRTOS基础知识
  • Java处理字符数组转换为开始日期和结束日期
  • 【学习笔记】深入理解Java虚拟机学习笔记——第3章 垃圾收集器与内存分配策略