微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 机器人学会一个新动作,到底需要多少次摔倒?

机器人学会一个新动作,到底需要多少次摔倒?

2026-10-28 15:39
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-10-28 15:39 • 科技行者

如果你养过一只狗,大概经历过这样的场景:你想教它一个新把戏,比如把球顶到角落里,而不是叼回来。它从没学过这个,但它会跑、会跳、会用鼻子拱东西。你不需要从头训练它学习"跑"和"拱"这两个动作,你只需要换个方式表达你想要什么,然后在它每次尝试之后给出反馈,慢慢地它就学会了这个新把戏。

现在把这只狗换成一台人形机器人。它已经学会了搬箱子、推箱子、把箱子抱起来走——这些是从大量人类动作数据里训练出来的。现在你让它做一件新鲜事:把一个箱子原地转个方向。它从没见过这个动作,但转箱子所需要的身体协调能力,它其实都已经具备了。问题是,怎么让它意识到这一点,并且自己摸索出正确的做法?

这正是一篇来自伊利诺伊大学厄巴纳-香槚分校的研究,InterEvolve,想要回答的问题。

**这篇论文解决的不是"让机器人学会新动作",而是"让机器人在不重新训练的情况下学会新动作"。**

这个区别听起来微妙,但代价完全不同。

传统做法是什么样的

在人形机器人控制领域,过去几年已经有不少让机器人完成复杂动作的方法。

动作参考*:给机器人一段人类动作的录像或动捕数据,让它模仿着做。

目标状态*:告诉机器人最终想要达到的姿态,比如"站在这里,手举到那个高度"。

技能标签*:预先定义好一批离散的技能,比如"抓取""行走",让机器人在需要时调用。

这三种方式有一个共同的问题:它们都要求你提前知道"这个新任务具体长什么样"。如果让机器人把箱子转个方向,你很难找到现成的动作参考,因为训练数据里压根没有这个动作;你也很难描述一个"目标状态",因为转箱子不是一个静止的终点,而是一个持续的交互过程;技能标签就更不用说了,这个技能根本不存在于标签库里。

论文里有一个很直观的例子。研究者让一个已经学会搬箱子、推箱子的机器人控制器去完成"原地转动箱子"这个任务。他们先试了一种人工设计的奖励函数,结果机器人直接作弊了:它站着不动,只用手把箱子转来转去,完全没有调动身体的协调能力。这不是机器人"笨",而是奖励函数设计得不够好,给了机器人一个"钻空子"的捷径。

而后面经过InterEvolve自动演化出来的奖励程序,机器人学会了绕着箱子走,一边推一边拉,靠身体的移动来带动箱子转向,这是一种训练数据里从未出现过的策略,但确实有效。

**换句话说,人工设计的奖励失败了,不是因为机器人能力不够,而是因为任务没有被正确地"翻译"成机器人能理解和执行的目标。**

那么,怎么用一种既能表达复杂意图、又能根据执行结果快速修改的方式,去给机器人出题?这就是这篇论文真正要解决的核心矛盾。

奖励程序:把任务拆成一张可以修改的清单

InterEvolve给出的答案是奖励程序。

奖励程序*:一种结构化的任务描述方式,把一个复杂任务拆分成若干个阶段,每个阶段有自己的奖励函数(告诉机器人"做得好不好")和完成条件(告诉机器人"什么时候进入下一阶段"),外加一组可调节的数值参数。

举个例子,"把箱子踢到标记点"这个任务,可以拆成两个阶段。第一阶段是"用脚踢向目标",奖励函数奖励脚对箱子的推动力,同时惩罚用手接触箱子;完成条件是箱子离目标足够近。第二阶段是"稳定下来",奖励机器人站稳、松开接触。这两个阶段分别对应不同的身体技能组合,而机器人需要知道什么时候从第一个状态切换到第二个状态。

为什么要拆成阶段,而不是写一个大而全的奖励函数一次性搞定?

想象你在教别人骑自行车。如果你只给一个笼统的指令"保持平衡并前进",对方很可能既想保持平衡又想加速,结果两头都做不好。但如果你拆成"先学会在支撑轮上滑行""再练习脚踩踏板""最后撤掉支撑轮",每个阶段有明确的小目标,学习效率会高得多。如果不拆分阶段,论文的实验数据显示,成功率会从86.5%暴跌到44.7%,几乎是腰斩。这说明阶段化不是锦上添花的设计,而是让接触密集型任务可行的必要条件。

奖励程序的好处在于,它的每一部分都是可以单独编辑的。你可以只改奖励该怎么算分,也可以只改完成条件该怎么判断,还可以调整权重参数的大小,而不需要触碰整体结构。

这就引出了下一个问题:谁来写这些程序,又怎么判断写得好不好?

让大模型当"编剧",让数值优化器当"配乐师"

InterEvolve的做法是用一个大语言模型智能体来负责程序的结构性修改,同时用一种叫CMA-ES的数值优化算法来调整参数的具体数值。

CMA-ES*:协方差矩阵适应进化策略,一种不需要知道梯度信息、靠不断采样和筛选来逐步逼近最优参数的优化方法,常用于参数空间复杂、难以求导的场景。

为什么要把这两件事分开做?

这就像写一部电影剧本和给它配乐,是两种完全不同的工作。编剧要决定故事怎么分幕,人物在什么时候转折,这需要创造性的重新组织;配乐师要决定每一幕用多大的音量、什么节奏,这是在既定框架内的精细调节。你不会让编剧去调音量旋钮,也不会让配乐师去改剧情走向。如果混在一起让同一个角色全权负责,大语言模型既要想结构又要调参数,效率会低很多,而且很难判断一个新结构到底是真的不行,还是仅仅因为参数没调好而显得不行。

论文的实验证实了这一点:单独靠人工写的奖励程序,哪怕经过参数调优,成功率也只有18%;单独靠大模型写的初始程序加调优,是34.6%;而经过完整的结构修改加参数调优的演化过程,成功率跃升到了86.5%。这个差距说明,光调参数是补不齐一个"方向错了"的程序的,结构性的修改才是真正的瓶颈所在。

每一轮演化是怎么运作的

智能体每一轮会收到一份"情况汇报":任务要求是什么、场景里有什么障碍物、当前最好的程序表现如何、哪些检验指标还没通过。

论文里有个很具体的反馈例子:"卡在'手部接触'这一项检验上,170个环境里只过了192个中的170个,中位数环境其实只差0.08就能通过,这是一个尾部方差问题,不是均值太低的问题。"这种反馈不是笼统地说"做得不够好",而是精确告诉智能体:问题出在哪个阶段,是普遍性的失败还是个别运气不好的失败。

有了这份诊断,智能体会提出几个新的候选程序,这些候选程序会在CMA-ES的参数搜索下被调优,再拿去和当前最好的程序在相同的初始条件下比较。只有当新程序的提升超过了评测本身的随机波动,它才会被正式采纳为新的"当前最优"。

**这个比较机制很关键:它确保了每一次采纳的修改,都是真的变好了,而不是凭运气蒙对了一次。**

这套机制还有一个附加产物,叫技能库。

技能库*:一份记录了过去所有已完成任务的文档,里面存着每个任务的场景描述、验证结果和最终确定下来的奖励程序,供后续新任务检索和参考。

技能库的作用,类似于一个老师傅留下的工作笔记。你接手一个新项目时,如果能翻到前任处理过类似问题的记录,照着改一改往往比从零开始快得多。论文的实验显示,面对"搬运、放置、再踢开"这种组合型任务,有完整技能库支持的情况下能解决10个里的5个,而完全没有技能库参考时几乎一个都解决不了。但这里有个前提:技能库必须覆盖这个新任务需要的接触模式。实验中单独只放"搬运"相关的三个程序进技能库,面对搬运类子任务能解决6/10,但面对叠箱子或者踢箱子的子任务就基本帮不上忙,说明积累的经验要"对题"才有用,不是存得越多越好。

让一个控制器听懂新奖励:物体感知的"前向-后向"模型

说完了怎么写任务,还有一个关键问题:机器人的"大脑"要怎么把这些新写的奖励,转化成实际的身体动作?

传统的做法是每换一个新奖励就重新训练一次策略网络,这在工程上代价巨大,因为训练一次动辄需要大量的计算资源和时间,根本没法支撑快速试错迭代。InterEvolve选择的方案是用一种叫前向-后向行为基础模型的技术。

前向-后向行为基础模型*:一种让单一固定策略网络能够响应任意新奖励、无需重新训练的技术框架,其核心是把奖励信号转化成一个"提示向量",这个向量直接指挥同一个策略网络产生对应的行为。

这背后的数学直觉是,机器人的行为可以被编码成一个占据度量,描述它未来会经过哪些状态。这个度量可以被分解成两部分:一部分描述"动作会带来什么状态"(前向),一部分描述"每个状态值多少分"(后向)。任何一个新的奖励函数,理论上都能通过这两部分组合出对应的最优行为,而不需要重新训练整个网络。

这就好比你有一个经验丰富的翻译,他掌握了语法规则和词汇储备(相当于前向-后向模型的两部分映射),无论你给他一句什么样的新句子要翻译,他都能当场组合出对应的译文,而不需要重新学一遍整门语言。如果每来一句新句子都要让他重新学一次外语,那翻译效率会低到完全不可用。

不过,论文发现现有的这类模型有个明显短板:它们只观察机器人的身体状态,完全看不到物体在哪里。这就导致一个很荒谬的结果,比如"把箱子推到左边"和"把箱子推到右边"这两个本该完全不同的奖励,在模型眼里竟然会坍缩成同一种行为,因为模型压根不知道物体的位置信息。

**这就是为什么研究者专门设计了一个物体感知的扩展版本,给原有的身体先验网络接上一个可训练的"物体残差"分支,让模型既保留原来学到的身体技能,又能感知到物体的位置、朝姿和运动状态。**

这个设计的巧妙之处在于,它冻住了原来学好的身体部分,只训练新增的物体感知部分。这就像给一位已经精通基本功的老司机,额外加装一套新的辅助感应系统,而不需要让他重新考一次驾照。实验数据显示,这样做之后,机器人在物体交互任务上的成功率从只看身体版本的8%,大幅提升到60%,接近专门为跟踪任务训练的强化学习模型的66%。

而且,这个加装的物体感知部分越"大",效果越好。论文做了一组对照实验,把残差分支从一个小型的神经网络逐步扩大到和原身体网络同等规模,成功率从28%一路爬升到60%,说明物体交互这件事确实需要足够的"脑容量"去理解和处理。

数字说话:演化带来的提升有多大

InterEvolve团队设计了一个覆盖八类任务家族的评测基准,包括把物体推到标记点、不同高度搬运、把物体翻转到新的面、只用脚接触物体、把物体抬到支撑面上、绕过障碍物推动物体等等。

| 方案 | 成功率 | 完成度评分 |

|---|---|---|

| 什么都不做 | 0.0% | 49.1% |

| 人工写的奖励(未调优) | 8.0% | 65.2% |

| 大模型初始奖励(未调优) | 32.2% | 73.3% |

| 人工奖励+参数调优 | 18.0% | 75.2% |

| 大模型初始奖励+参数调优 | 34.6% | 82.5% |

| **InterEvolve完整演化** | **86.5%** | **95.6%** |

这张表最耐人寻味的一行是第一行:什么都不做,原地站着不动,竟然就能拿到49.1%的"完成度评分"。这不是说评测标准形同虚设,而是因为很多检验标准(比如"保持站立不摔倒")本身就不难达成,所以单看完成度评分容易被这类基础项"注水"。这也是为什么论文更看重成功率这个更严苛的指标,它要求所有检验项同时满足,而不是部分达标就算过关。

另一个值得细品的数字是演化轮次的效果。论文追踪了同一个任务从初始方案到第四轮演化的变化:成功率从32.2%,到第一轮跃升至75.0%,之后几轮里有小幅波动(第二轮76.8%,第三轮反而回落到73.6%),最终第四轮达到86.5%。

**这个过程不是单调上升的,这恰恰说明修复一个问题有时候会意外破坏另一个已经解决的问题,就像修好了房子的漏水却弄坏了隔壁的电路,需要反复试探才能找到都兼顾的方案。**

而完成度评分这个更宽松的指标,则是一路稳步爬升,从73.3%一直涨到95.6%,没有出现回落。这组对比揭示了一个有意思的现象:系统在"离及格线更近"这个维度上一直在稳步进步,但"是否真正全部达标"这个更严格的维度会经历起伏,直到最后才稳定住。

