0. 简介

终生学习作为近年来比较火的一种深度学习方式,导航终身学习(LLfN)旨在解决标准导航问题的一种新变体,在该问题中,智能体在有限的内存预算下,通过学习提高在线经验或跨环境的导航性能。而最近有一篇文章《A Lifelong Learning Approach to Mobile Robot Navigation》提出了一种新的终身学习导航(LLfN),它完全基于移动机器人自身的经验来改进其导航行为,同时在学习新环境后仍然保留机器人在以前的环境中导航的能力。LLfN算法可以完全在一个真实的内存和计算预算有限的机器人上实现并测试。相对于经典的静态导航方法需要特定环境的原位系统调整,例如,来自人类专家,或者可能重复他们的错误,无论他们在相同的环境中导航了多少次。基于学习的导航具有随着经验而改进的潜力,它高度依赖于对训练资源的访问,例如,足够的内存和快速的计算,并且很容易忘记之前学习的能力,特别是在面对不同的环境时。

[video(video-8YMhqN97-1672123002994)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=263318416)(image-https://img-blog.csdnimg.cn/img_convert/8662b5227bd13bb2e1f384564d378717.jpeg)(title-【ICRA2021】3602-移动机器人导航的终身学习方法)]

1. 文章贡献

本文介绍了解决上述挑战的终身学习导航(LLfN)框架:导航策略不是从头开始学习,而是通过经典导航算法初始化,其导航性能不会随着经验的增加而提高。机器人能够识别自己的次优动作并从中学习。然后,导航性能以一种自我监督的方式提高。在面对不同的导航环境时,导航策略能够学习适应新的环境,同时不会忘记如何在以前的环境中导航。本文最重要的贡献有以下三点:

  1. 提出了一种可以自我完善的算法,该算法可以有效补充传统的静态规划器,并通过更多的经验动态地提高导航性能,同时它可以与初始规划器一起部署,以最小化学习开销。
  2. 提出了一个终身学习计划,允许机器人在新的环境中导航,同时不忘记以前的环境;
  3. 终身学习导航框架的实现完全在物理机器人平台上,该机器人只有有限的内存和计算能力。

2. 详细内容

导航终身学习(LLfN)旨在解决标准导航问题的一种新变体,在该问题中,智能体在有限的内存预算下,通过学习提高在线经验或跨环境的导航性能。首先我们先来看一下终身导航的问题设置和我们在这项工作中使用的符号。

2.1 问题设置和符号

终身导航的高级目标可以概括为学习在m个环境{\varepsilon_i}^m _{i=1}的序列中导航。在这些环境中,机器人的目标是从一个固定的起点导航到另一个固定的目标点。我们假设一个固定的全局规划器(例如Dijkstra的算法[33],A^_[34]或D^_[35])生成连接起点和目标的路径,在导航时,机器人需要产生遵循该全局路径的运动命令,遵守其运动学约束并避开障碍物。每当代理前进到\varepsilon_k时,它不再能够访问{\varepsilon}^{k−1}_{i=1}。在环境\varepsilon_k中,智能体在每一个时间步长t处,在a_t∈\mathcal{A} ~ π_θ(s_t)处计算一个运动命令,其中s_t∈S是智能体的状态,π_θ是由θ参数化的策略。在执行a_t之后,代理前进到s_{t+1},进程继续。在学习阶段,智能体的板载内存大小为n,即在任何时刻最多可以存储n(s_t, a_t)。一旦智能体看到了所有m个环境,它的导航性能将在相同的m个环境中进行评估。

2.2 如何终生学习

直观地说,灾难性遗忘是由学习新事物时覆盖旧知识的困境造成的。在现实世界的导航中,智能体不太可能需要每秒钟都学习新的东西。使用经典方法,智能体可以轻松地在许多地方导航,并且只在特定的场景下(例如图1中的绿色和红色路径段)才会有导航问题。因此,我们将终身学习导航(LLfN)视为一个框架,它学习辅助规划器来辅助经典规划器,所以辅助规划器仅用于导航那些困难的实例。此外,规划器的更新应该对过去的学习行为影响最小。为了实现这一目标,智能体应该能够首先识别那些“困难”的场景,即识别在哪些特定状态下智能体会生成次优运动命令。

此外,由于我们不假设可以获得专家演示,智能体必须一直采样运动命令,直到克服智能体状态周围的困难。然后,通过观察智能体周围的轨迹,智能体应该能够识别出一个良好的行为,即状态动作对,这样从状态动作对中学习的知识将增加智能体克服周围困难的概率(如图2)。

下面我们来看一下主要的流程

1.基于初始采样的导航规划π_0,可学习策略π_θ,参数为θ
2.拥有一个评分函数D: S×A→\mathbb{R},用于评估动作A在状态S时的好程度,即越大的D(s, a)表示动作a在状态s时更好。
3.存储过去T_{step}轨迹的流存储缓冲区B_{stream},即Bstream = {sj, aj}^t_{j=t−t +1}
4.每个环境的内存M_k: |M_k| = n/k (n是内存预算),用于存储来自环境Ek的范例训练数据(值得学习的自生成数据)。因此,进入\varepsilon_k之前的整个内存是一个集合的集合:B = {M_i}_{i<k}
5.给定最近的次优行为(s, a)∈B_{stream},找到样本训练数据(s’,a’)∈B_{stream},从而从(s’,a’)中学习提高了s的导航性能。

  1. 给定$$M_k$$和$$B$$,更新$$π_θ$$的持续学习算法$$A_{cl}$$应该在以前的环境中保持性能。

下面是整个个伪代码流程: