📄 论文信息

Gato通用智能体框架

项目内容
标题A Generalist Agent(一个通用智能体)
作者Scott Reed, Konrad Żołna, Emilio Parisotto, Sergio Gómez Colmenarejo, Alexander Novikov, Gabriel Barth-Maron 等 20 位作者
单位DeepMind
发表TMLR 2022(Transactions on Machine Learning Research),arXiv:2205.06175
关键词通用智能体、多任务学习、Transformer、多模态、强化学习
一句话总结用一个 1.2B 参数的 Transformer 网络在 604 种任务上联合训练,同时掌握游戏、机器人、对话等多种技能,证明了通用智能体的可行性
论文链接arXiv:2205.06175
代码链接未开源

🤔 要解决什么问题?

核心问题:智能体的"专才"困境

在 Gato 之前,人工智能领域存在一个深刻的割裂:语言模型越来越通用,而控制策略始终是"专才"

GPT-3 可以写诗、翻译、编程、推理,一个模型处理所有文本任务;但在机器人控制和游戏领域,每个任务都需要单独训练一个模型——打 Atari 需要一个 DQN,机械臂抓取需要一个 SAC,对话需要一个语言模型,图像描述需要一个视觉语言模型。这些模型之间几乎没有知识共享。

这种"专才"模式存在根本性缺陷:

  • 数据效率低下:每个任务从零开始学习,无法利用其他任务的经验
  • 泛化能力有限:在 A 任务上学到的技能无法迁移到 B 任务
  • 部署成本高昂:N 个任务需要 N 个模型,存储和推理资源成倍增长
  • 无法涌现通用能力:没有"举一反三"的可能

更深层的思考:具身智能的模态壁垒

传统控制策略的输入通常是低维的状态向量(关节角度、速度等)或像素图像,输出是动作向量。而语言和视觉理解任务处理的是完全不同的数据模态——文本序列、图像 patches。这两类任务之间存在巨大的模态壁垒

Gato 要回答的核心问题是:能否用一个统一的网络架构,将所有模态的数据(文本、图像、动作、状态)统一表示,并在一个模型中同时处理所有任务?

这不仅是工程上的挑战,更是对"通用智能"本质的一次探索——如果一个模型真的能同时掌握 604 种截然不同的任务,那它在某种意义上就具备了"通用性"。


💡 核心方法

1. 统一的 Token 化框架

Gato 的第一个关键洞察是:如果把所有模态的数据都变成离散 Token,那么一个语言模型就能处理一切

这是对 GPT 系列"万物皆可 Token"思想的极致延伸。GPT 用 BPE 将文本变成 Token,Gato 则将所有模态——文本、图像、动作、状态——全部转化为统一的 Token 序列。

具体的 Token 化方案如下:

文本 Token:使用 SentencePiece 实现的 BPE(Byte Pair Encoding),词表大小为 32,000。这是标准的 NLP Token 化方案,直接复用。

图像 Token:将图像分割为 $16 \times 16$ 的 patch,每个 patch 通过一个 ResNet 编码器转换为一个 Token。这与 ViT(Vision Transformer)的思想一致——将图像视为一个 patch 序列。对于 Atari 游戏画面($210 \times 160$ 像素),会生成 $13 \times 10 = 130$ 个图像 Token。

离散动作 Token:如 Atari 游戏中的按钮按下(上、下、左、右、开火等),直接映射为整数 Token,范围在 $[0, 1024]$ 内。

连续动作 Token:这是最精妙的部分。机器人控制中的连续动作值(如关节力矩、末端执行器位移)首先通过 mu-law 编码映射到 $[-1, 1]$ 区间,然后离散化为 1024 个 bin。每个连续值变成一个整数 Token。mu-law 编码的公式为:

$$x' = \frac{\text{sign}(x) \cdot \ln(1 + \mu |x|)}{\ln(1 + \mu)}$$

其中 $\mu = 255$。这种编码方式对小值更敏感(分辨率更高),对大值较粗糙,符合控制任务中对精度的需求。这与 WaveNet 中使用的音频量化方案一脉相承。

本体感知 Token:机器人的关节角度、速度等本体感知信息也被离散化为 Token。

2. 统一的序列格式

Token 化之后,所有数据被组织成统一的序列格式。这是 Gato 能够用一个模型处理所有任务的关键:

[observation_tokens] [sep] [action_tokens] [observation_tokens] [sep] [action_tokens] ...

