跳转至

BiMoGen: Bidirectional Motion-Text Generation via Unified Masked Discrete Diffusion

会议: NeurIPS2026
arXiv: 2609.35407
论文: 项目页
领域: 人体理解
关键词: 双向运动文本生成、掩码离散扩散、统一词表、两阶段训练、自纠错

一句话总结

BiMoGen 用统一运动文本词表和双向掩码扩散模型同时完成运动生成与运动描述,通过先对齐后条件生成的训练及生成感知自纠错,在 HumanML3D 上取得 T2M R@1 0.555、M2T CIDEr 60.2,但并非所有指标都优于已有统一模型。

研究背景与动机

文本到运动生成(T2M)与运动到文本描述(M2T)使用的是同一种语义对应关系:一句话中的动作、方向和时序,应能在人体运动中找到依据。MotionGPT 等方法把运动离散为 token,再与文字一起进行自回归建模,实现了模型共享;问题是,固定从左到右生成并不贴合这种对应关系。一个早期动作 token 一旦错误,便成为后续预测不可修改的前缀,后文即便提供更多信息,也不能回头修正它。MoMask 等掩码生成方法能够利用双向上下文,但主要服务于单向 T2M,不能直接替代统一双向模型。

掩码离散扩散看似已经解决了生成顺序,却仍面临两层困难。训练初期,模型尚未学会语言与运动的对应关系,就被要求根据一种模态生成另一种模态;而两种模态的序列长度不同,又让统一预测容易偏向运动重建。更隐蔽的是,普通掩码训练只把真实 token 留在可见位置,实际采样却把模型自己生成的 token 留作上下文。尤其在早期高掩码率下,模型依据稀疏上下文作出的错误承诺,仍会影响后续预测;并行生成本身不等于能够纠错。

本文因此分别处理“先学会对应关系”与“学会面对自己的错误”。预训练同时扰动运动和文本,建立共享语义基础;微调再固定条件,只预测目标。自纠错则让同一个模型在训练时读取自己的完整预测并恢复真实目标,在采样时修改已承诺的 token,而不是仅填补尚未解开的掩码。核心 idea:把统一双向掩码生成拆成跨模态对应预训练与条件生成微调,再用生成感知自纠错显式打破“已生成 token 永远正确”的假设。

方法详解

整体框架

BiMoGen 的核心是一个双向 Transformer,而不是 T2M、M2T 各一个独立生成器。预训练 VQ-VAE 将连续人体运动压缩为离散 token,运动词表追加到文本词表;两种模态进入同一个序列,同一个模型在任意位置预测干净 token。T2M 保留文字并生成运动 token,最终经 VQ-VAE 解码为运动;M2T 保留运动 token 并生成文字。

整个流程由 Unified Token Space、Decoupled Training、GASC Training 和 GASC Sampling 四个设计组成。前两者规定表示与学习阶段,后两者把“面对模型自己的预测”同时带入训练和采样。图中的实线表示各阶段的数据或模型交接,虚线专门标出训练监督;推理时没有真实目标监督。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["Paired text + motion"] --> B["Unified Token Space"]
    B --> C["Decoupled Training<br/>PT then SFT"]
    C --> D["GASC Training<br/>in PT and SFT"]
    G["Ground-truth tokens"] -.->|training supervision| C
    G -.->|all-region supervision| D
    D -->|trained model| E["GASC Sampling"]
    H["Visible condition + masked target"] --> E
    E -->|iterative refinement| E
    E --> F["Motion decoding or text output"]

这里的运动分词器是已有单层 VQ-VAE,并非本文重新提出的高容量残差量化结构。模型采用 LLaDA 风格的双向骨干,但附录说明 BiMoGen 从头训练,不能把“采用 LLaDA 架构”理解为“继承已训练的语言模型能力”。自纠错也不额外引入教师、判别器或第二个纠错网络:生成和修订都使用同一个 Transformer。

关键设计

1. Unified Token Space:让两种生成方向共享离散预测接口

连续运动和文字原本不处于同一种输出空间。BiMoGen 使用预训练 VQ-VAE 的编码器,将运动按时间下采样后映射为码本索引;实验中的下采样率为 4,因此一段 120 帧运动对应 30 个运动 token。这个数字仅用于说明压缩关系,token 不是独立的动作标签,也不能把单个码本索引直接解释成“走路”或“转身”。生成结束后,VQ-VAE 解码器把整段 token 序列还原为连续运动。

运动码本追加到文本词表意味着二者共享 token ID 空间和预测接口,并不意味着文字 token 与运动 token 具有相同语义。模型将二者拼接后使用双向注意力,预测某个被遮蔽位置时可同时看到该位置前后的可见 token,以及另一种模态的可见内容。相比因果注意力只允许读取左侧前缀,这个接口更适合动作时序与描述语义相互约束。

前向扰动不是向骨架坐标添加高斯噪声,而是按同一个采样出的掩码率独立地把 token 替换为 [M]。训练遍历从几乎完整上下文到几乎全部遮蔽的状态,反向生成则从全掩码目标开始,逐步恢复可信 token。统一接口使切换生成方向主要体现为“哪一段是条件、哪一段是目标”,不必切换模型结构;运动自身的补全也可以沿用相同机制。

2. Decoupled Training:先学习对应关系,再专门学习条件生成

第一阶段是掩码预训练(PT)。每个配对样本以相等概率按“文字—运动”或“运动—文字”排列,避免模型把固定的模态顺序当作位置捷径。两段使用相同掩码率进行独立 token 扰动,并对两种模态中所有被遮蔽的位置计算监督。这里的“对称”是指两边都可以成为被预测对象,而不是强制两边遮蔽相同数量的 token。模型因此既学习模态内部结构,又学习通过另一种模态恢复语义。

第二阶段是监督微调(SFT)。T2M 以完整文字为条件、运动为目标;M2T 则反过来。正常情况下条件完全可见,只扰动目标,并只对被遮蔽的目标位置计算普通掩码损失。这个变化十分关键:预训练学的是“联合序列中缺失的部分是什么”,微调学的是“给定一个完整条件,怎样生成另一种模态”。只做 PT 并不足以保证最终生成质量,后文消融直接验证了这一点。

微调还加入运动到运动(M2M)的辅助监督:随机选出的运动位置作为条件,其余运动位置作为目标,以更密集的运动内部监督补充文本提供的有限约束。T2M、M2T、M2M 的批次混合比例是 8:1:1,因此统一双向任务并非等量训练。另有 10% 的条件丢弃,把整个条件替换为掩码,帮助模型学习无条件预测,以供 T2M 的无分类器引导(CFG)使用;这不改变正常 SFT 只扰动目标的基本规则。

3. GASC Training:用模型自己的完整预测训练全区域纠错

普通掩码训练中,可见上下文来自真实数据;推理时,可见上下文却可能已经包含错误生成。GASC Training 先对扰动后的输入进行一次标准预测,再把当前“生成区域”的所有 token 替换为模型的 argmax 预测,并停止这些离散预测上的梯度传播。PT 的生成区域覆盖整个运动文本序列;SFT 的生成区域仅覆盖目标,区域外的条件保持原状。特别需要注意,替换范围不是“仅原来被掩码的位置”,而是整个生成区域,包括原来可见的真实 token。

随后,同一个 Transformer 读取这段自生成上下文,再次预测真实 token。纠错损失覆盖整个生成区域,而不是只覆盖原始掩码位置,因为采样中一个已经可见、看起来很确信的 token 也可能是错的。这样,模型不再仅仅学习填空,还学习从自己可能语义不一致、时序不连贯的预测中恢复真实序列。detach 使第二次监督训练纠错能力,而不通过不可微 argmax 回传到第一次预测;第一次前向仍由普通掩码损失训练。

纠错训练使用的是单次预测构造的完整候选,并非逐步复现整条 20 步采样轨迹。它减轻了训练与推理上下文的差异,但不能据此宣称完全消除了暴露偏差。尤其是 PT 会同时生成两种模态,而条件采样只生成目标,两者面对的错误状态仍不完全相同。本文的优势在于用共享模型与额外监督把修订能力学出来,而非保证每次修订都会更正确。

4. GASC Sampling:修订已承诺 token,把未决位置留给后续步骤

标准采样保持条件可见,目标初始化为全 [M]。每一步并行预测被遮蔽位置,以该位置最大预测概率作为置信度,逐步接受高置信度 token,低置信度位置继续保持掩码。T2M 的目标运动长度由外部给定;M2T 则使用最大文字长度生成,再在第一个 [EOS] 处截断。论文并没有解决从自由文本自动推断运动持续时间的问题。

默认总采样步数是 20,在第 5、10 步触发纠错。触发时,当前可见 token 保留,掩码位置暂时用本步预测填满,构造完整目标候选;模型再对这个完整候选做一次纠错前向。纠错结果只写回此前已经解掩码的目标位置,尚未承诺的位置不会因这次纠错被永久填满,而继续交给后续常规采样。附录算法复用了本步掩码预测来暂时补全候选,因此每次触发明确新增的是一次纠错模型前向。

这不是“把错误位置重新 mask 再预测”的普通填空技巧:核心是可见的已承诺 token 也能被替换。完整候选向纠错模型提供了尚未承诺部分的临时语义线索,帮助它重新判断早期承诺是否合理;但写回范围受限,避免把全部低置信度临时预测都提前固化。默认把修订放在前半程,是因为早期稀疏上下文更容易产生错误;实验也显示更密集或更晚的修订并非全面更好。

T2M 使用 CFG,默认引导系数为 4;M2T 不使用 CFG。原文将条件与无条件输出写成概率的线性外推,系数大于 1 时无条件项权重为负,却没有明确说明非负化或归一化处理。因此这里保留“条件/无条件外推与置信度采样”的机制说明,不擅自补成作者未给出的合法概率公式,也不改写为已确认的 logits 引导实现。

20 步指常规采样迭代,并不等于只运行 Transformer 20 次。T2M 的 CFG 需要条件和无条件预测,两个触发点还额外执行纠错前向;具体能否批处理这些调用属于实现问题。主文给出的 0.67 秒是完整默认设置的实测 T2M 延迟,不能把它描述成不含 CFG 或纠错开销的裸 20 次前向成本。

一个完整示例

以“一个人先向前走,再转向左侧”为说明性输入,假设外部指定生成 120 帧运动。文字作为可见条件,目标为 30 个运动 token 的全掩码序列;模型开始并行填充高置信度位置。假设第 5 步前某个已经接受的 token 更像右转,这只是用于说明状态变化的假想错误,不是论文提供的真实个案。

第 5 步触发纠错时,模型先用当前预测暂时补齐余下掩码,得到完整 30-token 候选,再把候选与原始文字一同送回 Transformer。纠错输出可以把已经接受的右转相关 token 改为更符合左转语义的预测,而仍未接受的位置继续保持未决。第 10 步再次检查早期承诺,完成 20 步后才把最终运动 token 交给 VQ-VAE 解码。

若切换到 M2T,同一模型读取可见的运动 token,生成文字并在 [EOS] 截断。纠错仍作用于已经接受的文字 token,而不是修改输入运动;因此“同一个模型双向生成”不等于“推理时同时改写条件和目标”。

损失函数 / 训练策略

用一个目标即可概括 PT 与 SFT 的普通掩码监督:预测区域在 PT 为整个序列,在 SFT 为目标区域;只有被掩码的位置参与该项损失。下式将普通监督与全区域纠错并列,保留了二者最重要的范围差异:

\[ \begin{aligned} \mathcal{L}&=\mathcal{L}_{\mathrm{stage}}+\lambda\mathcal{L}_{\mathrm{SC}},\\ \mathcal{L}_{\mathrm{stage}}&=-\mathbb{E}\!\left[\frac{1}{t}\sum_{i\in\mathcal{G}}\mathbf{1}[x_t^i=\texttt{[M]}]\log p_\theta(x_0^i\mid\mathbf{x}_t)\right],\\ \mathcal{L}_{\mathrm{SC}}&=-\mathbb{E}\!\left[\frac{1}{t}\sum_{i\in\mathcal{G}}\log p_\theta(x_0^i\mid\tilde{\mathbf{x}})\right]. \end{aligned} \]

