RL& TrustworthyAI Paper Reading : GROUNDING LANGUAGE PLANS IN DEMONSTRATIONS THROUGH COUNTERFACTUAL PERTURBATIONS
文章目录
原文链接:https://arxiv.org/pdf/2403.17124
to solve what problems?
传统的比如BC,问题在于训练数据太具体,因此很难学到抽象的constraint
而一般的LLM,可以做到对动作流程进行抽象,但缺乏物理知识的grounding
而且当前的模型很难做到recover和replanning
所以问题关键在于怎么让机器人可信地进行学习,和怎么让机器人能够实时重新规划
和强化学习的关系?
根据mode指定policy、BC、模型通过与环境交互完成task、学习mode的边界(RL的state space划分)、损失函数设置奖励信号
Interpretability的体现
- 对state进行划分,得到了更高层次抽象的mode,易于模型学习到边界,并直观展示了mode边界
- 模型决策过程可追溯——feasible matrix&mode belief
How?(generally)
提出了一种GiDle方法,使得机器人或虚拟代理(embodied agents)可以通过演示来学习完成任务。
演示的概念定义:完成一系列动作步骤的实例。可能以视频、传感器数据、时序数据、动作标注数据等形式出现。
GLiDE有两个阶段:
- 模式分类:根据状态(states)对当前的模式(modes)进行分类(比如,机器人在不同位置或执行不同动作时)。
- 模式特定策略学习:根据这些modes制定具体的操作策略
要让模型更好地学习模式分类,有两个要点:
- 如何更好地区分正负样本
- 寻找人工、全面标注每一个modes的替代方案——通过添加扰动,产生”反事实“轨迹 这是一种对抗样本的思想。
- 扰动不重要的部分:如果机器人成功地把水杯拿起来,我们可以稍微改变这个过程,比如让它用不同的方式移动手臂。这个新过程生成的“反事实”轨迹可以用来扩大学习的状态覆盖范围。
- 扰动导致失败的结果:如果我们让机器人在取水时不小心撞到了桌子,导致失败,这种情况可以帮助模型识别在操作中可能的限制和问题。
数据集构建
我们构建了一个数据集 D,其中包含 N 条轨迹及其对应的成功信号:
D = { ( τ i , s u c c i ) } i = 1 N D = \{(\tau_i, succ_i)\}_{i=1}^N D={(τi,succi)}i=1N
其中:
- τ i = { s 1 , s 2 , … , s T } \tau_i = \{s_1, s_2, \ldots, s_T\} τi={ s1,s2,…,sT} 表示第 i i i 条轨迹,包含 T T T 个状态。
- s u c c i ∈ { 0 , 1 } succ_i \in \{0, 1\} succi∈{ 0,1} 表示任务成功(1)或失败(0)。
轨迹扰动
对于每条成功的轨迹 τ \tau τ,我们进行以下扰动:
- 随机选择轨迹中的两个点 X X X 和 Y Y Y。
- 随机选择一个点 Z Z Z。
- 替换轨迹中的 X Y XY XY 段为 X Z XZ XZ 和 Z Y ZY ZY。
新轨迹 τ ′ \tau' τ′ 表示为:
τ ′ = { s 1 , … , s k − 1 , X , Z , Y , s k + 1 , … , s T } \tau' = \{s_1, \ldots, s_{k-1}, X, Z, Y, s_{k+1}, \ldots, s_T\} τ′={
s1,…,sk−1,X,Z,Y,sk+1,…,sT}
其中 k k k 是 Y Y Y 在轨迹中的索引。
- 随机选择夹持器状态 g j ∈ { 0 , 1 } g_j \in \{0, 1\} gj∈{ 0,1}(0表示未抓握,1表示抓握)。
- 在轨迹中随机切换夹持器状态。
扰动后的轨迹表示为:
τ ′ ′ = { ( s 1 , g 1 ) , ( s 2 , g 2 ) , … , ( s T , g T ) } \tau'' = \{(s_1, g_1), (s_2, g_2), \ldots, (s_T, g_T)\} τ′′={(s1,g1),(s2,g2),…,(sT,gT)}
其中 g j g_j gj 是每个状态对应的夹持器状态。
任务成功信号
执行扰动后的轨迹 τ ′ \tau' τ′ 和 τ ′ ′ \tau'' τ′′ 后,使用控制器在环境中执行,并收集每个轨迹的成功信号:
s u c c ′ = f ( τ ′ ) succ' = f(\tau') succ′=f(τ′) 和 s u c c ′ ′ = f ( τ ′ ′ ) succ'' = f(\tau'') succ′′=f(τ′′)
这里 f ( ⋅ ) f(\cdot) f(⋅) 是一个函数,返回成功(1)或失败(0)
所以,这一阶段的输出可以视为生成的配对轨迹及其任务成功标签: { ( τ i , s u c c i ) } \{(\tau_i, succ_i)\} {(τi,succi)}
获取正负样本,构建分类器
把连续的、具体的演示动作,转变为抽象的、离散的模式过渡的过程
-
模式序列的学习:
- 定义模式序列:
ϕ ( τ i ) = { m 1 , m 2 , … , m T } \phi(\tau_i) = \{m_1, m_2, \ldots, m_T\} ϕ(τi
- 定义模式序列: