【学习笔记】经典论文

English 2Hard4Me

Embodied AI Guide

ViT (Vision Transformer)

模型结构

将图像分为不重叠的 Patch, 过一个 Linear Projection, 加入可学习的 Position Embedding (Transformer 那篇文章里的 Position Embedding 是三角函数)

然后直接用 Transformer 的结构进行处理, 最后用一个全连接层进行分类。

主要贡献

不依赖于 CNN 的结构,而是直接利用 Transformer 的架构。

在训练集足够的时候性能超越 CNN。

DINO

Emerging Properties in Self-Supervised Vision Transformers

目的 & 方法

文章想研究在 ViT 上使用 SSL (Self-Supervised Learning) 的效果,模型会学到什么,以及能否应用于下游任务。

采用 Knowledge Distillation 的方法,使用两个结构相同的 ViT (Teacher, Student).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# gs, gt: student and teacher networks 
# C: center (K) # tps, tpt: student and teacher temperatures
# l, m: network and center momentum rates

gt.params = gs.params
for x in loader: # load a minibatch x with n samples
x1, x2 = augment(x), augment(x) # random views

s1, s2 = gs(x1), gs(x2) # student output n-by-K
t1, t2 = gt(x1), gt(x2) # teacher output n-by-K

loss = H(t1, s2)/2 + H(t2, s1)/2
loss.backward() # back-propagate

# student, teacher and center updates
update(gs) # SGD
gt.params = l*gt.params + (1-l)*gs.params
C = m*C + (1-m)*cat([t1, t2]).mean(dim=0)

def H(t, s):
t = t.detach() # stop gradient
s = softmax(s / tps, dim=1)
t = softmax((t - C) / tpt, dim=1) # center + sharpen
return - (t * log(s)).sum(dim=1).mean()

上面是不包括 multi-crop 的版本,里面的 C 类似于一个 moving average,通过均值调整的方式防止 teacher 模型发生 collapse (Why?).

加入 multi-crop 的话,就是通过一张图去裁剪出一组视图 VV,其中有两个全局视图(比较大)x1g,x2gx_1^g, x_2^g 和其他一些比较小的。然后用下面的损失函数:

minx{x1g,x2g}xV,xxH(Pt(x),Ps(x))\min \sum_{x \in \{ x_1^g, x_2^g \} } \sum_{x' \in V, x' \neq x} H(P_t(x), P_s(x'))

其中 H(a,b)=alogb\displaystyle H(a, b)=- a \log b. 相当于让 student 学习从局部到整体概括。

训练完一轮 student 后,用 θtλθt+(1λ)θs\theta_t \leftarrow \lambda \theta_t + (1-\lambda) \theta_s 更新 teacher 的参数 (EMA).

主要贡献

提供了一种 ViT 的 SSL 方法。

而且 ViT 在训练后自然学习到了语义分割、目标检测等信息,而无需额外的监督。

T5

哦。

CLIP

Learning Transferable Visual Models From Natural Language Supervision

目的 & 方法

之前的视觉模型都需要在一个特定的数据集上做有监督训练,能不能训一个通用的视觉模型,使得其无需额外的有监督数据,就可以适应多种的视觉任务?

考虑让模型进行图像-文本的学习。

通过对比学习的方式,最大化对角线的相似度,最小化其他位置的相似度。

效果 & 贡献

CLIP 能在很多视觉任务上,没有微调地 Zero-Shot 达到接近 SOTA 的效果。

证明大规模数据+自然语言监督对模型泛化能力的提升,展示对比学习的有效性等。

PaLM-E

PaLM-E: An Embodied Multimodal Language Model

目的 & 方法

关键问题:如何让大模型能处理机器人的任务,同时结合多模态的信息?

机器人的任务需要结合视觉、文本、状态数据 (state estimation vector) 来进行推理和决策。

因此本文目标就是统一多模态输入的编码。特别地,文章希望能做到将多种模态穿插着使用,例如在文本中间穿插图像。

  • 基于 PaLM 进行改进,引入多模态信息。
  • 采用 ViT 作为图像特征提取器,使用 Object-centric representations,Object Scene Representation Transformer (OSRT),Entity referrals 等方法进行编码(?)

效果 & 贡献

文章的实验证明 multi-tasks 的训练对模型表现有提升。

  • 在多个机器人任务上实现零样本 / 少样本泛化
  • 在传统的 NLP 任务上,PaLM-E 保持了 PaLM 的性能
  • 在多模态任务上性能有所提升

实现了端到端 (End-to-end) 的学习,减少了手工设计的控制管道。但这里的端到端是说从多模态输入到输出任务规划,如果需要用在机器人上,还缺少一个从任务规划到机器人动作的 Policy Model。

RT-1 (Robotics Transformer 1)

RT-1: ROBOTICS TRANSFORMER FOR REAL-WORLD CONTROL AT SCALE

目的 & 方法

设计一个通用的机器人模型,能在不同任务之间泛化。

输入是 66 张 history images 和 task description, 输出是 tokenized action.

首先把 images 过一个 EfficientNet 提取特征,其中加入 FiLM 层以混合文字信息。得到 8181 个 visual tokens (per image).

接着将这 8181 个 visual tokens 过一个 TokenLearners 进一步压缩成 88 个 tokens (per image).

最后 66 张图片,一共 6×8=486 \times 8=48 个 tokens 传进 decode-only Transformer (只有 19M) 并输出 Action tokens.

因为机器人模型的特殊性,所以我们需要关注 Inference Speed. 模型通过 TokenLearners 减少 token 数,同时 reuse 已经计算过的 overlap 的部分来加速推理。

局限

  • 由于是一个 imitation learning 方法,所以可能没法超越示范者。
  • 泛化性还只局限在见过的操作 & 没见过的 combination,对于没有见过的操作还是无法泛化。
  • 任务范围较大,但却比较缺乏高精细操作(dexterous manipulation)

SayCan

zhihu

需要通过 BC (Behavioral Cloning) / RL (Reinforcement Learning) 训练一个 Policy Model,用于将一个 “skill” 映射到机器人的具体行为(参数上的),顺便得到 Reward Model 作为 Affordance Model.

遇到一个问题,先由 LLM 评估做某一个 skill 的可能性(对解决问题有没有用),然后用 Affordance Model 评估在当前 state 下完成 skill 动作的可能性,选择两者乘积的 max 作为 action,然后用 Policy Model 来执行 action.

RT-2

RT-1 只训练了机器人演示数据,RT-2 中加入了 VQA 问题的大量数据,从而使得其具有了更强的泛化能力,以及更好地利用 PaLM-E 等 LLM 的推理能力。

在 PaLI-X 或者 PaLM-E 上做 co-fine-tuning,把 VQA 问题和机器人数据一起 fine-tune,给机器人数据大一点的权重(因为数据少一点)

然后这个模型是部署在云服务上的。

还可以结合 CoT prompting 方法,“这提示我们高层的任务规划 & 低层的运动规划,现在或许可以用一个 VLA 模型解决了” (那是不是就不需要 SayCan 了呢?)

RT-2 是一个真正的 VLA (Vision-Language Action Model),它将视觉、语言、动作统一起来。

zhihu

局限

  • 机器人会做的 motion 还是局限在机器人数据中,他还是不会那些数据中没有的 Physical Skills (作者认为这是因为机器人数据在 skills 的多样性上还不足)
  • computation cost is high.

怎么能让模型泛化到更多样的 Physical Skills 呢?

RT-Trajectory

zhihu

提出了一种 trajectory-conditioned 的模型,在输入中加入任务的期望轨迹。

轨道标签中包含:

  • 2D 的轨迹;
  • 颜色梯度:用颜色、透明度来表示轨迹的时序信息,包括速度和方向等信息(还可以表示 3D 深度的信息)
  • 交互标志:用一些方法表示机械臂正在抓取等

使用类似 RT-1 的模型架构,但是因为没有自然语言输入,所以不需要 FiLM.

上图中第三种轨迹生成方式中,是要么用 LLM 生成代码再得到轨迹 / VLM 直接生成轨迹。

效果

发现在第一帧相同的时候,使用不同的轨迹标签时,机器人的表现是有差异的。

但是其在真实场景下的泛化能力很不错。为什么?“作者认为新任务的轨迹一定程度上是训练集轨迹的组合,确实也体现了模型在轨迹上的泛化能力。”

谜思:感觉基于轨迹来做会比基于 LLM / VLM 做高层规划要牛一点啊,或者说用 LLM / VLM 做高层规划,再通过单步规划生成轨迹,最后提供给机器人,会不会更好?

AutoRT

一套让机器人自己自动化采集数据的方法。

哎哟,感觉不是很好玩,先鸽。

RoboFlamingo

zhihu

用了开源的 VL 模型,使用一个 Feature Fusion Decoder 来融合多模态信息,接下来接一个 Policy Head 来解析成 Actions.

这里的 Policy Head 尝试了 MLP w/o hist, MLP w/ hist, LSTM, Transformer 等结构。结论是需要时序信息,然后 MLP w/ hist < LSTM \approx Transformer,为了简洁使用 LSTM.

也就是说前面的 encoder 都是 freeze 的,而且直接使用的 ViT 实际上是没有直接处理时序信息的能力的。所有的时序信息都在 Policy Head 中保存。