面向人形机器人的多任务学习
一个人形机器人模型,多种技能。任务干扰如何决定多任务学习的成败,以及合理的数据配比如何避免让长尾技能挨饿。
先训练一个人形机器人叠毛巾。这行得通。现在让同一个网络去装洗碗机,你会看到叠毛巾的水平悄悄变差了。叠毛巾的数据一点没变,变的是模型本身,因为它现在要同时侍奉两个主人。
这就是任务干扰(task interference),也是多任务学习需要缴纳的核心税负。一个覆盖多种技能的单一策略,正是每一个人形机器人团队真正想要交付的东西:一个模型,多份工作,只需维护和更新一处。但技能一旦共享权重,它们就开始争夺这些权重。而这场争夺的胜负,与其说由架构决定,不如说由你喂给它的数据决定。
一个让人安心的说法是:技能之间会互相帮助。触及、抓取和放置共享了大量结构,学会其中一个理应能带动其余。有时确实如此。但同样常见的情况是,梯度彼此矛盾,模型只能折中,最终变成一个样样平庸的策略。
正迁移、负迁移,以及两者之间的边界
多任务学习押的是一个赌注:对一个任务有用的表征,对许多任务也有用。当赌注赢了,我们称之为正迁移。一个在二十个操作任务上训练过的模型,往往只需少量示范就能学会第二十一个任务,因为共享主干已经编码了接触、几何和物体恒常性。
当赌注输了,我们得到的就是负迁移。两个任务要求同一组参数表现出互不相容的行为,改进其一就会损害其二。倒水需要一个缓慢、柔顺的手腕,拧螺栓则需要一个刚硬、精确的手腕。把两者都硬塞进同一个共享层,谁都得不到自己需要的东西。
起决定作用的机制通常是梯度冲突。训练时,每个任务都把共享权重往某个方向推。当两个任务朝着大致相反的方向拉扯,更新就相互抵消,两个任务都停滞不前。构建通用策略的团队,例如 Physical Intelligence blog 所介绍的工作,以及围绕 NVIDIA Isaac GR00T 的研究,都要花大量精力,把这种冲突在数十种技能和多种机器人本体之间控制在可管理的范围内。
数据配比才是真正的控制旋钮
你可以从模型一侧攻击干扰问题:更大的网络、任务专属的输出头,或者路由机制。这些都有用。但最廉价也最有力的杠杆是数据配比,也就是模型每个批次看到多少比例的每类任务。
采样从来都不是中性的。如果你语料库的 80% 是拾取放置,只有 2% 是插入装配,那么无论架构多么优雅,模型都会拾取娴熟而插入笨拙。这个配比编码了你的优先级,无论你是刻意设定,还是任由原始数据量替你决定。
| 策略 | 任务采样方式 | 好处 | 代价 |
|---|---|---|---|
| 按比例采样 | 与原始数据量成正比 | 常见任务保持强势 | 稀有技能缺乏信号而挨饿 |
| 均匀采样 | 每个任务份额相等 | 稀有技能终于获得曝光 | 把算力浪费在琐碎任务上 |
| 温度缩放 | 数据量取 0 到 1 之间的幂次 | 可调的折中地带 | 多出一个需要搜索的超参数 |
| 按损失加权 | 依据难度或梯度范数重新加权 | 精准针对落后的任务 | 需要逐任务的指标与记账 |
温度缩放是这里的主力做法。把每个任务的样本量取一个 0 到 1 之间的幂次,再按结果成比例采样。幂次为 1 就是纯粹的按比例采样,幂次接近 0 则趋近于均匀采样。真正好用的取值落在两者之间,而最优取值是经验性的,不是解析求得的。你靠测量逐任务的成功率来找它,而不是靠在白板上推理。
任务干扰首先是一个数据构成问题,其次才是一个建模问题。当语料库九成都是同一种技能时,你没法靠架构绕过它。
算力能买来和平,但并不免费
规模会改变这笔账。小网络逼着每个任务共享每一个参数,冲突因此无可避免。大网络则可以把不同的子空间分给不同的技能,干扰随之缓和。这也是一个不常被点破的原因:即便单个任务根本用不着,这个领域仍在不断扩大模型规模。
专家混合(mixture-of-experts)和任务条件路由把这个思路推得更远:把每个输入送往适合它的那部分参数,不相关的技能就不再在同一组权重里相撞。代价还是数据。稀疏、专用的算力很能吃数据,只有当每个专家看到足够多的样本、真正擅长自己那一块时,它才划算。
Toyota Research Institute 关于 大行为模型的工作把这一点讲得很具体。一个吸收数百种技能的单一网络,需要这些技能被稠密而干净地表示出来,否则长尾就会溶解成噪声,被模型学会忽略。
跨本体是同一问题的另一个维度
人形机器人很少只从一台机器人身上学习。像 Open X-Embodiment 这样的语料库会把跨越多种本体的示范混合起来,而每一种本体实际上都是又一个需要平衡的任务。来自平行夹爪的片段和来自五指手的片段,描述的是不同的动作空间。混得草率,它们互相干扰;混得得当,它们彼此迁移,一种技能在一个本体上学会后能带到另一个本体。
好的配比对数据提出了什么要求
这里有一个建模文献往往轻描淡写的关键点。上表中的每一种策略都假设你能识别出一次示范属于哪个任务、它有多难、它来自哪里。这些元数据并非凭空而来。它要么在采集时就被记录,要么日后以高昂的代价重建。
要给语料库重新配比,你需要干净的任务标签、逐次示范的难度信号,以及足够的溯源信息,以便按本体、环境和操作者切分数据。Google DeepMind 的机器人工作,如 Google DeepMind blog 所述,正是依靠这类结构化、标注良好的数据,训练出能横跨多种行为、又不让任何一种压倒其余的模型。
一个模型服务多种技能,是正确的目标。它同时也是一场持续的谈判,每个任务都想把整个网络据为己有。架构是这场谈判的裁判,数据配比才决定谁赢。那些把配比当作一等公民、加以追踪、标注和调整的团队,能得到在长尾上真正过硬的通用模型。那些把一切倒进同一个桶里、然后祈祷的团队,只会继续交付这样的模型:每学会一样新东西,叠毛巾就变差一点。