具体来说:

  • 每个时间步的观测(图像 + 本体感知)先被 Token 化,按光栅扫描顺序排列
  • 观测 Token 之后紧跟一个特殊的 [sep] 分隔符 Token
  • 分隔符之后是该时间步的动作 Token
  • 整个 episode 按时间顺序排列

对于文本任务(如对话、图像描述),序列格式更简单——直接是文本 Token 的序列,不需要观测-动作的交替结构。

这种统一格式意味着:无论是打游戏、控制机器人还是聊天,数据在模型眼中都是同一种序列。模型不需要知道自己在执行什么任务——它只需要预测下一个 Token。

3. 网络架构

Gato 采用纯解码器(decoder-only)Transformer架构,这与 GPT 系列一致:

参数
参数量1.2B
层数24
嵌入维度2048
注意力后前馈隐藏维度8196
注意力头数32
上下文窗口1024 tokens

为什么选择 decoder-only 而不是 encoder-decoder?作者的解释是"为了简单和可扩展性"。但更深层的原因是:decoder-only 架构天然适合自回归生成,而 Gato 的所有输出(文本、动作)都是自回归生成的。

嵌入函数包含两个组件:

  1. Token 嵌入查找表:文本、离散值、连续值 Token 通过查找表映射到嵌入空间
  2. ResNet 视觉编码器:图像 patch Token 通过一个 ResNet 编码器转换为嵌入向量,并添加图像内位置编码

序列模型就是一个标准的 Transformer 解码器,输出下一个 Token 的概率分布。

4. Prompt 条件化

Gato 的另一个关键设计是 prompt 条件化(prompt conditioning)。在同一个域(如 Atari)中,不同游戏可能有完全相同的观测格式和动作空间,但任务目标不同。模型需要某种方式来区分它们。

Gato 借鉴了 GPT-3 和 T5 的思路,使用 prompt 来提供上下文。具体做法是:

  • 在训练时,每个 batch 中 25% 的序列前面会附加一个 prompt 序列
  • Prompt 来自同一任务、同一来源 agent 的一个 episode
  • 一半 prompt 取自 episode 的末尾(作为目标条件化),另一半从 episode 中均匀采样
  • 在评估时,默认使用一个成功的示范作为 prompt

这意味着 Gato 的 prompt 不是自然语言指令,而是一段成功的行为示范。这种设计类似于 few-shot learning 中用示例来引导模型行为。

5. 训练策略

数据混合:Gato 在 604 种任务的数据上联合训练,涵盖以下域:

任务数数据类型
Atari 260054游戏画面 + 按钮动作
DM Control Suite Pixels20机器人仿真 + 连续动作
DM Homogeneous Rooms23D 导航 + 连续动作
Meta-World145机械臂操作 + 连续动作
视觉-语言任务-图像描述、VQA、对话等
文本任务-翻译、摘要、对话等

数据上采样:为了平衡不同数据集的贡献,作者对较大的和质量较高的数据集进行了手动上采样。具体来说,来自 MT-Open(Meta-World)和 DM Control 的数据被上采样 5 倍,来自 MassiveWeb 的文本数据被上采样 3 倍。

训练配置

参数
硬件16×16 TPU v3
训练步数1,000,000
Batch size512
序列长度1024 tokens
训练时间~4 天
优化器Adam
学习率0.0001(warmup 10k 步)
dropout0.1

关键技巧——随机子序列采样:由于 agent episode 和文档通常远超 1024 tokens 的上下文窗口,训练时从每个 episode 中随机采样长度为 1024 的子序列。每个 batch 中的子序列大致均匀地混合来自不同域的数据。这种做法既保证了每个 batch 的多样性,又避免了截断造成的系统性偏差。

损失函数:标准的下一个 Token 预测交叉熵损失,但只对动作 Token 和文本 Token 计算损失——图像 Token、分隔符 Token 等观测 Token 不参与损失计算。这是通过 masking 实现的,与 BERT 的 masked language modeling 类似,但这里 mask 的是不需要预测的位置。

6. 推理/部署流程

Gato作为控制策略的运行流程

Gato 作为控制策略部署时的流程如下:

  1. Prompt 初始化:将一段成功的示范 episode Token 化,作为初始序列
  2. 接收观测:环境产生第一个观测,Token 化后追加到序列中
  3. 自回归生成动作:模型逐 Token 自回归地生成动作向量,直到所有动作维度都生成完毕
  4. 执行动作:将生成的动作 Token 解码为连续/离散动作值,发送给环境
  5. 循环:环境产生新观测,回到步骤 2

