Language-Guided Transformer Tokenizer for Human Motion Generation¶
会议: ECCV 2026
论文: ECCV 原文
代码: https://eanson023.github.io/LG-Tok/
领域: 人体理解 / 动作生成
关键词: 动作分词, 向量量化, 语言引导, 文本到动作生成, Transformer
一句话总结¶
本文提出 LG-Tok,把自然语言引导从生成阶段前移到分词阶段:用一组可学习隐 token 配合纯 Transformer 分词器/反分词器,在量化之前就把文本语义注入动作表示,并用随机丢弃文本(language-drop)的训练方案避免捷径学习、顺带在动作空间实现无语言引导解码,在 HumanML3D 上把 FID 从 MARDM 的 0.114 降到 0.057。
研究背景与动机¶
文本驱动的人体动作生成目前主流是「两阶段」范式:先用一个 VQ-VAE 式的动作分词器把连续动作压成离散 token,再让 GPT / MaskGIT 式的生成模型在 token 序列上做自回归或掩码建模。这条路线的诱人之处在于可以直接复用语言模型已经打磨成熟的训练目标与采样算法,几乎不用改动;代价是分词器的性质会直接决定生成模型能学到什么——分词器给出的 token 是生成模型唯一能看到的动作表示。而现有分词器几乎是清一色的卷积结构:196 帧动作经 1D 卷积做 4× 下采样,压成 49 个隐 token 后再量化(T2M-GPT、MoMask、MMM 等都是这一套)。
这条管线里有一个反复被观察到、却没有被正面解决的取舍:token 越多,重建越好,生成越难。论文用一组数据把它摆了出来——token 数从 104 增加到 160、236 时,重建 rFID 从 0.143 降到 0.110、0.090,而生成 gFID 反而从 0.230 升到 0.205、0.257。「多给点 token」这条最直白的路是有天花板的,因为更长的 token 序列本身就更难让自回归模型学。作者的观察是:语言描述本来就携带高层语义抽象——「a person walks forward」一句就把整段动作的意图概括完了——但现有方法只在生成阶段用文本,分词阶段完全不用它。于是离散 token 被迫把「这段动作大致是什么」这类高层语义也一并编码进去,容量被浪费在文本已经说清楚的事情上;同时卷积分词器的局部感受野也让「全局的语言引导」无法落地:一句话的语义需要作用到整段动作的每一个 token 上,局部卷积天然做不到。
本文的做法是把语言引导提前到分词阶段,并为此换掉整套分词器架构:用一组可学习隐 token 充当查询,把冻结 LLaMA 编码出的文本嵌入与线性投影后的动作拼进同一条序列做自注意力,使量化前的隐表示本身就是「在这句话的条件下算出来的」。这样一来,token 只需专注语言说不清的细粒度动作细节,而重建时又能反过来借助文本补全语义。核心 idea:在量化之前用可学习隐 token 与文本嵌入共同塑造动作的离散表示,并用随机丢弃文本的训练方案逼 token 成为自足的动作表示,从而同时拿到更简单的生成学习和动作空间上的无语言引导解码。
方法详解¶
整体框架¶
LG-Tok 的输入是一段 196 帧的动作序列和它对应的自然语言描述,输出是可被生成模型建模的离散动作 token(训练时还要能把这些 token 还原成动作)。整条管线沿用「分词—量化—反分词」的三段式,但三段都被重写过:冻结的 LLaMA-3.2-1B 提出文本嵌入;Transformer 分词器用一组可学习隐 token 在文本与动作的联合序列上做自注意力,输出紧凑的语义化隐表示;这些隐表示经插值多尺度残差量化(沿用 MoSa 的量化器,10 个尺度)得到 104 / 160 / 236 个离散 token;反分词器则由一组可学习掩码 token 通过两路交叉注意力分别读取去量化嵌入与文本嵌入,回归出 196 帧动作。生成阶段把 MoSa 的尺度自回归模型接在 token 上,并在反分词端做一次动作空间的无语言引导解码。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["动作序列 + 文本描述"] -->|文本| T["语言引导分词<br/>冻结 LLaMA 文本嵌入注入两端"]
A -->|动作| B["Transformer 分词器<br/>可学习隐 token 汇聚全局语义"]
T --> B
T --> D
B --> C["多尺度残差量化<br/>插值降采样 + 10 个尺度"]
C --> D["Transformer 反分词器<br/>掩码 token 双路交叉注意力"]
C --> E["生成模型<br/>尺度自回归逐尺度采样"]
E --> D
D --> F["语言丢弃方案<br/>p=0.1 丢文本 · 动作空间引导"]
F --> G["生成动作"]
图里有两条数据流需要区分:训练时走的是 A→B→C→D 的重建路径(文本同时进入分词器与反分词器),推理时走的是「生成模型采样 token → 反分词器 → 引导外插」的生成路径,两条路径共用同一个反分词器。量化器与生成模型都是沿用已有工作(MoSa)的组件,本文的改动集中在分词器、反分词器和文本注入方式上。
关键设计¶
1. 语言引导分词:文本嵌入在分词与反分词两端同时注入
先前方法的文本只出现在生成阶段(作为生成模型的条件),分词阶段完全看不到语言。本文把冻结的 LLaMA-3.2-1B 提取的文本嵌入(最多 77 个 token)在分词器输入端与可学习隐 token、线性投影后的动作拼成同一条序列,并在反分词器端再让掩码 token 通过一路交叉注意力读取它:
其中 \(z_l\) 是可学习隐 token、\(m\) 是动作、\(t\) 是文本嵌入,\(\hat{z}\) 是去量化后的隐表示、\(\hat{m}_l\) 是反分词器的掩码 token。值得注意的是,这里既不是条件式量化(码本并不随文本变化),也没有额外的跨模态对齐损失——训练目标只有动作的重建损失,不对文本做任何重建,语言的作用完全通过「量化前就带着文本算一遍」这一架构事实来实现。
这样做的收益在两个方向上都成立:编码端,量化前的表示已经吸收了句子级语义,token 不必再重复编码「这段动作是什么」,可以专注语言说不清的细粒度细节;解码端,文本作为额外的信息来源帮助掩码 token 补全动作。消融(表 5e)显示只往一端注入都不够——只注入分词器时重建 FID 0.063 / MPJPE 57.5,只注入反分词器时 0.055 / 58.7,两端都注入才拿到 0.049 / 56.1,说明「编码时塑造表示」和「解码时辅助重建」是两件互补的事。
2. Transformer 分词器:用可学习隐 token 取代卷积下采样
卷积分词器的根本问题不在于性能,而在于它的表示形式无法承载全局语言引导:196 帧动作被 1D 卷积 4× 下采样成 49 个隐 token,一个 token 只覆盖固定的 4 帧邻域,句子级语义没有一个「全局的座位」可以坐。本文改成预定义一组长度为 \(T\) 的可学习隐 token \(z_l\),与线性投影后的动作拼在一起送进 9 层自注意力编码器,只取隐 token 所在位置的输出作为分词结果。于是 token 数 \(T\) 与帧数彻底解耦:196 帧也可以压成 25 个 token(LG-Tok-mini),每个 token 通过注意力直接聚合整段动作的信息;论文还特意不做 patchify,因为 1D 的 196 帧序列计算量远小于 2D 图像,切块只会白白损失信息。
架构细节上,分词器与反分词器都对齐 LLaMA 的设计:RMSNorm、SwiGLU 激活、RoPE(base 取 100,以适配这段约 10 秒的短序列),并额外加了 UNet 式的长跳连以提升重建保真度。与同样采用 Transformer VQ-VAE 的 M2DM 相比,差别在于 M2DM 仍是 1:1 的帧—隐变量对齐、只在 64 帧短片段的裁剪上训练,而 LG-Tok 用 \(N\) 个解耦于帧数的查询编码 196 帧,token 承载的是句子级而非局部逐帧的语义。量化部分沿用 MoSa 的插值多尺度残差量化:把隐 token 插值降采样到不同粒度,用 10 个尺度(量化器)逐级做残差量化,三个变体(25 / 36 / 49 个隐 token)分别得到 104 / 160 / 236 个离散 token(原文给出的尺度序列写作 \(S=(1,2,\dots,25)\)、\((2,4,\dots,36)\)、\((3,6,\dots,49)\),⚠️ 逐尺度取值与 \(N=10\) 的对应关系以原文及附录为准;码本大小原文记为 \(V\),未给出具体数值)。
3. Transformer 反分词器:掩码 token 经两路交叉注意力重建动作
反分词端面对的是一个信息不对称的问题:它要还原 196 帧的连续动作,手里却只有几十个离散 token 的去量化嵌入,重建压力几乎没有缓冲。本文的做法是准备一组可学习的掩码 token \(\hat{m}_l\)(长度对应帧数),让它们主动去「取」信息,而不是被动地等待卷积上采样:掩码 token 与去量化嵌入、文本嵌入之间各有一路独立的交叉注意力,前者负责细粒度动作细节,后者负责高层语义,最后经一个线性层回归到动作空间。这个设计明显借鉴了目标检测里的 object queries 与 MAE/DeiT 式解码器——用一组查询 token 把「要生成多少个输出位置」和「从哪里取信息」分开。
两处交互方式的不对称是这套设计的关键:分词器端用的是 in-context(文本、隐 token、动作拼成一条序列做联合自注意力),反分词器端用的是交叉注意力。消融(表 5g)把两种组合都试了一遍:两端都用 in-context 是 0.053 / 66.1,把分词器改成交叉注意力会崩到 1.120 / 111.2,把反分词器改成 in-context 更是崩到 2.049 / 127.7。原因在于编码端需要文本与动作在同一序列里相互塑造、共同决定量化前的表示,而解码端需要的是一组查询槽位反复、分头地去取两类信息。
4. 语言丢弃方案:随机丢文本,兼得抗捷径与动作空间引导
把文本直接喂给分词器与反分词器会诱发捷径学习:模型很快发现「文本嵌入里已经有答案」,于是重建时直接把文本的语义贴回动作,离散 token 本身反而没学到多少细粒度动作信息。论文给出的证据很有说服力——不做丢弃时,重建的 Top-1 与 MM-Dist 反而略好,但重建 FID 明显变差(HumanML3D 0.022→0.039,Motion-X 0.041→0.057)。这是典型的捷径特征:文本先验被混进重建动作里,抬高了文本—动作联合嵌入空间里的对齐分,而 FID 这种纯分布度量会如实暴露保真度的下降。本文的对策极其简单:训练时以概率 \(p=0.1\) 把文本输入置空(\(t=\varnothing\)),逼分词器与反分词器都学会在没有语言的情况下工作,使离散 token 成为自足的动作表示。
这个方案还额外换来一个能力。既然反分词器见过「有文本」和「没文本」两种模式,推理时就可以直接做无分类器引导(CFG),而且是发生在动作空间而不是 logits 或噪声空间——条件与无条件两次前向得到 \(m_c\) 与 \(m_u\),按引导尺度 \(g\) 外插:
这在现有方法(在 logits 空间做引导)之外提供了一种互补的、几乎零成本的引导手段,扫 \(g\) 时三个数据集都稳定受益(HumanML3D 与 KIT-ML 取 \(g=2.0\)、Motion-X 取 \(g=1.0\) 最好)。
一个完整示例¶
以 LG-Tok 在 HumanML3D 上处理一句 "a person walks forward and turns left" 为例。训练时的重建路径是:196 帧动作线性投影成 196 个 256 维向量,与 49 个可学习隐 token、LLaMA 编出的文本嵌入(≤77 个 token)拼成一条序列送进 9 层分词器;只取 49 个隐 token 位置的输出,得到 49×256 的表示——这就是「动作在这句话下」的语义摘要。接着这 49 个向量经 10 个残差量化尺度展开成 236 个离散 token,去量化得到 \(\hat{z}\),与文本嵌入一起送进反分词器:196 个掩码 token 分头查 \(\hat{z}\)、查文本,输出经线性层回归成 196 帧动作,与原始动作算 smooth L1。
推理路径把中间的量化器换成生成模型:MoSa 以文本为条件逐尺度采样出 236 个 token(先出尺度 1 的少数几个 token,再出尺度 2 的更多 token……每步并行出多个),这一阶段不再需要 PAD 掩码。反量化之后,反分词器做两次前向——一次带文本、一次不带文本——得到条件动作 \(m_c\) 与无条件动作 \(m_u\),最后按 \(g=2.0\) 在动作空间外插出最终动作。整个过程里,文本出现了三次:塑造 token、辅助重建、以及引导外插。
损失函数 / 训练策略¶
训练目标只有动作重建:对重建动作与原始动作算 smooth L1 损失,不重建文本,也不加速度损失(作者认为 meng 表示本身已足够紧凑,速度项没有必要)。优化用 AdamW,batch size 128,训练 200 个 epoch,学习率从 \(2\times10^{-4}\) 在第 180 个 epoch 降到 \(2\times10^{-5}\),梯度裁剪系数 0.01;语言丢弃概率 \(p=0.1\)。
结构上,分词器与反分词器各堆 9 层、4 个注意力头、隐维 256、SwiGLU 维度 1024;文本编码器为冻结的 LLaMA-3.2-1B,最大文本长度 77,超长截断。生成模型沿用 MoSa 的默认配置(除不再需要 PAD 掩码外不做改动),生成模型与评估用的检索指标另用 CLIP-ViT-B/32 提文本嵌入以与所有基线保持一致,LLaMA 特征只服务于 LG-Tok 自己的分词器与反分词器。训练使用混合精度与 flash attention,单张 RTX 4090 即可完成。
实验关键数据¶
三个基准:HumanML3D(14,616 段动作 / 44,970 条文本)、KIT-ML(3,911 / 6,278)与更大规模的 Motion-X(按前者的协议过滤掉超过 200 帧的样本后为 37,751 段动作 / 61,637 条文本),划分比例 80% / 5% / 15%。所有数据集统一采用 meng(64–67 维)表示,Motion-X 的全身表示也转成 meng,并有意忽略手指与面部信息以避免与文本描述的模态错配。评价指标包括:FID(生成动作与真实动作的高层特征分布距离,衡量整体动作质量)、R-Precision(文本到动作的 Top-1/2/3 检索精度)与 MultiModal Distance(MM-Dist,文本与生成动作在联合嵌入空间的距离,衡量语义一致性)、Multimodality(同一文本多次采样的多样性)、CLIP-score(动作—文本对的兼容度)。
主实验¶
表 1:HumanML3D 测试集主结果(± 为 95% 置信区间;Real motions 为真实动作参考上界)。
| 方法 | 会议 | #Tokens | R-Prec Top-1↑ | FID↓ | MM-Dist↓ | Multimodality↑ | CLIP↑ |
|---|---|---|---|---|---|---|---|
| Real motions | - | - | 0.501 | 0.000 | 3.251 | 3.179 | 0.639 |
| T2M-GPT | CVPR'23 | 49 | 0.470 | 0.335 | 3.505 | 2.018 | 0.607 |
| MMM | CVPR'24 | 49 | 0.487 | 0.132 | 3.359 | 1.241 | 0.635 |
| MoMask | CVPR'24 | 294 | 0.490 | 0.116 | 3.353 | 1.263 | 0.637 |
| StableMoFusion | ACM MM'24 | - | 0.510 | 0.177 | 3.182 | 1.969 | 0.654 |
| MARDM | CVPR'25 | - | 0.500 | 0.114 | 3.270 | 2.231 | 0.642 |
| MoSa | arXiv'25 | 236 | 0.518 | 0.064 | 3.150 | 1.789 | 0.657 |
| LG-Tok-mini | - | 104 | 0.521 | 0.085 | 3.113 | 1.728 | 0.655 |
| LG-Tok-mid | - | 160 | 0.537 | 0.109 | 3.061 | 1.674 | 0.664 |
| LG-Tok | - | 236 | 0.542 | 0.057 | 2.997 | 1.540 | 0.669 |
表 2:Motion-X 测试集主结果(结果为作者基于 meng 表示的复现)。
| 方法 | 会议 | #Tokens | R-Prec Top-1↑ | FID↓ | MM-Dist↓ | Multimodality↑ | CLIP↑ |
|---|---|---|---|---|---|---|---|
| Real motions | - | - | 0.595 | 0.000 | 3.717 | - | 0.672 |
| T2M-GPT | CVPR'23 | 49 | 0.470 | 1.085 | 5.488 | 12.807 | 0.622 |
| MMM | CVPR'24 | 49 | 0.424 | 2.918 | 6.098 | 2.342 | 0.607 |
| MoMask | CVPR'24 | 294 | 0.502 | 0.247 | 4.832 | 2.715 | 0.644 |
| MARDM | CVPR'25 | - | 0.528 | 0.147 | 4.433 | 3.077 | 0.643 |
| MoSa | arXiv'25 | 236 | 0.513 | 0.210 | 4.783 | 3.167 | 0.654 |
| LG-Tok-mini | - | 104 | 0.588 | 0.071 | 3.835 | 2.235 | 0.681 |
| LG-Tok-mid | - | 160 | 0.591 | 0.076 | 3.758 | 2.245 | 0.682 |
| LG-Tok | - | 236 | 0.582 | 0.088 | 3.844 | 2.294 | 0.682 |
表 3:离散分词器对比——重建(FID / Top-1 / MPJPE)与生成(FID / MM-Dist)两个阶段(HumanML3D 为主,Motion-X 见括号内数值)。
| 方法 | 重建 FID↓ | 重建 Top-1↑ | 重建 MPJPE↓ | 生成 FID↓ | 生成 MM-Dist↓ |
|---|---|---|---|---|---|
| T2M-GPT(HumanML3D) | 0.081 | 0.483 | 72.6 | 0.335 | 3.505 |
| MoMask(HumanML3D) | 0.029 | 0.497 | 31.5 | 0.116 | 3.353 |
| MoSa(HumanML3D) | 0.023 | 0.496 | 43.0 | 0.064 | 3.150 |
| LG-Tok(HumanML3D) | 0.022 | 0.502 | 39.0 | 0.057 | 2.997 |
| w/o text guidance(HumanML3D) | 0.025 | 0.494 | 39.0 | 0.062 | 3.129 |
| MoMask(Motion-X) | 0.394 | 0.554 | 24.9 | 0.247 | 4.832 |
| MoMask (LG-Tok)(Motion-X) | 0.076 | 0.580 | 23.0 | 0.157 | 4.259 |
| MoSa(Motion-X) | 0.072 | 0.558 | 39.0 | 0.210 | 4.783 |
| LG-Tok(Motion-X) | 0.041 | 0.577 | 31.0 | 0.088 | 3.844 |
| w/o text guidance(Motion-X) | 0.090 | 0.568 | 33.0 | 0.257 | 4.274 |
消融实验¶
表 4:语言丢弃方案与引导尺度的作用(重建 / 生成各自的 FID↓ / Top-1↑ / MM-Dist↓;⚠️ 原文该表跨栏排版,重建与生成两组数值的分栏以原文为准)。
| 配置 | 数据集 | 重建 FID | 重建 Top-1 | 重建 MM-Dist | 生成 FID | 生成 Top-1 | 生成 MM-Dist |
|---|---|---|---|---|---|---|---|
| LG-Tok(\(g\)=2.0) | HumanML3D | 0.022 | 0.502 | 3.250 | 0.057 | 0.542 | 2.997 |
| LG-Tok(\(g\)=0.0) | HumanML3D | - | - | - | 0.061 | 0.534 | 3.032 |
| w/o lang-drop | HumanML3D | 0.039 | 0.505 | 3.233 | 0.132 | 0.533 | 3.068 |
| LG-Tok(\(g\)=1.0) | Motion-X | 0.041 | 0.577 | 3.890 | 0.088 | 0.582 | 3.844 |
| LG-Tok(\(g\)=0.0) | Motion-X | - | - | - | 0.139 | 0.576 | 3.969 |
| w/o lang-drop | Motion-X | 0.057 | 0.580 | 3.846 | 0.136 | 0.574 | 3.918 |
表 5:结构、引导位置与交互方式的消融(在缩小版 LG-Tok-tiny 上做,3 层 Transformer、5,000 条训练样本;默认配置为 RMSNorm + SwiGLU + 跳连 + RoPE(base=100) + LLaMA 文本编码器 + 分词器 in-context / 反分词器交叉注意力)。
| 消融维度 | 配置 | 重建 FID↓ | MPJPE↓ |
|---|---|---|---|
| 归一化 | LayerNorm → RMSNorm | 0.050 → 0.049 | 58.7 → 56.1 |
| 激活函数 | GeLU → SwiGLU | 0.050 → 0.049 | 57.4 → 56.1 |
| 跳连 | w/o → with skip | 0.059 → 0.049 | 61.7 → 56.1 |
| 位置编码 | Learnable / RoPE(10) / RoPE(100) / RoPE(1000) / RoPE(10000) | 0.065 / 0.061 / 0.049 / 0.042 / 0.052 | 54.7 / 54.8 / 56.1 / 56.3 / 56.6 |
| 引导位置 | None / 仅分词器 / 仅反分词器 / 两端 | 0.064 / 0.063 / 0.055 / 0.049 | 64.1 / 57.5 / 58.7 / 56.1 |
| 文本编码器 | CLIP / T5 / BERT / LLaMA | 0.051 / 0.053 / 0.055 / 0.049 | 59.1 / 58.9 / 58.9 / 56.1 |
| 交互方式(分词器 / 反分词器) | in-context / 交叉注意力(默认) | 0.049 | 56.1 |
| 交互方式(分词器 / 反分词器) | in-context / in-context | 0.053 | 66.1 |
| 交互方式(分词器 / 反分词器) | 交叉注意力 / 交叉注意力 | 1.120 | 111.2 |
| 交互方式(分词器 / 反分词器) | 交叉注意力 / in-context | 2.049 | 127.7 |
表 6:重建—生成权衡(三个 LG-Tok 变体,rFID / MPJPE 衡量重建,gFID / Top-1 / MM-Dist / CLIP 衡量生成)。
| 数据集 | 变体 | #Tokens | rFID↓ | MPJPE↓ | gFID↓ | Top-1↑ | MM-Dist↓ | CLIP↑ |
|---|---|---|---|---|---|---|---|---|
| HumanML3D | LG-Tok-mini | 104 | 0.094 | 50.2 | 0.085 | 0.521 | 3.113 | 0.655 |
| HumanML3D | LG-Tok-mid | 160 | 0.052 | 40.6 | 0.109 | 0.537 | 3.061 | 0.664 |
| HumanML3D | LG-Tok | 236 | 0.022 | 39.3 | 0.057 | 0.542 | 2.997 | 0.669 |
| Motion-X | LG-Tok-mini | 104 | 0.094 | 36.4 | 0.071 | 0.588 | 3.835 | 0.681 |
| Motion-X | LG-Tok-mid | 160 | 0.051 | 34.2 | 0.076 | 0.591 | 3.758 | 0.682 |
| Motion-X | LG-Tok | 236 | 0.041 | 31.7 | 0.088 | 0.582 | 3.844 | 0.682 |
⚠️ 原文表 3 与表 6 中 LG-Tok 在 HumanML3D 上的 MPJPE 分别记为 39.0 与 39.3,两表口径可能略有差异,以原文为准。
关键发现¶
- 语言引导在重建和生成两侧同时收益。分词器对比(表 3)里,去掉文本引导(只保留 Transformer 分词架构)时 HumanML3D 重建 FID 是 0.025、生成 FID 0.062;加上语言引导后降到 0.022 / 0.057,Motion-X 上的差距更明显(0.090→0.041、0.257→0.088)。
- 引导的位置比引导本身更挑剔。两端都注入(0.049 / 56.1)明显好于只注入一端(0.063 / 57.5 与 0.055 / 58.7),而完全不注入会同时拖累重建质量与重建精度(0.064 / 64.1)——MPJPE 从 56.1 恶化到 64.1,说明文本确实在帮忙定位关节位置,而不只是提升「像不像」。
- 交互方式是最脆弱的开关。分词器一旦从 in-context 换成交叉注意力,重建 FID 从 0.049 崩到 1.120(MPJPE 111.2);反分词器换成 in-context 崩到 2.049(MPJPE 127.7)。编码端要「文本与动作在同一序列里互相看」,解码端要「查询分头去取」,两者不可互换。
- 语言丢弃是一把双刃剑的证据。不做丢弃时重建 Top-1(HumanML3D 0.505 vs 0.502、Motion-X 0.580 vs 0.577)与重建 MM-Dist 反而略好,但重建 FID 明显变差、生成 FID 从 0.057 涨到 0.132(HumanML3D)、0.088 涨到 0.136(Motion-X)。这正是捷径学习的面孔:文本先验混进重建动作抬高了联合嵌入空间的对齐分,而分布度量揭穿了保真度的损失。
- 引导尺度的最优值随数据分布变化:HumanML3D 与 KIT-ML 取 \(g=2.0\)、Motion-X 取 \(g=1.0\);同一数据集内 \(g=2.0\) 相对 \(g=0.0\) 在 HumanML3D 上把生成 FID 从 0.061 降到 0.057、Motion-X 从 0.139 降到 0.088。KIT-ML 上 \(g=2.0\) 对 \(g=0.0\) 为 0.185 / 0.401 / 3.270 对 0.241 / 0.390 / 3.331,提升最明显(KIT-ML 其余对比数字见原文表 4,⚠️ 分栏以原文为准)。
- 泛化性通过了换生成模型的检验:把 LG-Tok 的分词器装到另一套代表性框架 MoMask 上(MoMask (LG-Tok)),HumanML3D 与 Motion-X 的重建与生成指标全面优于原版 MoMask——Motion-X 上重建 FID 0.394→0.076、生成 FID 0.247→0.157、生成 MM-Dist 4.832→4.259。
- token 数与数据规模的交互决定了最优配置。重建—生成权衡(表 6)显示:在较小的 HumanML3D(14k 序列)上,token 数从 104 加到 236 让重建误差近乎四倍下降(rFID 0.094→0.022),收益压倒序列变长的代价,完整 LG-Tok 在所有指标上胜出;在更大的 Motion-X(37k)上重建收益只有约两倍(0.094→0.041),超过 160 个隐 token 后生成反而退化(gFID 0.071→0.088),LG-Tok-mid 成为甜点区。
- 表示质量看上去也更健康:t-SNE 上 LG-Tok 的去量化嵌入呈现边界清晰、结构良好的簇;码本使用频率在所有尺度上都比 MoSa 更均匀,说明动作空间被覆盖得更充分、码本冗余更少(⚠️ 该结论来自论文的定性可视化,无对应数值表)。语义化表示也让生成模型更好学:Motion-X 上困惑度从 146.5 降到 103.1,HumanML3D 上从 160.6 降到 155.9。
亮点与洞察¶
- 把「语言引导」从生成阶段前移到分词阶段,是从源头减少生成模型学习难度的一次漂亮转移:高层语义交给文本承担,token 专心编码细粒度细节,token 序列因此既短又信息密度高。这个思路可以直接搬到音频、轨迹、手势等同样「文本—序列」两阶段的模态上——只要量化前的表示能显式看到条件文本即可。
- language-drop 是全文最省笔墨却最实用的设计:一个 \(p=0.1\) 的随机置空,既治了捷径学习,又白送一个动作空间上的 CFG。把条件丢弃从「训练技巧」升级成「推理时的引导接口」,这个 turn 很值得学——图像/视频 tokenizer 同样可以在解码器上做这种动作/像素空间的引导外插。
- 判别捷径学习的那组证据(重建 Top-1 与 MM-Dist 变好、FID 变坏)本身就是一个很实用的诊断模式:当检索类指标和分布类指标给出相反信号时,优先相信分布类指标,因为检索指标容易被「把条件语义贴回输出」这类先验污染。
- in-context 用于编码、cross-attention 用于解码的不对称结论是反直觉的经验发现(两种方式在推理时并没有本质优劣),对任何「多模态查询 + 重建」的架构选择都有参考价值:编码端要的是相互塑造,解码端要的是分工取数。
局限与展望¶
- 分词器规模仍是小模型路线:9 层、4 头、256 维,且训练只需一张 RTX 4090;论文没有给出分词器规模(层数/隐维/隐 token 数)继续放大时的行为,无法判断收益是否来自架构本身还是容量。
- 依赖冻结的外部文本编码器(LLaMA-3.2-1B)。表 5f 显示换成 CLIP / T5 / BERT 重建 FID 会升到 0.051–0.055,说明方法对文本编码器的语义质量有依赖,而评估侧还另外用 CLIP-ViT-B/32——两套文本嵌入并存,部署时会增加显存与工程成本。
- 语言引导的前提是「有配对文本」。对没有文本标注的动作数据(或推理时用户不给描述),方法退化成纯 Transformer 分词器,此时 Motion-X 上重建 FID 0.090、生成 FID 0.257,比加了文本的版本差不少——也就是说它把一部分重建质量押在了文本可用性上。
- 论文的消融主要在缩小版 LG-Tok-tiny(3 层、5,000 样本)上做,架构结论(如 RoPE base=1000 的重建 FID 0.042 优于 base=100 的 0.049,只是 MPJPE 略差)能否外推到完整模型和全部数据集,原文没有验证。
- 语言丢弃概率只有 \(p=0.1\) 一个取值,没有扫参;\(p\) 过大时 token 是否还能充分利用语言信息、\(p\) 过小时捷径是否卷土重来,都还是开放问题。生成侧的引导也只在反分词端做,若同时让生成模型做 logits 空间引导,两者的叠加效果值得一试。
- 一个可延伸的改进方向:把 language-drop 从「全丢」扩展成「部分丢」或「字段级丢」(例如只丢方向词、速度词),可能得到更细粒度的可控性,也能让动作空间的引导外插更有方向性。
相关工作与启发¶
- vs TxtTok: 两者共享「用语言引导分词以换取更高压缩率」的高层动机,但技术路线不同。TxtTok 是朴素地把文本作为条件,本文认为这会带来表示坍缩式的捷径学习,于是引入 TxtTok 没有的 language-drop,并进一步把它变成推理时的动作空间 CFG;同时本文用全 Transformer 架构,而 TxtTok 路线更偏 1D CNN。
- vs MoSa: MoSa 提供了本文采用的插值多尺度残差量化与尺度自回归生成模型,是量化与生成侧的基座;本文改的是它前面的分词器与两侧的文本注入方式。同样的生成模型下,LG-Tok 把 HumanML3D 生成 FID 从 0.064 降到 0.057、MM-Dist 从 3.150 降到 2.997。反过来也可以在 MoSa 的分词器上用本文的 language-drop,验证该方案是否与具体量化方式解耦——这正是换到 MoMask 上做实验的动机。
- vs MoMask: MoMask 是掩码式非自回归生成的代表,token 数 294(多于 LG-Tok 的 236)。本文把 LG-Tok 的分词器接进 MoMask 后各项指标全面提升(HumanML3D 生成 FID 0.180→0.111、Motion-X 0.247→0.157),说明收益来自分词器而非某一特定生成范式。
- vs MARDM: MARDM 走的是确定性 AE 隐空间上的掩码自回归扩散,不经过离散量化,其 HumanML3D FID 0.114 是本文对比的上一代 SOTA。两者路线相异(连续隐空间 vs 离散 token),本文在离散路线上把 FID 做到 0.057。
- vs M2DM: 同样采用 Transformer 结构的 VQ-VAE,但 M2DM 保持 1:1 的帧—隐变量对齐、在 64 帧短片段上训练,token 语义仍是局部的;LG-Tok 用解耦于帧数的 \(N\) 个查询编码 196 帧,让每个 token 承载句子级语义,这是「Transformer 分词器」这一类工作里更彻底的做法。
评分¶
- 新颖性: ⭐⭐⭐⭐ 语言引导分词、纯 Transformer 分词器、language-drop 三点组合起来是干净的范式前移,但单看每一项(多模态条件、attention 分词、CFG)都能在图像领域找到先例。
- 实验充分度: ⭐⭐⭐⭐ 三个数据集、双生成骨干(MoSa / MoMask)、重建与生成两侧指标齐全,消融覆盖架构/引导位置/编码器/交互方式;不足是核心消融在缩小版模型与 5,000 样本上完成,\(p\) 与分词器规模未扫。
- 写作质量: ⭐⭐⭐⭐ 动机链条(重建—生成取舍 → 语言承担高层语义 → 卷积无法承载全局引导)交代得清楚,图表与结论对应;个别表格跨栏排版导致重建/生成分栏易混,KIT-ML 细节需回原文核对。
- 价值: ⭐⭐⭐⭐⭐ 分词器是两阶段动作生成的上游瓶颈,这里用一半 token 就能持平甚至超过原 SOTA,且方案与生成模型解耦、单卡可训,落地价值高。