在具体任务家族的表现上,数据也很说明问题。像"推到标记点"这种相对简单的任务,人工加调优方案已经能做到96.9%,InterEvolve和它打平;但像"胸前高度搬运""翻转到新的面""穿过门洞推动"这类复杂的接触密集型任务,固定程序的成功率普遍在0%到25%之间,经过完整演化后全部跃升到70%以上。唯独"踢到标记点"这个任务依然是整个评测里最难的,只有59.4%,论文给出的解释是,踢这个动作在原始训练数据里出现得极少,机器人本身对这类全身协调性要求很高的动作掌握得就不扎实。

从模拟到现实:机器人真的在物理世界里跑起来了

论文最后一部分最让人安心的地方,是它没有止步于仿真环境里的数字游戏,而是真的把演化出来的程序部署到了一台物理的Unitree G1人形机器人上。

机器人靠自己头部的摄像头看到箱子,用FoundationPose这类姿态估计算法实时推算箱子的六维位姿(位置加朝姿),再把这些信息喂给控制器。整个踢箱子和推箱子的程序,是先在仿真里演化验证好的,然后原样搬到真实机器人上运行,机器人全程自主完成,不需要人为干预。

这一步很重要,因为仿真到现实的落差一直是机器人学习领域一个老生常谈的坎。很多在仿真里表现完美的策略,一到真实世界就因为传感器噪声、物理参数误差而失灵。InterEvolve团队用了一个滤波器把摄像头估计的箱子位姿和激光雷达扫描结果融合起来,过滤掉不可信的估计值,这才让机器人在真实环境里站得住脚。

还有一个更有想象力的实验:六个箱子的长程任务。研究者让机器人把六个散乱分布的箱子,一个个推到围成一圈的指定位置,全程只重置一次,也就是说中间任何一步的误差都会累积到后面的步骤里,没有机会"重开"去纠正。结果显示,六个箱子最后都停在了距离目标位置11厘米以内的范围内,而且后面推的箱子没有撞到之前已经放好的箱子。

**这说明演化出来的策略不只是在单次任务上管用,串联起来也能撑住长程的复合任务,误差没有像滚雪球一样越滚越大。**

写在后面

读完这篇论文,最打动我的其实不是那张87%成功率的表格,而是那个"机器人靠身体移动而不是单纯用手去转箱子"的细节。研究者本来是想测试一个失败案例的,结果意外地撞见了一种他们自己都没预料到的解决方案,这种"系统自己想出了超出设计者预期的办法"的瞬间,是整篇论文里最鲜活的部分。

还有一点值得单独说一说:技能库的作用边界。论文很诚实地展示了"只有搬运类经验的库,对踢箱子任务几乎没用"这个负面结果,而不是只展示正面案例。这种对局限性的坦诚,反而让人更相信那86.5%的成功率是真实可信的,不是精心挑选出来的漂亮数字。

这篇论文让我想到一个更大的问题:当我们说"机器人学会了一个新技能"时,到底是指它的神经网络参数变了,还是指它知道怎么调用自己已有的能力去应对新情况?InterEvolve选的是后一条路,控制器本身一行代码都没改,改变的只是"怎么向它提需求"这件事。这种把"学习"和"控制"拆开的思路,会不会也适用于人类自己的某些学习场景?一个已经会骑自行车、会游泳的人,学习滑雪的时候,真正需要的或许不是重新学一套全新的身体控制,而是找到一种方式,把已有的平衡感和肌肉记忆"翻译"成滑雪这个新场景里能用的东西。

那么下一个问题自然就冒出来了:如果控制器本身的能力边界,才是整个系统真正的天花板,那这个天花板又该靠什么去打破?

Q&A

Q1:InterEvolve是什么?

A:InterEvolve是伊利诺伊大学厄巴纳-香槚分校提出的一套系统,让人形机器人在不重新训练控制器的情况下,通过演化奖励程序来完成从未训练过的新任务,比如把箱子转个方向或踢到指定位置。

Q2:InterEvolve和传统的机器人训练方法有什么区别?

A:传统方法每换一个新任务就要重新训练一次策略网络,成本很高。InterEvolve保持控制器完全不变,只是不断用大语言模型修改任务的奖励程序结构,再用数值优化调参数,靠执行反馈逐步改进,成功率能从34.6%提升到86.5%。

Q3:InterEvolve演化出来的技能能在真实机器人上用吗?

A:可以。论文把仿真里演化验证好的踢箱子和推箱子程序,直接部署到真实的Unitree G1人形机器人上,机器人靠自己头部摄像头识别箱子位姿,全程自主完成任务,不需要人工干预。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-