关键细节:模型在上下文窗口内看到所有历史观测和动作(最多 1024 tokens)。作者发现使用 Transformer-XL 记忆(扩展上下文)在部署时有益,尽管训练时没有使用。


🧪 实验验证

主要结果概览

Gato 在 604 种任务上进行了评估。下图展示了各域中达到专家表现不同百分比的任务数量:

训练阶段:多模态数据统一Token化

各域表现总结

达到 50% 专家分数的任务数达到 100% 专家分数的任务数
Atari 260045/5428/54
DM Control Suite Pixels16/204/20
Meta-World121/14530/145
MassiveWeb(文本)-良好
图像描述-良好
对话-良好

与专用模型的对比

这是评估通用智能体价值的关键实验。Gato 将自己与各任务上最佳的专用模型进行了比较:

Atari 游戏:在 54 款 Atari 游戏中,Gato 在 45 款上达到了超过 50% 的专家分数。值得注意的是,Gato 的参数量(1.2B)远小于专用 DQN 或 R2D2 模型,却能在大多数游戏上取得有竞争力的表现。在某些游戏(如 Breakout、Pong)上,Gato 甚至超过了专用模型。

DM Control Suite:在 20 个连续控制任务中,Gato 在 16 个上超过 50% 专家分数。但与专门训练的 SAC 或 DreamerV3 相比,Gato 在大部分任务上仍有差距。这在意料之中——通用模型在单个任务上通常不如专用模型。

Meta-World 机械臂操作:在 145 个操作任务中,Gato 在 121 个上达到 50% 专家分数。这是一个令人印象深刻的结果,因为这些任务涉及不同的物体、不同的操作目标,且大多数任务的训练数据非常有限。

文本和视觉-语言任务:Gato 在图像描述(MS COCO)、对话( MASSIVE)和翻译等任务上都取得了合理的表现,虽然不及专门的大语言模型(如 GPT-3),但作为一个 1.2B 参数的多任务模型,表现已经相当不错。

Prompt 条件化的消融实验

作者进行了详细的消融实验,验证 prompt 条件化的效果:

  • 无 prompt:模型仅依靠观测来推断任务,性能明显下降
  • 随机 episode prompt:使用随机 episode 的片段作为 prompt,性能有所提升但不稳定
  • 成功 episode prompt:使用成功 episode 的片段作为 prompt,性能最佳
  • 末尾 vs 均匀采样:从 episode 末尾采样作为 prompt 通常优于均匀采样,因为末尾包含了"目标状态"的信息

Attention 可视化

注意力权重可视化

作者对 Gato 的注意力权重进行了可视化分析。在 Atari Breakout 游戏中,注意力集中在球和挡板上;在 RGB Stacking 任务中,注意力跟踪着机械臂和目标物体。这表明 Gato 学会了根据任务自动关注相关区域,而不是均匀地处理所有视觉信息。

嵌入可视化

作者使用 t-SNE 对不同任务的嵌入向量进行了可视化。结果表明:

  • 同一任务的嵌入紧密聚集
  • 来自同一域(如 DM Control Suite)的不同任务嵌入彼此靠近
  • 即使是留出任务(cartpole.swingup,训练时未见过),其嵌入也被正确地聚类到 DM Control Suite 域中

这说明 Gato 的嵌入空间具有良好的结构——它自动学习了任务之间的相似性和层次关系。

Scaling 分析

虽然 Gato 本身只训练了一个 1.2B 的模型,但作者指出 Gato 遵循 Transformer 的 scaling law——更大的模型、更多的数据通常会带来更好的性能。这为未来构建更大的通用智能体提供了理论基础。


🔍 个人思考

亮点

1. 统一表示的优雅性

Gato 最大的贡献在于证明了一个极其简洁的假设:所有模态的数据都可以被离散化为 Token,从而被同一个 Transformer 处理。这种统一性是深刻的——它意味着"智能"的不同方面(感知、推理、行动)可能共享相同的底层计算机制。mu-law 编码将连续动作离散化为 1024 个 bin 的方案尤其巧妙,既保证了精度,又使得动作可以像文本一样被自回归生成。

2. 工程上的大胆

在 604 种任务上联合训练一个 1.2B 的模型,这需要解决大量工程挑战:数据格式的统一、不同数据集的采样平衡、训练稳定性的维护。Gato 在 16×16 TPU v3 上仅用 4 天完成训练,展示了 DeepMind 强大的工程能力。

3. Prompt 条件化的实用性

使用成功 episode 作为 prompt 来区分同一域内的不同任务,这是一个非常实用的设计。它不需要任务 ID 的 one-hot 编码,也不需要自然语言指令,而是直接用"做给你看"的方式告诉模型要做什么。这种 few-shot 式的条件化与当前 LLM 的 prompt engineering 一脉相承。

4. 注意力和嵌入的可解释性

论文提供了注意力权重和嵌入空间的可视化,这在多任务学习论文中并不常见。注意力集中在任务相关物体上的发现,以及嵌入空间的有意义聚类,增强了我们对 Gato 内部机制的理解。

局限性

1. 性能天花板

Gato 在大多数控制任务上仍不如专用模型。1.2B 参数的模型要在 604 种任务之间分配容量,每个任务分到的"专业知识"必然有限。这引发了一个根本性问题:通用性和专业性之间是否存在不可调和的矛盾?

2. 模态 Token 化的粗糙性

mu-law 编码将连续动作离散化为 1024 个 bin,这在精度上可能存在瓶颈。对于需要精细力控制的机器人任务,1024 个 bin 可能不够。相比之下,连续输出的策略网络(如 SAC 的高斯策略)可以输出任意精度的动作值。

3. 上下文窗口的限制

1024 tokens 的上下文窗口对于长序列任务(如长时域机器人操作)来说非常有限。虽然部署时可以使用 Transformer-XL 记忆来扩展,但训练时的限制仍然约束了模型处理长序列的能力。

4. 缺乏在线学习能力

Gato 是一个纯监督学习模型,不具备在线试错和自我改进的能力。它只能模仿训练数据中的行为,无法通过与环境交互来探索新策略。这与真正的强化学习智能体有本质区别。

5. 代码未开源

Gato 的代码没有开源,这严重影响了学术界对其方法的验证和复现。考虑到 DeepMind 的特殊地位,这或许可以理解,但也使得 Gato 的影响力受到了一定限制。

未来方向

1. 更大的模型 + 更多的任务

Gato 已经证明了 1.2B 参数的 Transformer 可以在 604 种任务上工作。自然的下一步是:如果把模型扩大到 10B、100B,任务数扩大到 10000+,会发生什么?scaling law 暗示性能会持续提升。

2. 与 VLA 的融合

Gato(2022)和 RT-2(2023)代表了两条互补的技术路线:Gato 从"控制"出发,加入语言和视觉;RT-2 从"语言视觉"出发,加入动作。未来的通用智能体很可能融合两者的优势——既有 Gato 的多任务统一性,又有 RT-2 的大规模预训练知识。

3. 在线学习与自我改进

当前的 Gato 是一个"冻结"的模型,无法在部署后继续学习。将在线强化学习或自我对弈机制引入通用智能体框架,是一个激动人心的方向。

4. 具身智能的统一范式

Gato 展示的"多模态统一 Token 化"思想,正在成为具身智能领域的主流范式。从 RT-2 到 Octo,从 PaLM-E 到 π₀,越来越多的工作采用"将所有输入输出统一为 Token"的策略。Gato 是这条路线的先驱之一。


📖 延伸阅读

  • Decision Transformer(Chen et al., 2021):将强化学习转化为序列建模的开创性工作,Gato 的直接前身
  • RT-1 / RT-2(Brohan et al., 2022/2023):Google DeepMind 的机器人 Transformer 系列,VLA 范式的代表
  • PaLM-E(Driess et al., 2023):将视觉多模态嵌入语言模型的具身 AI 工作
  • Octo(Team et al., 2024):开源的通用机器人策略,延续了 Gato 的多任务统一思想
  • GPT-4 / Gemini:展示了更大规模的多模态 Transformer 的涌现能力
  • Flamingo(Alayrac et al., 2022):DeepMind 的视觉语言模型,与 Gato 共享部分设计理念

编者按:Gato 发表于 2022 年 5 月,距今已四年有余。回头看,它的历史地位或许不在于性能上超越了哪些专用模型,而在于它率先证明了一个关键假设:用一个统一的 Transformer 网络处理多模态、多任务的输入输出是可行的。这一思想深刻影响了后续的 VLA、多模态具身智能等工作,成为通向通用智能体的重要里程碑。如果说 GPT-3 证明了"语言可以统一一切文本任务",那么 Gato 则在探索"Token 可以统一一切模态和任务"的可能性——虽然它只是迈出了一小步,但方向是正确的。