lucidrains/q-transformer
Implementation of Q-Transformer, Scalable Offline Reinforcement Learning via Autoregressive Q-Functions, out of Google Deepmind
Q‑Transformer – 基于自回归 Q 函数的离线强化学习
是什么 – 2023年谷歌DeepMind论文《Q‑Transformer》的PyTorch实现。将Q函数视为自回归模型,预测离散动作序列,从而实现对机器人任务的可扩展离线强化学习。
核心组件
QRoboticTransformer– 基于MaxViT的视觉Transformer骨干网络,接收视频帧和可选的文本指令,输出离散动作空间的Q值。QLearner– 在由代理生成的回放缓冲区数据集上执行Q学习的训练循环。Agent– 在用户提供的环境(BaseEnvironment的子类)中运行模型以收集轨迹。ReplayMemoryDataset– 用于存储(状态, 动作, 奖励, 下一状态, 完成)元组的简单数据集包装器。
如何获取
pip install q-transformer
典型工作流程
- 定义环境 – 实现
BaseEnvironment或使用提供的MockEnvironment,该环境期望输入视频张量和指令嵌入。 - 创建模型 – 使用视觉超参数(例如小型MaxViT)实例化
QRoboticTransformer,并指定离散动作数量和分箱数。 - 收集数据 –
Agent(model, environment, ...)()运行多个episode,将转换存储在回放缓冲区中,并写入磁盘。 - 训练 –
QLearner(model, dataset=ReplayMemoryDataset(), ...)()执行Q学习(支持dueling头、n步回报、梯度累积等)。 - 推断动作 – 训练完成后,调用
model.get_optimal_actions(video, instructions)获取新视频-指令对的最佳离散动作序列。
独特之处
- 实现了自回归Q函数思想,使模型能够高效处理多维离散动作空间。
- 包含可选的dueling架构、n步回报和保守正则化占位符。
- 面向机器人设计:模型可处理多摄像头视频(
(3, 6, 224, 224))和语言指令。 - 仓库维护详细的TODO列表,反映正在进行的研究方向(如beam-search解码、对过去动作的交叉注意力、Gumbel探索)。
适合谁使用
- 探索操作或具身智能体离线强化学习的研究人员。
- 需要从视频和语言中实现离散化机器人控制即插即用基线的实践者。
- 任何希望复现或扩展Q‑Transformer论文的人(该实现已被Kotb等,2024年复现)。
引用 – README提供了原始Q‑Transformer论文及相关工作(FlashAttention、持续学习正则化等)的BibTeX条目。
以上所有细节均直接取自仓库的README。
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- 项目