LIBERO:终身机器人学习的综合基准测试平台
LIBERO 是一个基于 Robosuite 框架构建的基准测试平台,专注于多任务和终身机器人学习中的知识迁移。它主要解决机器人操作任务中两类核心知识的习得:陈述性知识(物体与空间关系)和程序性知识(运动与行为)。
核心设计
系统通过程序化生成管道理论上可生成无限数量的操作任务。目前包含 130 个任务,分为四个套件,每个套件都引入了受控的分布偏移以测试迁移能力:
- LIBERO-Spatial/Object/Goal:分别针对空间关系、物体识别和目标导向的特定知识迁移。
- LIBERO-100:包含 100 个需要纠缠知识迁移的操作任务。
在学习方法上,由于任务奖励稀疏(仅完成任务时获 +1 分),系统采用模仿学习,利用高质量的人类遥操作演示数据进行训练。
策略与算法
视觉运动策略网络主要实现三种架构,均继承自 BasePolicy 基类:
- bc_rnn_policy:基于 RNN 的行为克隆,适合捕捉时序依赖。
- bc_transformer_policy:基于 Transformer 的行为克隆,利用自注意力机制建模长程依赖。
- bc_vilt_policy:视觉 - 语言 Transformer,通过双层 Transformer 分别处理空间和时序信息。
配合五种终身学习算法来应对灾难性遗忘:
- Sequential (base):顺序微调基线,无防遗忘机制。
- ER (Experience Replay):维护旧任务数据缓冲区,混合训练防止遗忘。
- EWC (Elastic Weight Consolidation):计算 Fisher 信息矩阵,保护重要参数不被大幅修改。
- PackNet:渐进式网络剪枝,为不同任务分配不同的网络子集。
- Multitask:所有任务同时训练的基线。
任务套件详解
LIBERO-100 进一步拆分为用于预训练的 LIBERO-90 和用于测试下游性能的 LIBERO-10。前三个套件各含 10 个任务,例如:
- Spatial:涉及黑碗放置在不同位置(如盘子旁、柜子顶、炉子上等)的任务。
- Object:将不同物品(汤罐头、黄油、牛奶等)放入篮子。
- Goal:打开抽屉、移动酒瓶、推盘子等多样化目标。
系统支持 21 种不同的任务顺序排列,用于评估算法在不同序列下的表现。
评估指标
实验过程中主要跟踪以下指标:
- 损失混淆矩阵:记录各阶段各任务的 BC 损失。
- 成功率混淆矩阵:记录各阶段各任务的成功率,直观展示遗忘情况。
- 学习曲线 AUC:衡量智能体学习和成功的速度(前向迁移)。
安装与使用
项目基于 Python 开发,可通过 pip 快速安装。推荐使用 HuggingFace 源下载数据集,避免原始链接失效风险。
# 安装库
pip install libero
# 下载示范数据与套件
python -m libero.download_suite --suite libero_100
# 运行顺序微调实验(以 bc_transformer 为例)
python libero/lifelong_train.py \
--suite libero_100 \
--policy bc_transformer_policy \
--algo sequential


