
1. 从近300篇工作调研里翻出来的WAM训练门道WAM这个词放在不同圈子里指的东西完全不一样。做机器人控制的会想到World Action Model做音频的会想到Waveform Audio Model做自动驾驶的会想到World-Aware Model。但不管哪个方向只要名字里带“World”或者“Action”本质上都在干同一件事让模型学会在一个有结构的世界里做预测和决策。我前后翻了将近300篇工作调研从预训练到后训练从数据配比到损失函数设计踩过的坑和捡到的宝都攒了不少。这篇就把WAM模型训练策略里最核心的三块——数据、预训练、后训练——拆开揉碎讲清楚。如果你正在训一个带世界模型性质的网络或者你手头有一个中等规模的任务想用预训练微调的范式来解那这篇内容基本可以当操作手册用。我不打算堆公式而是把每一步“为什么这么选”讲透让你看完能直接对着自己的项目改配置。2. WAM模型训练的整体设计思路2.1 为什么WAM的训练策略和普通模型不一样普通监督学习模型的训练逻辑很直白给输入、给标签、算loss、反向传播。但WAM类模型的核心在于它要同时建模“状态”和“动作”之间的关系甚至要预测未来若干步的状态演化。这就导致它的训练目标天然是多任务的既有重建损失又有预测损失还可能有一致性约束。我调研的这批工作里超过七成采用了“预训练打底后训练对齐”的两阶段范式。原因很简单WAM需要大量无标注或弱标注的数据来学习世界的动态规律这部分用自监督预训练最划算而真正决定下游任务表现的是后训练阶段怎么把预训练学到的表征对齐到具体任务上。注意不要一上来就端到端训WAM。我试过在小数据集上直接从头训loss震荡得根本压不住最后收敛到一个毫无泛化能力的解。预训练阶段哪怕只用少量数据做自监督也能给后训练提供一个稳定得多的初始化。2.2 三阶段拆解数据准备、预训练、后训练把整个训练流程拆成三块来看会更清晰数据准备阶段核心是确定数据来源、做质量过滤、设计采样策略。WAM对数据的时间连续性和状态覆盖度要求很高不是随便堆数据就行。预训练阶段用自监督目标让模型学会表征。常见的目标包括掩码重建、对比学习、下一状态预测。后训练阶段用任务相关的监督信号做微调可能还涉及强化学习式的对齐。这三个阶段的配比和顺序直接决定了最终模型的上限。我见过太多人把精力全花在调网络结构上结果数据配比一塌糊涂最后效果还不如一个结构简单但数据干净的baseline。2.3 方案选型背后的取舍逻辑为什么是“预训练后训练”而不是“联合训练”因为联合训练对数据的要求太苛刻了——你需要同时有大量无标注数据和高质量标注数据而且两者的分布要足够接近。现实中很难满足。分阶段训练的好处是每个阶段可以独立调优预训练阶段可以用海量弱数据后训练阶段再聚焦到小规模高质量数据上。另一个关键取舍是预训练用多大的模型我的经验是预训练阶段的模型容量可以比后训练阶段大20%到50%。因为预训练学的是通用表征容量大一点能装下更多模式后训练阶段反而要适当压缩避免过拟合到小规模任务数据上。3. 数据策略WAM训练的命根子3.1 数据来源与采集的实操要点WAM的训练数据通常来自三类源仿真环境生成的数据、真实传感器采集的数据、以及公开数据集。这三类的配比很讲究。我调研的工作里效果最好的几个方案基本遵循“仿真为主、真实为辅、公开数据做补充”的原则。仿真数据的优势是标注精确、覆盖度高但存在sim-to-real gap。真实数据能弥补这个gap但标注成本高、噪声大。公开数据集则用来增加多样性。具体配比上我见过一个比较稳的方案是仿真数据占60%真实数据占30%公开数据占10%。当然这不是铁律要根据你的任务和传感器类型调整。采集环节有几个容易忽略的点时间同步多传感器数据必须做硬同步不能靠软件时间戳对齐。我踩过这个坑不同步的数据训出来的模型在预测未来状态时会有系统性偏差。采样频率不要盲目追求高频。WAM关心的是状态演化的规律过高的采样频率只会引入冗余噪声。一般任务下10Hz到30Hz足够了。异常值处理传感器跳变、丢帧、重复帧必须在采集阶段就标记出来不要留到训练时再处理。3.2 数据清洗与质量过滤的硬标准数据清洗这块我总结了一个“三层过滤”的流程第一层是物理合理性过滤。比如关节角度超出机械限位、速度超过物理极限、传感器读数在量程外这些直接丢掉。第二层是统计过滤。计算每个维度的均值和方差把超过3倍标准差的样本标记为异常。第三层是时序一致性过滤。检查相邻帧之间的变化率突变超过阈值的片段要么修正要么丢弃。提示清洗日志一定要保留。我习惯把每一步过滤掉的样本数和原因记录下来后面如果模型表现异常可以回溯是不是清洗过度或不足。质量过滤还有一个容易被忽视的维度状态覆盖度。WAM需要看到足够多样的状态组合才能学到鲁棒的表征。如果数据集中某些状态区域几乎没有样本模型在这些区域的表现会急剧下降。我的做法是对状态空间做网格划分统计每个网格的样本数对稀疏区域做针对性补充采集或数据增强。3.3 数据配比与采样策略的调参经验数据配比不是拍脑袋定的。我通常分两步走先做小规模消融实验固定其他条件只改变某一类数据的比例看验证集指标的变化趋势然后再做精细调参。采样策略上有几个实用技巧优先采样高损失样本在预训练后期对loss较高的样本提高采样权重能让模型聚焦在还没学好的区域。课程学习先采样简单样本状态变化平缓的片段再逐步加入复杂样本。这个策略在WAM上效果很明显收敛速度能快30%左右。避免类别不平衡如果某些动作或状态出现频率远高于其他要么做重采样要么在loss里加权重。下面这张表是我在多个项目中总结的数据配比参考数据类别推荐占比主要作用风险仿真数据50%-70%提供精确标注和广泛覆盖sim-to-real gap真实数据20%-40%弥补分布差异噪声大、标注贵公开数据5%-15%增加多样性分布可能不匹配增强数据0%-10%补充稀疏区域可能引入伪影4. 预训练阶段让模型学会世界的规律4.1 自监督目标的设计与选择WAM预训练的核心是设计一个好的自监督目标。我调研的工作里最常用的三类目标是掩码重建随机遮挡输入的一部分让模型预测被遮挡的内容。这个目标简单有效但有个问题——如果遮挡比例太高任务太难模型学不到有用表征太低又太简单。我的经验是遮挡比例在15%到30%之间比较合适具体看数据维度。下一状态预测给定当前状态和动作预测下一时刻的状态。这个目标和WAM的本质最契合但需要数据里有动作标签。如果动作标签缺失可以用逆动力学模型先估计动作再拿估计的动作做预测。对比学习拉近正样本对的距离推远负样本对。正样本对可以是同一序列的不同增强视图负样本对是不同序列的片段。对比学习的好处是不需要精确的标注但对数据增强的设计很敏感。实际训练中我通常把这三个目标加权组合。权重怎么定先各设1.0跑一轮看哪个loss下降最快适当降低它的权重让模型在难学的目标上多花力气。4.2 预训练数据量的边际效应预训练数据是不是越多越好不完全是。我做过一组对比实验数据量从10万帧增加到100万帧验证集指标确实在涨但涨幅在50万帧之后明显放缓。到200万帧时指标基本饱和再增加数据只会拉长训练时间。边际效应出现的拐点和模型容量、任务复杂度都有关系。模型越大拐点越靠后。我的建议是先用小数据量快速迭代确定模型结构和超参大致合理后再逐步增加数据量观察指标变化找到性价比最高的数据规模。注意预训练阶段的数据量不是唯一变量。数据质量、多样性、覆盖度同样重要。我见过用50万帧高质量数据训出来的模型效果超过用200万帧低质量数据训的。4.3 预训练中的稳定性技巧WAM预训练最容易出的问题是loss震荡和梯度爆炸。我常用的几个稳定技巧梯度裁剪把梯度范数限制在1.0到5.0之间。WAM的时序依赖长梯度容易累积裁剪是必须的。学习率预热前5%到10%的步数用线性预热从很小的学习率逐步升到目标值。这能避免训练初期的不稳定。EMA权重维护一份指数移动平均的模型权重评估和推理时用EMA权重而不是原始权重。这个技巧在WAM上效果很好能平滑掉训练后期的波动。损失缩放如果用了混合精度训练损失缩放是必须的。我一般从2的16次方开始根据是否出现inf动态调整。还有一个容易被忽视的点预训练阶段的batch size不要太小。WAM的时序依赖需要足够的样本才能估计出稳定的梯度。我的经验是batch size至少256能到1024更好。如果显存不够用梯度累积来等效大batch。5. 后训练阶段把通用表征对齐到具体任务5.1 后训练的数据准备与任务定义后训练阶段的数据和预训练阶段有本质区别预训练可以用无标注数据后训练必须有任务相关的监督信号。这个监督信号可以是动作标签、奖励信号、或者人类偏好标注。任务定义要尽可能明确。我见过一些项目后训练阶段的任务定义模糊模型不知道到底要优化什么最后学出一个四不像。好的任务定义应该包含输入是什么、输出是什么、评价指标是什么、约束条件是什么。后训练数据的规模通常比预训练小一到两个数量级。这时候数据质量比数量重要得多。我一般会花大量时间在后训练数据的清洗和标注校验上确保每一条数据都是高质量的。5.2 微调策略全量微调还是部分微调后训练阶段全量微调还是只调部分层这取决于你的任务数据和预训练数据的分布差异。如果任务数据和预训练数据分布接近只调最后几层就够了甚至只调一个任务头。这样能保留预训练学到的通用表征避免灾难性遗忘。如果分布差异大就需要全量微调甚至解冻所有层用较小的学习率重新训练。我的经验法则是先试只调任务头如果验证集指标不达标再逐步解冻更多层。每次解冻后学习率降一个数量级。这样能找到一个性价比最高的微调深度。提示后训练阶段的学习率通常比预训练阶段低一个数量级。预训练用1e-4后训练就从1e-5开始试。太高会破坏预训练学到的表征。5.3 后训练中的正则化与防过拟合后训练数据少过拟合是最大的风险。我常用的正则化手段早停监控验证集loss连续N个epoch不下降就停。N一般取5到10。权重衰减L2正则的系数比预训练阶段大一些1e-4到1e-3之间。Dropout在后训练阶段适当提高dropout率比如从0.1提到0.2或0.3。数据增强对后训练数据做适度增强比如加噪声、时间抖动、随机裁剪。但要注意增强不能改变任务的语义。还有一个技巧是冻结预训练模型的部分层只训练后面的层。这样可训练参数少了过拟合风险自然降低。具体冻结多少层可以看验证集表现来调。6. 常见问题与排查技巧实录6.1 训练不收敛或loss震荡这是最常见的问题。排查顺序我一般是检查数据有没有问题。把batch里的样本可视化出来看有没有异常值、标签错位、时间戳乱序。检查学习率是不是太大。把学习率降10倍再跑几百步看loss是否稳定下降。检查梯度。打印梯度范数如果经常超过阈值说明需要更强的梯度裁剪或更小的学习率。检查损失函数。多任务loss的权重是不是合理有没有某个loss主导了总loss。下面这张表是我整理的常见问题速查现象可能原因排查方法解决方向loss不下降学习率太小、数据有问题检查数据质量、调大学习率清洗数据、调参loss震荡学习率太大、batch太小打印梯度范数降学习率、增大batch验证集loss上升过拟合对比训练和验证曲线加正则、早停预测偏差大数据分布不匹配检查训练和测试分布补充数据、域适应推理速度慢模型太大、未优化profile各层耗时剪枝、量化6.2 预训练学到的表征在下游任务上表现差这个问题通常有两个原因一是预训练目标和下游任务不匹配二是预训练数据覆盖度不够。如果是目标不匹配可以调整预训练loss的权重让和下游任务更相关的目标占更大比重。如果是覆盖度不够需要补充采集下游任务涉及的状态区域的数据。还有一个可能的原因是预训练模型太大后训练数据太少导致微调不充分。这时候可以试试用更小的预训练模型或者在后训练阶段用更强的正则化。6.3 后训练阶段灾难性遗忘灾难性遗忘是指后训练之后模型在预训练任务上的表现大幅下降。这在WAM上很常见因为后训练数据分布往往和预训练数据差异较大。缓解方法有几个一是用更小的学习率做后训练二是冻结预训练模型的大部分层三是在后训练loss里加一个预训练任务的辅助loss让模型不要忘记预训练学到的东西四是做模型集成把预训练模型和后训练模型的输出做加权平均。我个人的经验是冻结底层小学习率辅助loss这三招组合起来基本能解决大部分灾难性遗忘问题。7. 一些实操中的个人体会WAM的训练策略没有银弹。我调研的这近300篇工作里效果好的方案各有各的巧思但共同点是数据质量过硬、预训练目标设计合理、后训练阶段没有过度拟合。反过来效果差的方案往往在某个环节偷了懒——要么数据没洗干净要么预训练目标选错了要么后训练学习率没调好。如果让我给一个最实用的建议那就是把70%的精力花在数据上。我见过太多人花几周时间调网络结构最后发现换个数据清洗流程就能涨好几个点。WAM这类模型对数据的敏感度远高于对结构的敏感度。另外预训练阶段不要追求一步到位。先用小数据、小模型快速跑通流程确认每个环节都没问题再逐步放大。我自己的习惯是先用1%的数据跑一个完整的预训练后训练流程看看端到端能不能work然后再逐步加数据、加模型容量。这样能最快定位问题避免在错误的方向上浪费算力。最后分享一个小技巧在后训练阶段把预训练模型的输出作为特征训练一个简单的线性分类器或回归器先看看预训练表征的线性可分性。如果线性探针的效果就不错说明预训练质量高后训练只需要轻量微调如果线性探针效果很差说明预训练表征可能没学到有用的东西需要回头检查预训练阶段。这个技巧帮我省了很多盲目调参的时间。