面向已部署机器人的持续学习
持续学习让一支已部署的机器人机队在不发生灾难性遗忘的情况下持续进步。让每一次更新都安全的,是背后那条数据管线。
一个仓库里有四十台人形机器人在做同一项拣选任务。周二,一款新产品到货,裹着一层光滑的薄膜,骗过了旧的抓取策略。你采集了新的示范,连夜微调策略,推送了更新。周三,机器人把新产品处理得漂亮极了,却把它们已经处理了好几个月的旧产品弄掉了。你刚刚遭遇了灾难性遗忘。
部署中的机器人,没有资格把自己的技能冻结起来。世界一直在变:新物件、新工位、磨损的夹爪、季节性的库存。一支无法持续学习的机队会变得陈旧,一支学习起来漫不经心的机队则会遗忘。持续学习(continual learning)就是做到前者而不落入后者的功夫,而它的成败,取决于背后的那条数据管线。
为什么更新一个策略是危险的
神经策略把技能存储在共享的权重里。在一个新任务上狠狠训练,梯度下降就会乐呵呵地覆盖掉那些曾编码旧任务的参数。模型天生没有一种意识,去判断旧技能是否仍然重要。这不是某一种架构的怪癖,而是这类网络学习方式的一个普遍性质,并且随着单个模型承载越来越多的技能,它会变得更糟。
那个朴素的修复方法,每次都在全部数据上从头重训,确实有效,但既慢又贵,而且它假定你仍然以可用的形式保留着全部旧数据。有意思的工程都在中间地带:如何把新经验折入一个已部署的策略,同时又能证明旧的行为幸存了下来。
| 策略 | 遗忘风险 | 数据需求 |
|---|---|---|
| 在新任务上朴素微调 | 高 | 仅新示范 |
| 回放:混入旧数据 | 低 | 保留下来、经过整理的历史 |
| 适配器或低秩更新 | 中 | 新示范、冻结底座 |
| 定期完整重训 | 低 | 整个带版本的语料库 |
回放是主力。你保留一个经过整理的过往示范缓冲区,把它们与新示范交错在一起,好让教会新技能的梯度,被那些守护旧技能的梯度所平衡。回放只有在你确实保留了旧数据、并且它带版本、可查询时才管用,而这在成为一个训练问题之前,早已是一个数据管线问题。
一支从自身部署中学习的机队是一个飞轮。而一个没有刹车的飞轮,只不过是一种更快地偏离航向的方式。
让机队会学习的那条管线
机队规模上的持续学习,是一个比大家想象中的那个训练步骤,有着更多活动部件的环路。它大致这样运转。
- 采集:机器人从部署现场记录自己的运行,包括成功和失败。
- 整理:对涌入的数据流进行过滤、去重和标注,好让你不会在噪声或近乎重复的数据上训练。
- 保留:为语料库建立版本,让每一项过往技能都仍有代表性数据可供回放。
- 评估:用一套固定的、包含旧技能而不只是新技能的测试集,为每一个候选更新把关。
- 重新部署:只有当把关证明没有退化时才发布,并保留血缘以便回滚。
大多数团队低估的失败,是那个反馈回路。一个已部署的策略,会塑造它接下来采集到的数据。如果机器人回避某个困难的抓取,它就不再产生那种抓取的样本,于是下一个模型在这件事上更弱。那些真正在出货人形机器人的公司,从 Figure 到 1X 再到 Agility,实际上都在真实的现场运行着这些环路,而它们共同面对的难点不是神经网络。而是在机队不断改变它所见之物的同时,让数据保持诚实。
飞轮也可能反向旋转
关于已部署机器人的乐观故事,是一个数据飞轮:更多的机器人产出更多的数据,更好的数据造就更好的策略,更好的策略被更广泛地部署,于是这个环路不断复利。这是一个真实的效应。但它也只是画面的一半,因为同一个环路,也能把一个错误复利放大。
一个已部署的策略,并不是世界的中立观察者。它决定自己进入哪些情境,因而也决定自己产生哪些数据。派一支机队去拣选够得着的物件,它就会把够得着的物件学得越来越好,而角落里那个别扭的伸手动作,则根本不会进入训练集。数据集会朝着当前策略已经擅长的方向漂移,而盲点则会硬化。这是一种由内部驱动的分布漂移,规模并不能修复它。规模甚至会让它更糟。
对策是刻意的采集。你必须花力气去采集机队所回避的那些情形,有时是通过遥操作穿过它们,有时是引入一个人做困难版本的示范。放任不管,一支自采集的机队就会为自己的舒适而优化,而不是为覆盖度而优化。对这个行业的报道,一再绕回同一个教训:脚本化示范与可靠的日常班次之间的差距,很少在于模型架构。它在于团队是否掌控着机队从什么中学习,还是任由机队悄悄地收窄自己的食谱。
评估就是刹车
如果回放是引擎,那么评估就是刹车,而没有刹车的持续学习是鲁莽的。每一个更新都必须通过一套留出的测试集,这套测试集要演练完整的技能集合,好让在新 SKU 上的收益,无法掩盖在十项旧技能上悄然发生的损失。这套测试集本身也必须带版本,否则它会随着模型一起漂移,从而不再能抓住退化。来自 The Robot Report 这类媒体对真实部署的报道,一再揭示同一个现实:示范很容易,可靠地撑过第二个月很难,而两者的差别,通常就在于更新背后的评估与数据纪律。
治理伴随这一切一同前行。每一个已部署的模型都是一个版本,训练自一个不断生长的语料库中的某一特定切片,而一个受监管的运营方,必须能够说清是哪些数据产出了当前正跑在现场的那个策略。这就把持续学习又系回到了溯源。如果你无法说出某个更新背后的那些轨迹,你就无法审计它,也无法在第二个月出问题时干净利落地把它回滚。
学而不忘是一个数据问题
人们容易把持续学习想象成一个聪明的训练技巧。可大部分真正的工作在别处。它在于保留正确的历史、整理涌入的数据流,以及用机队已经掌握的一切去为每一个更新把关。那些在真实现场持续变得更好的机器人,会是那些站在一条为此而建的管线之上的机器人,而不是那些拥有最聪明的单一模型的机器人。