这是对原文式(1)、(2)、(4)、(5)的统一记号整理,不是额外提出的目标。\(t\) 从 \((0,1]\) 均匀采样,表示 token 被替换为掩码的概率;\(\mathcal{G}\) 是对应阶段的生成区域,\(\tilde{\mathbf{x}}\) 是停止梯度的自预测输入。普通项只监督掩码位置,纠错项不再使用掩码指示函数,\(1/t\) 则是原文采用的掩码率重加权。

模型有 20 层、隐藏维度 1024、334M 参数。PT 训练 100 个 epoch,学习率 2e-4;SFT 训练 200 个 epoch,学习率 8e-5,两阶段均用 AdamW。纠错权重 \(\lambda=1\),实验在单张 NVIDIA H100 上运行。附录比较了预训练 BERT 骨干与从头训练的 BiMoGen,结果并不支持“必须依赖已有语言预训练权重”这一解释。

实验关键数据

主实验

HumanML3D 含 14,616 段运动、44,970 条描述;KIT-ML 含 3,911 段运动、6,278 条描述。R@k 是共享评估空间中配对样本进入前 k 名的比例,FID 衡量生成与真实运动的特征分布距离,MM Dist 是配对文字运动的平均特征距离。CIDEr 衡量描述与参考描述的一致性,BERTScore 衡量嵌入语义相似性;以下保留原文报告尺度。

下表摘取原文表 1、2 的统一模型,不把单任务或分离双模型方法混入“统一模型最佳”的结论。

数据集 模型 T2M R@1 ↑ T2M FID ↓ T2M MM Dist ↓ M2T BLEU@4 ↑ M2T CIDEr ↑ M2T BERTScore ↑
HumanML3D MotionGPT 0.492 0.232 3.096 12.5 29.2 32.4
HumanML3D MotionGPT3 0.553 0.208 2.725 19.4 28.7 35.2
HumanML3D DiMo 0.528 0.047 2.862 22.7 58.1 37.7
HumanML3D BiMoGen 0.555 0.069 2.733 20.1 60.2 38.5
KIT-ML MoTe 0.419 0.256 3.216 14.1 55.6 35.9
KIT-ML DiMo 0.406 0.206 2.983 17.8 68.7 37.7
KIT-ML BiMoGen 0.421 0.222 2.763 17.3 62.2 40.4

HumanML3D 上 BiMoGen 的 T2M R@1 和 M2T CIDEr、BERTScore 有优势,但 DiMo 的 FID 和 BLEU@4 更好,MotionGPT3 的 MM Dist 也略低。KIT-ML 上主要优势在 MM Dist 与 BERTScore,不是所有检索或描述指标。DiMo 使用 RVQ-VAE 和额外残差 Transformer,BiMoGen 使用单层 VQ-VAE,FID 对照不能视为仅改变纠错机制的受控实验。

消融实验

原文表 3 在 HumanML3D 上比较训练策略,表中 SC 指训练时的自纠错目标,不等同于只关闭采样纠错。

配置 T2M R@1 ↑ T2M FID ↓ T2M MM Dist ↓ M2T R@1 ↑ M2T CIDEr ↑ M2T BERTScore ↑
仅 PT 0.416 1.219 3.650 0.434 6.7 16.8
仅 SFT 0.466 0.325 3.259 0.474 41.3 26.4
PT + SFT 0.514 0.102 3.017 0.547 44.0 36.7
PT + SFT + SC 0.555 0.069 2.733 0.573 60.2 38.5

原文表 5 则保持训练模型和常规采样步数不变,只改变采样纠错时机;T2M 使用默认 CFG,M2T 不使用 CFG。

采样纠错时机 T2M R@1 ↑ T2M FID ↓ T2M MM Dist ↓ T2M 延迟(秒)↓ M2T CIDEr ↑ M2T BERTScore ↑
禁用采样纠错 0.551 0.070 2.745 0.55 58.8 39.6
仅第 15 步 0.542 0.056 2.833 0.61 59.6 38.8
每一步 0.529 0.066 2.948 0.78 61.2 41.0
第 5、10 步(默认) 0.555 0.069 2.733 0.67 60.2 38.5

关键发现

  • PT 与 SFT 分工明确:PT + SFT 相比仅 SFT 将 MM Dist 从 3.259 降到 3.017;加入训练 SC 后进一步降到 2.733,CIDEr 从 44.0 增到 60.2。训练纠错的提升明显大于默认采样纠错相对禁用采样纠错的增益。
  • 修订频率不是越高越好:每步纠错的 M2T CIDEr 为 61.2,但 T2M R@1 降到 0.529,延迟升到 0.78 秒。默认方案的 BERTScore 38.5 也低于禁用采样纠错的 39.6,应保留这种指标权衡。
  • 表 6 将修改率定义为已承诺 token 中被纠错修改的比例,将稳定率定义为修改后下一步仍保持该预测的比例。第 5 步分别为 31.82%、84.70%,第 10 步为 29.48%、83.72%;稳定并不等于已经被真实标签验证为正确。
  • 表 4 的 5/20/30 步设置分别报告 FID 0.118/0.069/0.071、延迟 0.20/0.67/0.95 秒、FLOPs 0.34T/1.08T/1.57T。30 步没有全面优于 20 步,不能把增加迭代描述为单调提升。
  • 原文表 1 的 DiMo FID 为 0.047、M2T BERTScore 为 37.7,表 4 的 DiMo(20 步)则为 0.050、35.4。以上主表保留表 1 数值,不能将不同表中的基线行拼成同一实验设置。

亮点与洞察

  • 对应关系学习与条件生成并非同一个目标。先对称遮蔽两种模态、再固定条件只扰动目标,为统一模型提供了清楚的课程式任务切换,而不需要额外模型。
  • 自纠错把“已承诺 token”重新变成可修订对象。可迁移的重点是全区域自预测监督与有限范围写回,而不是简单增加几次填空迭代。
  • 纠错可用于优化语义对齐,但不是物理约束验证器。表 5 中晚期纠错改善 FID 却损害检索,说明运动统计质量和文本符合度不能互相替代。

局限与展望

  • 作者指出 VQ-VAE 的重建质量与码本表达能力仍限制细微运动,当前序列级表示也缺乏手、臂、腿的显式独立控制。更强的部位表示值得研究,但本文的 Part VQ-VAE 对照反而退化,不能假设换分词器就必然提升。
  • T2M 依赖给定运动长度;两组常用数据集不足以证明开放域长时序、复杂手部交互或场景约束下的泛化能力。附录运动补间主要是定性展示,用户研究为 30 条提示、15 位参与者。
  • CFG 的概率外推缺少明确的非负化与归一化说明,纠错增加的前向成本也应独立衡量。后续复现需核实实现细节,不能用补写公式掩盖这些边界。

相关工作与启发

  • vs MotionGPT / MotionGPT3:都追求统一运动语言建模,但本文用双向掩码预测替代固定因果顺序,并允许修订早期承诺;运动解码头的差异仍影响跨模型质量比较。
  • vs DiMo:同样采用双向离散扩散,DiMo 结合 RVQ 预测与强化学习微调,本文重点是两阶段训练与生成感知纠错。本文不是首次把离散扩散用于统一运动文本任务。
  • vs MoMask / MaskGIT:继承并行掩码预测与置信度选择的思路,新增双向运动文本任务及对自生成上下文的全区域纠错监督;不是仅把文本作为运动生成的外部条件。

评分

  • 新颖性: 4/5。共享模型的训练与采样纠错组合有针对性,但统一离散扩散已有同期工作。
  • 实验充分度: 4/5。两数据集、训练与采样消融、计算量及用户研究覆盖较全,缺少同 tokenizer 的 DiMo 受控比较。
  • 写作质量: 4/5。训练区域和写回范围交代清楚,CFG 表达及跨表基线设置仍需复现核实。
  • 价值: 4/5。为统一人体运动生成与理解提供实用纠错机制,细粒度控制和自动长度建模尚未解决。