TEXPLORE:实时样本高效的机器人强化学习算法
在机器人控制和其他现实世界任务中,强化学习(RL)面临着诸多挑战,如样本效率、连续状态空间处理、传感器和执行器延迟处理以及实时连续学习等。本文将介绍一种名为 TEXPLORE 的算法,它是首个能同时解决这些挑战的算法。
1. 背景知识
在深入了解 TEXPLORE 算法之前,我们需要先了解一些基本概念。这里采用标准的马尔可夫决策过程(MDP)形式。MDP 由一组状态 $S$、一组动作 $A$、奖励函数 $R(s, a)$ 和转移函数 $P(s’|s, a)$ 组成。在许多领域中,状态 $s$ 可以用一个包含 $n$ 个状态变量的向量 $s = \langle x_1, x_2, …, x_n \rangle$ 来表示。
在每个状态 $s \in S$ 下,智能体采取一个动作 $a \in A$,并根据转移函数 $P(s’|s, a)$ 到达一个新的状态 $s’$,同时获得奖励 $R(s, a)$。给定状态 - 动作对 $(s, a)$ 的值 $Q^ (s, a)$ 是对从该对获得的未来奖励的估计,通过求解贝尔曼方程得到:
$Q^ (s, a) = R(s, a) + \gamma \sum_{s’} P(s’|s, a) \max_{a’} Q^ (s’, a’)$,其中 $0 < \gamma < 1$ 是折扣因子。智能体的目标是找到一个策略 $\pi$,将状态映射到动作,以最大化其生命周期内的预期折扣总奖励。最优策略 $\pi$ 为 $\pi(s) = \arg\max_a Q^ (s, a)$。
基于模型的 RL 方法通过近似每个状态和动作的 $R(s, a)$ 和 $P(s’|s, a)$ 来学习领域模型。智能体可以通过值迭代或 UCT 等方法在该模型上进行规划,有效地使用模型更新每个状态的贝尔曼方程。而无模型的 RL 算法仅在实际任务中采取动作时更新动作的值。一般来说,基于模型的方法比无模型的方法更具样本效率,因为其样本效率仅受学习一个好模型所需的样本数量的限制。
2. TEXPLORE 算法概述
TEXPLORE 是一种样本高效的基于模型的实时 RL 算法。下面将分别介绍其实时架构和模型学习方法。
2.1 实时架构
大多数当前基于模型的 RL 方法使用顺序架构,智能体接收新的状态和奖励,用新的转移 $\langle s, a, s’, r \rangle$ 更新其模型,在更新后的模型上进行精确规划(如通过值迭代计算最优策略),然后从其策略中返回一个动作。由于模型学习和规划都可能需要大量时间,这种算法不是实时的。或者,智能体可以一次批量更新其模型并进行规划,但这需要长时间的暂停来执行批量更新。
为了使算法实时运行,需要对标准顺序架构进行两项修改:
1. 利用基于样本的近似规划 :使用 UCT 算法,它是蒙特卡罗树搜索(MCTS)家族中的一种基于样本的随时近似规划算法。MCTS 规划器从智能体的当前状态模拟轨迹(滚动),用收到的奖励更新采样动作的值。智能体在给定时间内尽可能多地进行滚动,其值估计随着滚动次数的增加而改善。这些方法在大领域中比动态规划方法更有效,因为它们将更新集中在智能体可能很快访问的状态上,而不是遍历整个状态空间。
2. 开发一种新颖的并行架构 - 实时基于模型的架构(RTMBA) :RTMBA 并行化模型学习、规划和行动,使计算密集型过程(模型学习和规划)在时间上分散进行。动作的选择速度由机器人控制循环决定,同时仍然基于最新的模型和规划。
RTMBA 将模型学习和规划过程放在各自的并行线程中,第三个线程与环境交互,接收智能体的新状态和奖励,并返回智能体当前策略给出的动作。线程通过受互斥锁保护的共享数据结构进行通信。通过将动作线程与耗时的模型学习和规划过程解耦,RTMBA 使算法无需在动作之间完成模型更新和规划。
下面是 RTMBA 并行架构的简单示意图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(模型学习线程):::process --> B(共享数据结构):::process
C(规划线程):::process --> B
D(行动线程):::process --> B
D --> E(环境):::process
E --> D
2.2 模型学习
虽然并行架构使 TEXPLORE 能够实时运行,但为了高效学习任务,算法必须快速学习准确的领域模型。传统的表格模型需要智能体从每个状态采取每个动作一次(在随机领域中可能需要多次),因为它们分别学习每个状态 - 动作的预测。如果假设状态 - 动作对之间的转移动态相似,我们可以通过在模型学习中引入泛化来改进表格模型。
TEXPLORE 将模型学习视为一个监督学习问题,以 $(s, a)$ 作为输入,$s’$ 和 $r$ 作为监督学习器要预测的输出。监督学习器可以根据其训练的转移对未见过或很少访问的状态进行模型预测。
TEXPLORE 使用 C4.5 决策树来学习转移和奖励函数的模型。对于连续领域,使用 M5 回归树算法,该算法在树的每个叶子节点学习一个线性回归模型,通过构建分段线性模型来更好地模拟连续动态。
每个树根据包含状态 $s$ 的 $n$ 个特征和动作 $a$ 的向量 $\langle x_1, x_2, …, x_n, a \rangle$ 对特定特征或奖励进行预测。为了处理机器人常见的传感器和执行器延迟,还为模型提供过去的 $k$ 个动作,以便模型学习哪些过去的动作与当前预测相关。
为了驱动探索,TEXPLORE 以随机森林的形式构建多个可能的领域模型。随机森林模型是 $m$ 个决策树的集合,每个树仅在智能体的部分经验($\langle s, a, s’, r \rangle$ 元组)上进行训练。随机森林中的每个树代表对真实领域动态的一种假设。TEXPLORE 然后在这些预测分布的平均值上进行规划,以平衡预测过度积极结果的模型和预测过度消极结果的模型。
3. ROS 代码发布
TEXPLORE 算法和架构已完全实现,并作为机器人操作系统(ROS)存储库公开发布,可在 http://www.ros.org/wiki/rl - texplore - ros - pkg 下载。
ROS 是一个开源的机器人中间件操作系统,包含用于机器人常用功能的工具和库,如硬件抽象和消息传递。它拥有庞大的用户生态系统,许多人将软件包作为开源 ROS 存储库发布。通过将 TEXPLORE 作为 ROS 存储库发布,它可以轻松下载并应用于任何运行 ROS 的机器人的学习任务。
代码发布包含五个 ROS 包:
| 包名 | 描述 |
| ---- | ---- |
| rl common | 包含强化学习智能体和环境通用的文件 |
| rl msgs | 定义了一组用于与强化学习算法通信的 ROS 消息,包括智能体发布的动作消息和订阅的状态/奖励消息 |
| rl agent | 包含 TEXPLORE 算法以及其他常用的强化学习算法,如 Q - learning、SARSA、R - max 和 Dyna |
| rl env | 包含各种基准 RL 领域,如 Fuel World、Taxi、Mountain Car、Cart - Pole、Light World 等 |
| rl experiment | 包含无需 ROS 消息传递即可运行 RL 实验的代码,通过将实验和智能体编译成一个可执行文件,适用于不需要向机器人传递消息的模拟实验 |
4. 示例应用
为了展示 TEXPLORE 算法的实际应用,我们以学习控制自动驾驶车辆的速度为例。任务是通过控制踏板使车辆以期望的速度行驶。
智能体的 4 维状态包括车辆的期望速度、当前速度以及刹车和油门踏板的当前位置。每个步骤的奖励为 $-10.0$ 乘以速度误差(以 m/s 为单位)。每个回合以 10 Hz 的频率运行 10 秒。智能体有 5 个动作:
1. 不执行任何操作(no - op)
2. 增加或减少期望刹车位置 0.1,同时将期望油门位置设置为 0
3. 增加或减少期望油门位置 0.1,同时将期望刹车位置设置为 0
虽然这些动作会立即改变踏板的期望位置,但刹车和油门达到目标位置会有一些延迟。
车辆已经使用 ROS 作为其底层中间件。 rl msgs 包定义了智能体与环境通信的动作和状态/奖励消息。为了将智能体与机器人连接起来,编写了一个 ROS 节点,将动作转换为执行器命令,将传感器信息转换为状态/奖励消息。
具体操作步骤如下:
1. 智能体发布一个介于 0 - 4 之间的整数作为动作消息。
2. 接口节点将该动作消息转换为为汽车的刹车和油门提供命令位置的消息。
3. 接口节点读取提供汽车速度和踏板真实位置的传感器消息,使用这些信息为智能体创建状态向量和奖励,并发布状态/奖励消息。
通过在实际车辆上进行实验,使用连续 TEXPLORE(使用 M5 回归树),在 $k = 2$ 延迟动作的情况下,从 2 m/s 学习到 5 m/s 的速度控制。实验结果表明,在所有五次试验中,智能体在 11 个回合内(不到 2 分钟的驾驶时间)学会了该任务。这证明了 TEXPLORE 代码发布可以用于学习具有连续状态和执行器延迟的机器人任务,同时能够实时连续选择动作。
除了控制自动驾驶车辆的速度,TEXPLORE 的一个变体还用于学习在 RoboCup 标准平台联赛中踢点球。
综上所述,TEXPLORE 算法为解决机器人强化学习中的多个关键挑战提供了一种有效的解决方案。通过其独特的实时架构和模型学习方法,结合 ROS 代码发布和实际应用示例,它为研究人员和开发者提供了一个强大的工具,可用于各种机器人学习任务。
TEXPLORE:实时样本高效的机器人强化学习算法
5. 相关工作
由于 TEXPLORE 算法旨在解决多个挑战,因此在每个单独的挑战方面都有大量相关工作,但没有其他方法能同时解决所有四个挑战。下面主要介绍一些相关的强化学习代码发布。
- rl - glue :类似于
rl msgs包定义了智能体与环境通信的 ROS 消息,rl - glue 定义了通用的类似消息。rl - library 在此基础上构建,作为共享 rl - glue 兼容 RL 项目的中心位置。不过,目前该库仅包含 sarsa(λ) 算法,且没有专注于机器人学习的算法。 - RLPark :这是一个基于 Java 的 RL 库,包含学习方法和实时显示学习数据的方法。它有多种用于控制和预测的算法,支持在线和离线学习。虽然包含一些针对机器人学习的算法,但没有提供与其他机器人连接的 ROS 接口。
- York Reinforcement Learning Library (yorll) :主要专注于多智能体学习,也适用于单智能体学习。它包含一些基本算法,如 Q - learning 和 SARSA,并提供了处理多个智能体的各种选项。但同样没有专注于机器人学习的算法。
- Teaching Box :是一个专注于机器人的学习库,包含一些强化学习算法以及从演示中学习的方法。它使用 rl - glue 来连接智能体和环境,而不是使用 ROS。
以下是相关工作的对比表格:
| 相关工作 | 特点 | 专注机器人学习 | ROS 接口 |
| ---- | ---- | ---- | ---- |
| rl - glue | 定义通用通信消息,rl - library 共享兼容项目 | 否 | 否 |
| RLPark | 基于 Java,含多种算法,支持实时显示 | 是 | 否 |
| yorll | 支持多/单智能体学习,含基本算法 | 否 | 否 |
| Teaching Box | 专注机器人,含强化学习和演示学习算法 | 是 | 否 |
6. 总结与展望
我们确定了强化学习在广泛的机器人任务中进行持续在线学习所需的四个特性:样本高效、适用于连续状态空间、处理传感器和执行器延迟以及实时连续学习。TEXPLORE 算法是首个能同时解决所有这些挑战的算法。不过,TEXPLORE 也有一些未解决的与机器人相关的挑战,如部分可观测性或连续动作,这些将留待未来工作解决。
TEXPLORE 代码发布提供了该算法以及其他常用的 RL 算法,还包含许多常见的 RL 基准任务。通过定义的一组 ROS 消息,很容易将 TEXPLORE 或代码发布中提供的其他算法与已经运行 ROS 的机器人进行接口。
未来,我们可以从以下几个方面对 TEXPLORE 算法进行进一步的改进和拓展:
1. 解决未处理的挑战 :针对部分可观测性和连续动作等问题,研究相应的解决方案,使算法能应用于更复杂的机器人任务。
2. 优化算法性能 :进一步提高算法的样本效率和计算效率,减少学习时间和资源消耗。
3. 拓展应用领域 :将 TEXPLORE 算法应用到更多不同类型的机器人任务中,如机器人抓取、导航等,验证其通用性和有效性。
以下是未来工作的简单流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(解决未处理挑战):::process --> B(优化算法性能):::process
B --> C(拓展应用领域):::process
总之,TEXPLORE 算法为机器人强化学习领域带来了新的突破和发展方向,随着后续的研究和改进,有望在更多实际场景中发挥重要作用。
超级会员免费看
1058

被折叠的 条评论
为什么被折叠?



