1. 先给结论:这个问题得拆成两半来回答
OpenClaw 这类多模态 Agent 项目,模型结构里通常既有“对比学习”也有“生成式”组件,但“预训练阶段用了生成式对抗”这个说法基本不成立。更准确的说法是:预训练主线里大概率用了多模态对比学习(特别是特征对齐那一环),而生成式对抗网络(GAN)那种对抗训练方式,几乎不会作为预训练的主 loss 出现在这个领域。
很多人看到 OpenClaw 相关的演示和项目介绍,容易被“生成能力很强”这个印象带偏,以为它像某些图像生成模型一样,靠生成器和判别器互相博弈来训练。实际上 OpenClaw 的定位是“能看懂多模态输入、自己决定下一步动作”的 Agent,不是纯粹的生成内容工具。它的预训练目标、数据组织方式、梯度来源,都和 GAN 那套体系不匹配。
这篇文章想跟你聊清楚三件事:OpenClaw 这类多模态 Agent 的预训练到底在优化什么目标;对比学习在里面是怎么用的、解决什么问题;GAN 为什么会在讨论里被提及、又为什么进不了预训练主线。最后给出一个我基于常见实践整理的、可参考的分阶段预训练方案,再附上一些项目实战里容易被误导的判断线索。适合正在做多模态 Agent、大模型 Agent、或者对“预训练技术选型”有兴趣的开发者参考,哪怕你只听过对比学习和 GAN 这两个词,也能跟上。
2. 先看懂 OpenClaw 的预训练目标,再聊技术选型
2.1 OpenClaw 不是传统意义上的“生成模型”
OpenClaw 如果按常见的设计来理解,是一个以“操作系统级自动化”为目标的多模态 Agent。它会接收屏幕截图、用户指令、界面结构等多模态信息,然后输出一系列具体的操作动作,比如点击、输入、拖拽、切换应用。这类系统的核心能力是“理解当前环境状态并做出正确决策”,而不是把一段文字变成一张图、一段音频、或者一篇文本。
这个定位决定了预训练阶段最重要的技术底座是“表征学习”和“行为学习”,而不是“分布拟合”。生成模型关心的是怎么从潜空间里采样出逼真的样本,而 Agent 关心的是怎么把高维观测映射到正确的动作空间。虽然 Agent 内部也会用到生成式组件(比如生成计划文本、先生成一步再执行),但那和“用对抗 loss 做预训练”是两码事。
2.2 拆开看:预训练在优化什么
一个多模态 Agent 的预训练阶段,核心要解决的通常是三个目标:
第一,跨模态特征对齐。模型要理解“屏幕上的这张图”和“用户说的那句话”是同一个意思。这个目标最适合用对比学习来优化:把匹配的图像和文本拉近,把不匹配的推远。
第二,行为克隆。模型要从海量人类演示数据中学会“看到这种状态,应该做那个操作”。这个目标用标准的监督学习就能做,最常见的就是交叉熵损失,让模型输出的动作概率分布去拟合演示数据中的真实动作。
第三,安全与偏好对齐。模型不能只学“平均操作”,还要学习“优质操作”。这个目标一般用强化学习或偏好优化来完成,比如基于人类反馈的强化学习(RLHF)或者基于 AI 反馈的偏好优化(RLAIF)。
对比学习可以贯穿阶段一和阶段二(比如让表征更容易学行为),但它不是“和 GAN 并列”的选型,而是预训练 pipeline 中的骨干。
GAN 在这三件事里能做的事情非常窄:它最擅长的是合成逼真的数据,比如生成高仿真屏幕截图用于扩充训练集,或者生成负样本用于辅助对比学习。但这些都是“数据增强”层面的辅助手段,不是模型主 loss,更不是预训练的“一等公民”。
3. 多模态对比学习:OpenClaw 预训练里的实打实主力
3.1 对比学习在解决什么:让不同模态说同一种语言
对比学习的核心思想,用一个生活化的类比来说:你在一群陌生人里找朋友,不看名片,只看特征。如果我对你说“帮我在人群里找到那位穿红色外套、背着双肩包的人”,你脑子里会形成一个关于“这个人长什么样”的预期描述,然后你扫视现场,看到接近这个描述的人就会确认“是他”,看到不像的人就直接排除。
多模态对比学习干的是同一件事:它让模型学会“这句话”和“这张图”之间的匹配关系。给定一个图像-文本对,模型要能在大量候选里选中那个正确的对应关系。在这个过程里,模型被迫学到一个共享的语义空间——图像的特征和文本的特征被投影到同一个高维空间里,语义相近的在空间里距离近,语义无关的距离远。
OpenClaw 的预训练里,这一步是基石。因为后续的决策网络必须能同时理解“用户说打开备忘录”和“屏幕上的备忘录图标”是一回事。如果连这个对齐都做不好,后面学多少操作都没意义。
3.2 双塔结构:OpenClaw 最典型的选择
OpenClaw 里最常采用的对比学习实现方式,是基于双塔结构的 InfoNCE 损失,也就是 CLIP 那一套思路。视觉塔接收截图,文本塔接收指令,两个塔各自输出一个特征向量,然后通过对比损失把它们拉近。
这里的细节值得展开。双塔结构里面,两个塔的编码器通常是异构的:视觉塔用视觉 Transformer(ViT),文本塔用文本 Transformer。两个塔不共享参数,各自的 Embedding 维度必须一致,一般投影到 512 或 768 维的公共空间。在预训练时,每个 batch 里有 N 个图像-文本对,模型会尝试把第 i 个图像和它的对应文本匹配上,同时把 batch 内的其他 N-1 个文本作为负样本推开。
我在实际项目中看过一些实现,发现很多人会忽略温度系数 τ 的重要性。InfoNCE 里那个温度系数直接控制负样本的惩罚强度:τ 越小,模型对难负样本越敏感,训练越激进,但也更容易因为某些噪声样本导致梯度爆炸;τ 越大,训练越平滑,但表征的判别力会下降。经验值大概落在 0.05 到 0.2 的范围,OpenClaw 这类 Agent 场景往往需要比纯图文匹配更小的温度,因为截图和指令之间的语义差异比自然图文对更微妙。
3.3 数据组织:OpenClaw 场景下的合理改法
标准的图文对比学习拿的是“成对图片和文本”做训练。但 OpenClaw 的输入是“操作系统界面截图 + 用户自然语言指令”,数据形态上有一个需要适配的点:同一张截图可能对应多个合法指令,同一个指令也可能对应多种屏幕状态。
比如“打开浏览器”这个指令,可能出现在 Windows 桌面的一张截图里,也可能出现在 macOS 桌面的另一张截图里,两个界面完全不同,但语义都是打开浏览器。如果硬把这两组样本当作负样本对,会让模型学到错误的对齐信号。
所以实践上,OpenClaw 的对比预训练数据不会直接照搬图文对数据集的构造方式,而是按“语义行为标签”来组织正样本。具体做法是:给定一个任务指令,凡是这个指令下可以执行的屏幕状态都算正样本,凡是执行后不会导向该目标的状态都算负样本。这样模型学到的不只是“像素相似”,而是“状态与意图匹配”。这个细微差别,决定了后续 Agent 策略能不能在新界面里泛化。
还有一个实操经验:对比学习阶段往往使用较大的 batch size,因为 InfoNCE 的负样本来自 batch 内部的随机配对,batch 越大,负样本越丰富。但多模态 Agent 的数据里,屏幕截图数据非常占显存,一个 512 的 batch 可能就有很大的显存压力。一种折中方案是采用梯度累积来模拟大 batch,或者用 MoCo 那类队列结构,把历史 batch 的特征存下来做负样本库。后一种方式在实践中更稳。
4. 生成式对抗:为什么总被提起,却又进不了预训练主线
4.1 GAN 能做什么:合成高仿真训练数据
生成式对抗网络的思路是:一个生成器在造假,一个判别器在打假,两个网络互相博弈,最后生成器学会了生成以假乱真的样本。对应到 OpenClaw 的语境里,确实有些技术团队会用 GAN 来合成仿真屏幕界面,用于补充训练数据,或者生成一些边缘 case 的截图,让 Agent 见过更多样化的界面状态。
这类做法在 OpenClaw 的开发流程中确实存在。比如某个内部实验里,为了模拟各种分辨率、各种主题下的浏览器界面,团队可以训练一个条件 GAN,输入文字描述或者布局参数,输出一张高仿真的界面截图。这些截图可以拿去扩充对比学习阶段的正样本库,或者作为行为克隆阶段的附加数据。
但这不改变一个事实:GAN 只是“数据生产工具”,不是“模型训练框架”。预训练模型的参数更新,从来不是由 GAN 的判别器 loss 来驱动的。判别器在训练结束后被抛弃,预训练模型本身始终只用对比学习或监督学习在训练。
4.2 核心矛盾:对抗损失对抗的是“分布”,Agent 要的是“决策”
为什么 GAN 不该被放到 OpenClaw 预训练的主线里?因为 GAN 的对抗机制优化的目标是让生成样本的分布逼近真实样本的分布。生成器学习的是“什么样的界面看起来正常”,而不是“当前这个界面下该做什么”。
把话挑明一点:OpenClaw 的动作空间是离散的,而且带有强顺序依赖。模型要在几千个可能的动作里选一个,还要保证多步操作之间的连贯性。判别器只能给出一句“真/假”或者一个标量分数,它无法给出“你应该点击坐标 (x,y)”这种结构化、可分解的梯度信号。强行用对抗 loss 驱动策略学习,最直接的后果就是训练不稳定:判别器太强,策略很快被逼到模式崩塌,反复输出几个固定动作;判别器太弱,又给不出有效信号,训练直接停滞。
更麻烦的是,对抗训练会和后续的强化学习阶段产生冲突。OpenClaw 这类 Agent 走到后期,通常会用偏好优化或者强化学习来对齐人类反馈,这本质上是在最大化一个奖励信号。如果在预训练阶段就引入对抗目标,模型会被迫同时优化两个方向不一致的目标,实验结果往往是“两边都不讨好”。
4.3 一个容易混淆的点:有生成式组件不等于用了对抗训练
很多人在读 OpenClaw 论文或源码时会发现模型里有一个“生成头”,或者一个用来输出下一步操作的生成式解码器,于是得出结论“它用了生成式模型”。这没错,但要注意,生成式模型模块和“生成式对抗训练”完全是两个概念。
一个模型可以包含生成器结构,但它如果是用最大似然或交叉熵来训练的,那就和 GAN 一点关系都没有。OpenClaw 里常见的做法是:用预训练好的多模态大模型作为底座,在它的解码器后面接一个动作头。这个动作头是标准的分类头或序列解码器,训练时用行为克隆的交叉熵 loss。整个过程里不存在生成器和判别器的博弈。
5. 一套可落地的 OpenClaw 预训练方案参考
5.1 分阶段训练:每阶段的 loss 都很明确
综合对比学习、行为克隆、对齐微调这三种主流技术,一套比较标准的 OpenClaw 预训练方案可以分成三个阶段。这个方案不代表某一家的具体实现,但它符合常见实践的逻辑。
阶段 A 是多模态对比预训练。用海量“界面截图 + 自然语言指令”对,通过双塔结构做特征对齐。loss 用 InfoNCE,视觉编码器和文本编码器各学各的,但在公共空间里对齐。这个阶段的目的不是学会操作,而是让模型能理解“界面长什么样、指令在说什么”。
阶段 B 是行为克隆。把预训练好的视觉塔和文本塔接起来,输入是截图 + 指令的拼接特征,输出是动作序列。训练目标就是预测人类演示中的真实动作,loss 用交叉熵。这个阶段让模型学会了“看到什么状态,应该做什么”。它在多模态指令跟随任务上的表现,直接取决于阶段 A 的表征质量。
阶段 C 是对齐微调。收集人类对不同 Agent 轨迹的偏好比较,训练一个奖励模型,然后用强化学习或直接偏好优化来微调策略。这个阶段让模型的动作更符合人类偏好,比如更少误操作、更安全。
三个阶段的区别可以用一张表格直观对比,方便理解它们各自的侧重点和指标:
| 阶段 | 优化目标 | 数据形式 | 损失函数 | 算力需求 |
|---|---|---|---|---|
| 对比预训练 | 跨模态特征对齐 | 界面截图-指令对 | InfoNCE | 高 |
| 行为克隆 | 决策动作模仿 | 截图-指令-动作演示 | 交叉熵 | 中 |
| 偏好对齐 | 人类偏好匹配 | 轨迹偏好对比 | RLHF / 偏好优化 | 高 |
5.2 参数参考与避坑经验
这个阶段我直接给出一组基于常见实践的参考参数范围。对比预训练阶段,图像塔输入分辨率至少要有 224×224,考虑到操作界面里小图标很多,OpenClaw 场景下 336×336 更保险。文本塔用标准 Tokenizer,最大序列长度 128 就够,指令一般不会太长。公共投影维度设 512,温度系数从 0.07 开始调。batch size 通过梯度累积模拟到 1024 到 4096 的效果,训练步数 20 万步到 50 万步,学习率用 3e-4 配合线性预热。
行为克隆阶段,需要把对比预训练的两个塔冻结或者低学习率微调,重点训练动作头。动作头的设计建议用“离散动作分类头”输出一个大的动作词表,或者用自回归解码器逐步输出参数化的动作序列。学习率降到 1e-4 左右,防止把预训练特征破坏掉。
避坑方面有三个我实测下来最重要的经验。第一,不要用原始分辨率直接训练,界面截图要先做规范化预处理,包括自动缩放、统一长宽比,否则对比学习的对齐信号会被分辨率差异污染。第二,行为克隆阶段的数据要有意识地去重,同一个任务只保留成功轨迹,否则模型会学到“平均操作”,生成一些既不够果断也不够准确的动作。第三,偏好对齐阶段要小心奖励黑客问题,奖励模型不能只看任务完成率,还要同时评估“操作路径安全合规”“无多余点击”等维度。
6. 常见误判与排查思路
6.1 怎么判断一个 OpenClaw 项目到底用了哪些预训练技术
这个问题不需要靠猜,直接看两个地方:训练 loss 的定义和样本对的构造方式。如果代码里出现 InfoNCE、对比损失、双塔结构,并且数据管道里存在“构造正样本对和负样本对”的逻辑,那就是用了多模态对比学习。如果代码里出现生成器和判别器两个网络交替更新,并且判别器的梯度会传给生成器,那才是真正用了 GAN。注意,像 LLaVA 那种把图像 token 映射到语言模型的投影层,不属于 GAN。
也可以从数据产物判断。对比预训练跑完后,模型会有清晰的跨模态检索能力:给定文本指令,能在大量截图中找出匹配的那一个。行为克隆跑完后,模型能直接输出操作动作。而一个 GAN 训练完成后,它的产物是“能合成逼真截图”的生成器,而不是具备决策能力的 Agent。
6.2 关于“生成式对抗”出现在 OpenClaw 话题里的四类常见误读
第一类误读是把“Agent 会自动生成下一步计划”当作对抗生成。实际上那只是解码器基于上下文做自回归生成,用的是标准 LM loss,不是对抗 loss。
第二类误读是把“预训练用了合成仿真数据”说成“用了 GAN”。很多仿真引擎用规则或者扩散模型生成界面样本,和对抗训练无关。
第三类误读是把“项目里某个辅助模块用了 GAN”扩大为“整个预训练框架用了 GAN”。辅助模块(比如超分模型、数据增强器)不会影响主模型的训练方式。
第四类误读是混淆了“效果上像对抗”和“训练中真用了对抗”。有时候人们觉得 Agent 输出的操作轨迹很逼真,于是猜测背后有个判别器在把关。实际上 Agent 操作真实的原因,只是行为克隆数据质量高,或者偏好优化阶段的奖励模型比较准,跟 GAN 没有直接关系。
如果你在调研某个 OpenClaw 项目,想搞清楚预训练技术细节,我个人的习惯是:先翻训练配置里的 loss 权重表,再看数据管道的采样逻辑,最后才看模型结构图。因为结构图里生成器和判别器不一定同时出现,但 loss 和采样逻辑会直接暴露技术选型。这个顺序能帮你避开百分之八九十的误导信息。
7. 一点个人体会
OpenClaw 这类多模态 Agent 的预训练,本质上拼的不是哪个 loss 更炫酷,而是“目标函数跟决策任务匹配度”的选择。对比学习强在表征对齐,行为克隆强在让模型有基本能力,偏好对齐强在让模型符合人的预期。GAN 在这个体系里是个过客,可以在造数据时帮上忙,却顶不了预训练的大梁。下次再看到类似讨论,我建议你直接问一句:训练时的主 loss 是哪个?梯度从哪来的?两个问题一问,很多概念混淆自己就散了。