1. 研究的目的
现有技术的局限性:
1
1
1 任务的专用性;
2
2
2 适应性有限。
Gato模型的目标:构建一个多模态、多任务、多模态(multi-embodiment)的通用智能体。
2. 模型结构与设计
- 模型架构:Gato是一个基于Transformer的序列模型,能够处理多种输入模态的数据。
- 模型规模:了解Gato的参数规模(1.2B参数)及其选择原因,实时控制真实世界机器人所需的性能平衡。
- 自回归生成:Gato如何通过之前的token预测下一个token,以及这种方法在通用智能体中的应用。
2.1 分词方式
主要包含四类数据类型:文本、图像、离散动作、连续动作、感知
- 文本:通过 SentencePiece(Kudo & Richardson, 2018)进行编码,共有 32000 个子词,对应整数范围 [0, 32000]。
- 图像:被转化为 16x16 的非重叠图块序列,按栅格顺序排列。每个像素被归一化到 [-1, 1],然后除以图块尺寸的平方根。
- 离散值(如 Atari 游戏按钮按下事件):被转换为整数序列,范围为 [0, 1024]。
- 连续值(如感知输入或关节力矩):首先被转换为浮点数序列(按行主序排列),通过 mu-law 编码到 [-1, 1] 范围,再离散化为 1024 个均匀区间。结果被映射到范围 [32000, 33024]。
完整的令牌序列由 TT 个时间步的数据串联而成: s 1 : L = [ [ y 1 : k 1 , x 1 : m 1 , z 1 : n 1 , ′ ∣ ′ , a 1 : A 1 ] , … , [ y 1 : k 1 , x 1 : m 1 , z 1 : n 1 , ′ ∣ ′ , a 1 : A 1 ] ] s_{1:L}=[[y^1_{1:k},x^1_{1:m},z^1_{1:n},′∣′,a^1_{1:A}],…,[y^1_{1:k},x^1_{1:m},z^1_{1:n},′∣′,a^1_{1:A}]] s1:L=[[y1:k1,x1:m1,z1:n1,′∣′,a1:A1],…,[y1:k1,x1:m1,z1:n1,′∣′,a1:A1]] L = T ( k + m + n + 1 + A ) L=T(k+m+n+1+A) L=T(k+m+n+1+A) 是令牌总数。
注:因为有分隔符|,因此文本和离散的action不会产生歧义
注意:虽然离散动作的范围和连续动作的范围存在重叠部分,但是其上下文的模态信息存在差异,以及嵌入方式存在不一样通过上下文和位置信息可以有效区分Token的类型。这种设计的好处是减少了模型复杂性,提升了多模态数据处理的一致性。
|
|
|
| ---------------------------------------------- | ------------------------------------------------------------------ |
|
|
2.2 模型训练
![[Pasted image 20241117181950.png|525]]
2.2.1 自回归概率建模
- 模型接收一个Token序列 s 1 : L s_{1:L} s1:L,并通过链式法则(Chain Rule)将整个序列的联合概率分解为按序预测下一个Token的条件概率: l o g p θ ( s 1 , … , s L ) = l = ∑ l = 1 L l o g p θ ( s l ∣ s 1 , … , s l − 1 ) log p_θ(s_1,…,s_L)=l=\sum_{l=1}^L logp_θ(s_l∣s_1,…,s_{l−1}) logpθ(s1,…,sL)=l=l=1∑Llogpθ(sl∣s1,…,sl−1)
- 目标是通过最大化这个联合概率,使得模型能够在每一步准确预测下一个Token。
- 使用transformer中的decoder模型
2.2.2 损失函数的定义
- 对于训练集中的每个batch B,定义了一个掩码函数
m
(
b
,
l
)
m(b, l)
m(b,l):
- 如果Token s l s_l sl 是文本Token或是Agent的动作,则 m ( b , l ) = 1 m(b,l)=1 m(b,l)=1。
- 否则 m ( b , l ) = 0 m(b,l)=0 m(b,l)=0。
- 损失函数计算为: L ( θ , B ) = = − ∑ b = 1 ∣ B ∣ ∑ l = 1 L m ( b , l ) log p θ ( s l ( b ) ∣ s 1 ( b ) , … , s l − 1 ( b ) ) L(θ,B)== -\sum_{b=1}^{|B|} \sum_{l=1}^{L} m(b, l) \log p_\theta \left( s_l^{(b)} | s_1^{(b)}, \dots, s_{l-1}^{(b)} \right) L(θ,B)==−b=1∑∣B∣l=1∑Lm(b,l)logpθ(sl(b)∣s1(b),…,sl−1(b))这个损失函数只计算特定类型的Token(如文本和动作),其他类型的Token不参与损失计算。
3. 数据集与结果
主要包含了三类数据集: 1 1 1 模拟控制任务; 2 2 2 视觉与语言的数据集; 3 3 3 机器人-RGB堆叠基准。
展现的能力:
- Gato 展示了其在多个任务领域中的跨任务适应能力,能在大多数任务中接近或超过专家得分的一半,尤其在视觉和控制任务上表现优秀;
- Gato 展现了在图像字幕生成、对话交互以及机器人任务中的通用能力,表明其多模态预训练支持跨领域任务,但在特定领域性能仍有改进空间。
4. 分析
- scaling laws:参数量越大,随着模型处理的token越多,准确率越高;预训练的多样性和数据覆盖范围是 Few-shot 学习中提升性能的关键。通过在大规模、多模态数据上进行预训练,模型可以快速适应多种任务,尤其是复杂任务。
- Out of distribution tasks: 模型规模和预训练质量是机器人技能泛化任务中微调效率和最终性能的核心因素,大规模模型能够快速接近专家基准,展现出强大的迁移学习能力。
- 真实机器人堆叠任务的微调:展示其泛化能力强
- Gato 在技能掌握任务中展现了与专家级基线相当的性能,并通过注意力和嵌入可视化验证了其对任务相关性的理解。此外,专门化模型在单域任务中表现优越,说明特定领域的优化仍然有价值。
一些局限性:
- 目前机器人训练的数据集少
- 上下文的窗口限制
- 对动态任务缺乏适应性