你有没有想过一个问题:为什么游戏里的角色,按几个按钮就能做出千变万化的动作,而真实世界里的机器人,想让它做一个简单的后空翻,都要花费研究团队好几个月时间去调参数?
这背后藏着一个一直没被很好解决的难题,叫做技能发现。
简单说就是,怎么让一个机器人(或者说一个被控制的虚拟身体)自己学会一套"能力清单",这套清单要足够简单,普通人一看就懂、一摸就会用,但又要足够丰富,能应付各种复杂场景。这听起来矛盾,但确实是这篇论文想解决的核心问题。
**技能发现:机器人自主学习一组可复用的行为模式,而不是针对单一任务训练一个只会干一件事的策略。**
在这篇论文之前,技能发现领域已经有不少尝试,但都卡在同一个坎上。
早期的方法,比如 DIAYN、DADS 这些基于互信息的方法,思路是让机器人瞎逛(专业说法叫最大熵探索),然后用一个数学工具(互信息)把逛出来的各种状态强行分成几类,贴上"技能1""技能2"的标签。
**互信息:衡量两个变量之间关联程度的指标,在这里用来衡量"选了哪个技能"和"做出了什么动作"之间的关联紧密程度。**
问题是,这套机制只保证"技能之间看起来不一样",不保证"技能看起来有意义"。对一只简单的蚂蚁机器人可能还凑合,分出前进、后退、转圈这类技能。可一旦换成有二十多个关节的人形机器人,可以用来"显得不一样"的维度太多了,机器人很可能学出一堆怪异的抽搐动作,每个动作确实互不相同,但没一个是人类能看懂、能用上的。
这就好比你让一个孩子"随便做几个不一样的动作",他可能会拍一下左手、挠一下右耳、跺一下脚,动作确实各不相同,但你没法把这几个动作组织成一套有用的广播体操。真正的广播体操,每一节都是设计者带着明确目的编出来的:"伸展运动""扩胸运动""踢腿运动",每个名字背后都有清晰的身体诉求。如果没有这个编排逻辑,光靠"动作要互不相同"这一条规则,你永远编不出一套能让全班同学一起做的操。
后来也有研究者尝试引入外部指导来解决这个问题,比如用语言模型给状态打标签,或者拿一堆参考动作视频当样板去模仿。但这些办法都有个共同的软肋:成本高。给每个状态写文字描述,随着机器人维度升高工作量会爆炸;准备足够多样的参考动作视频本身就是个耗时费力的工程。
这篇论文的作者们换了个思路。他们问了一个很朴素的问题:能不能让机器人自己打一场游戏,让游戏规则本身充当这个"指导老师"?
自我对弈:用一场游戏逼出有用的技能
论文提出的方法叫做 GGSD,全称是通过自我博弈实现的游戏引导技能发现。
**GGSD(Game-Guided Skill Discovery):一种利用竞技游戏中的自我对弈过程,引导机器人自主发现一套可供人类直接操控的技能库的训练框架。**
这个想法的巧妙之处在于,游戏规则本身极其简单。比如论文里设计的"蚂蚁相扑"游戏,规则就一句话:把对手推出场地,自己摔倒就算输。写成代码可能也就几行。但这简单的几行规则背后,藏着巨大的策略空间:怎么站得稳、怎么找角度推人、怎么躲闪、怎么在快要被推出场外时调整姿态逃生。
让机器人自己跟自己打,而且是跟过去不同阶段的自己打,这个策略叫做自我博弈。
**自我博弈(Self-Play):让一个智能体与自身的历史版本或当前版本对抗训练,通过不断升级的对手压力促使能力螺旋式提升的训练范式。**
这个思路并不新鲜,AlphaGo 下围棋、OpenAI Five 打 Dota,都是靠自我博弈磨炼出超越人类的策略。但这篇论文的创新点在于,他们不是想训练出一个"打遍天下无敌手"的单一策略,而是想从博弈过程中萃取出一组可拆解、可复用的基础动作。
具体怎么做到的?作者设计了一个分层的控制结构。
机器人身上装了两层大脑:一个高层策略,负责在打架过程中临场决定"现在该用哪个技能";一个低层策略,负责把选中的技能具体转化成每个关节该怎么动。高层策略看到的是整个战局,包括自己的状态、对手的状态;低层策略只看得到自己身体的本体感觉信息,看不到对手在哪、对手在干什么。
这个设计选择非常关键,也值得多说两句。为什么要故意让低层策略对对手的情况"视而不见"?
设想一下,如果低层技能也能看到对手位置,那"向前推"这个技能在不同对手位置下可能会演化出截然不同的具体动作:对手在左边就往左扭腰,对手在右边就往右扭腰。久而久之,这个技能的动作含义会变得模糊,今天按下这个按钮是往左扭,明天按下同一个按钮又是往右扭,人类玩家完全摸不着头脑。而把"看对手在哪、该用什么技能"这种战术判断完全交给高层策略处理,低层只管把动作做扎实,这就好比餐厅后厨的厨师只管把一道菜做标准,不用操心今天来的是哪桌客人、客人心情好不好,这些判断交给前台服务员去拿捏。如果厨师也要根据每桌客人的脸色调整菜的做法,那这道菜的口味就没法稳定下来,顾客永远不知道点这道菜会吃到什么味道。
技能本身被设计成一个很小的离散选项集,每个环境只有五到六个技能,用一个独热编码表示。这个数字是作者刻意控制得很小的,目的很纯粹:要让人类玩家能像打游戏一样,按个键就能切换技能,而不是面对几十个选项挑花眼。
怎么保证技能既多样又有意义
光靠游戏规则这个"指导老师"还不够,论文里还加了两个数学工具来确保技能库的质量。
第一个工具是熵正则化,用来防止高层策略"偷懒"。
**熵正则化:通过惩罚策略输出分布过于集中的做法,鼓励策略保持多样化选择的技术手段。**
如果不加这个约束,很可能出现的情况是,高层策略发现只要一直用"技能3"就能赢,于是干脆把其他四个技能全部打入冷宫,再也不碰。这就好比一个篮球运动员发现自己三分球特别准,于是整场比赛只投三分,再也不运球突破、不传球配合。虽然短期内可能真能赢几场球,但这个运动员的技术动作库就废了一大半,没法应对需要多元打法的对手。熵正则化就是强制这个运动员必须保持一定的打法多样性,哪怕某个技能暂时效果最好,也不能把其他技能全部放弃。
第二个工具就是前面提到的互信息最大化,不过这次用在了低层策略上,确保不同的技能编号真的对应着不同的身体动作,而不是选了技能1和技能2结果做出来的动作一模一样。
论文作者对互信息的作用有一个挺有意思的反思。他们认为,互信息本身并不负责创造出"有意义"的动作,它只负责把已经存在的、各不相同的动作和技能编号对应起来。打个比方,互信息更像是图书馆的编目系统,负责把书分门别类贴上标签,但它不负责决定图书馆里到底该进哪些书。真正决定"该有哪些书"的,是游戏规则本身:为了赢得这场相扑比赛,机器人必须学会推、躲、转身,这些实际有用的动作才是游戏规则逼出来的,互信息只是负责给它们贴标签、分文件夹。
这个洞察挺重要,因为它解释了为什么单纯堆砌互信息的方法容易学出没意义的动作,而加了游戏规则这个约束之后,技能质量明显不一样。
意外之喜:技能组合出的连招
训练完之后发生了一件作者自己都觉得有意思的事情。
虽然每个环境只设计了五六个技能,表面上看起来选择很有限,但技能之间的衔接切换,居然能够产生出单独执行任何一个技能都做不出来的全新动作。论文把这个现象叫做涌现式连招。
**涌现式连招(Emergent Combo Behaviors):由多个基础技能按特定顺序衔接执行后,自发产生出单一技能无法实现的更复杂行为效果。**
这个现象在机械臂打桌上冰球的实验里特别明显。单独执行机械臂的某个技能时,手臂只是移动到球台的某个区域然后停在那里,看起来相当呆板。但如果从一个技能快速切换到另一个技能,手臂会猛地加速冲刺,正好能用这股冲劲把冰球狠狠击出去。
人形机器人打拳击的实验里也出现了类似的效果。从某个技能切换到另一个技能,会产生身体向后倾斜的躲闪动作;反过来切换,则会利用身体先前积攒的重心和动量,打出一记力道明显更猛的前冲拳。
为什么会这样?因为低层策略是根据当前所处的状态来决定怎么执行技能的,而不是死板地只看技能编号。这意味着同一个技能,如果是从"正常站立"状态触发,可能表现为普通的拳击动作;但如果是从"身体后倾"这个特殊状态触发,身体里积蓄的势能和角度会被充分利用,做出截然不同的效果。
这就有点像打游戏时的招式连招系统。单独按一个键是"轻拳",单独按另一个键是"后仰",但如果先按后仰再立刻接轻拳,游戏引擎会判定触发一个"反击重拳"的特殊效果,这是设计者没有单独编写过的新招式,是两个基础动作在特定时序下自然叠加出来的。如果没有这种状态依赖的设计,机器人每次执行某个技能都只会输出一模一样的动作,那整个技能库的表现力就会被死死锁定在"技能数量"这个上限上,永远没法超越。
这个发现回答了文章开头抛出的矛盾:技能数量少,怎么还能表现力丰富?答案就是靠状态依赖和技能切换,用有限的几个按钮撬动出远超按钮数量的行为可能性。
当然作者也很诚实地指出了这里的边界:如果状态被切分得过于细碎,同一个按钮在太多不同情境下表现出截然不同的含义,这个控制界面反而会变得难以理解。他们认为理想状态是,技能在少数几个"状态区间"内保持可预测,跨区间切换时才解锁新效果,这中间的平衡还需要进一步研究。
真刀真枪地测一测:人机对战和技能迁移
说了这么多设计思路,这套系统到底好不好用,还得看实验数据说话。
论文在四个游戏环境里做了测试:蚂蚁相扑、蚂蚁击剑、机械臂打冰球、人形机器人拳击。训练出的最终策略,拿去打早期训练阶段的旧版本自己,胜率相当高;越是面对训练后期的、更强的对手版本,胜率逐渐下降、平局率逐渐上升,这恰好说明自我博弈确实在持续推着双方实力共同成长,而不是原地踏步。
更有说服力的一个细节是人机对战的结果:在蚂蚁相扑游戏里,四名真人玩家各打了五局对抗训练好的机器人,最终人类只赢了两局,胜率只有百分之十。这说明训练出来的策略确实具备相当强的实战能力,不是花架子。
作者还专门做了一个量化测试,看看 GGSD 学出来的技能到底有多"有意义"。他们用一个视觉语言模型给每段技能动作的视频生成文字描述,再把这些描述转换成数学向量,计算技能两两之间的语义距离,距离越大说明技能在语义上差异越明显,而不只是动作形式上的差异。
和另外三种经典技能发现方法对比后,GGSD 在蚂蚁和人形机器人环境下的语义多样性分数,大约是最强对比方法的两倍,在机械臂环境下也高出百分之二十八。这个数字差距相当可观,意味着 GGSD 学出来的技能不只是看起来不一样,而是确实承载着不同的、能被语言描述出来的行为含义。
**语义多样性:指一组技能彼此之间在行为含义上的区分程度,不单纯依赖肢体动作的像素差异,而是关注这些动作是否真的代表了不同的"做法"或"目的"。**
最后也是最能打动人的一组实验,是看看训练出的技能能不能脱离原来的游戏,拿去应付机器人从没见过的新任务。
研究团队把原本为蚂蚁相扑训练好的技能,直接拿去玩走迷宫和推箱子这两个任务;把人形拳击训练好的技能,拿去玩人形版本的走迷宫。整个过程里,低层的动作策略完全不变,高层的策略直接替换成了人类玩家的实时按键操作。
结果呢,五名志愿者(包括两位论文作者)每人在每个任务上测试五次,三个任务的平均成功率都在百分之八十四以上,走迷宫和推箱子任务的成功率甚至达到了百分之百。更值得一提的是,训练环境用的是 Isaac Lab 这套仿真工具,而人机对战测试环境换成了另一套叫 MuJoCo 的物理引擎,相当于换了一套"场地规则",技能依然好用。
这个结果有点出乎意料。毕竟推箱子需要操控物体,走迷宫需要应对墙壁碰撞,这些场景在原本的相扑和拳击游戏里压根没出现过。但因为技能本身学到的是一套通用的"身体操控语言",而不是针对某个特定任务死记硬背下来的路径,所以才能在陌生场景里直接复用。
| 测试任务 | 成功率 | 平均耗时(秒) |
|---|---|---|
| 蚂蚁走迷宫 | **100%** | 82.7 |
| 蚂蚁推箱子 | **100%** | 62.2 |
| 人形机器人走迷宫 | 84% | 22.0 |
这篇论文也不讳言自己的局限性。学到的技能库说到底是被游戏规则本身框死的,游戏规则需要什么技能,机器人就只会学到什么技能。拳击游戏逼不出灵巧抓握这种精细操作技能,这是意料之中的。作者认为未来的方向是设计需要更广泛动作能力的游戏,倒逼机器人学出更通用的技能组合,这个想法听起来合理,但具体怎么设计这样一个"更广泛"的游戏,论文里并没有给出答案,这大概也是留给后续研究者的一道开放题。
写在后面
读完这篇论文,最触动我的其实不是技术细节本身,而是作者选择"游戏"作为指导信号这件事背后的那层逻辑。
通常我们想让机器人学会一个技能,直觉做法是直接告诉它该怎么做,给参考动作、给详细奖励函数、一步步手把手教。但这篇论文反过来证明了一件事:有时候你不需要精确告诉机器人"该怎么做",只需要给它一个"输赢的标准",剩下的让它自己在无数次对抗里摸索出来。这其实很像人类社会里很多技能的传承方式,武术招式最早未必是哪个人坐在书房里设计出来的,而是无数场真实较量里,打赢的人留下的动作被反复验证、提炼、传承下来的。规则简单,过程开放,答案自己涌现。
论文里还有一个细节我觉得值得单独拎出来说,就是低层策略"看不见对手"这个设计。这其实是一种主动的信息屏蔽,让系统牺牲掉一部分理论上可能更优的策略空间,换来的是动作语义的稳定性和人类可理解性。这种"故意限制信息换取可解释性"的思路,在很多需要人机协作的系统设计里其实都值得借鉴,不是信息越多越好,有时候恰到好处的"看不见"反而是更优解。
这篇论文也留下了一个我觉得挺值得继续追问的问题:如果游戏规则设计得更复杂,比如一个需要搬运、协作、长期规划的游戏,自我博弈逼出来的技能库会是什么样子?会不会出现技能数量爆炸、人类反而玩不过来的情况?游戏设计本身要达到什么样的复杂度,才能既榨取出足够丰富的技能,又不让这套控制界面变得像一台塞满按钮的老式录像机遥控器那样让人望而生畏?
Q&A
Q1:GGSD是什么?
A:GGSD全称Game-Guided Skill Discovery,是一种让机器人通过自我对弈玩简单竞技游戏来自主学习一套可供人类直接操控技能的训练框架,训练完成后人类可以用按键直接控制机器人执行这些技能。
Q2:GGSD训练出的技能能不能用在没训练过的新任务上?
A:可以。论文实验显示,在蚂蚁相扑和人形拳击游戏中学到的技能,直接拿去玩走迷宫、推箱子这类从未训练过的任务,成功率都在84%以上,完全不需要额外训练。
Q3:GGSD和之前的技能发现方法有什么不同?
A:之前的方法主要靠机器人瞎逛加数学公式把动作分类,容易学出没有实际意义的怪动作。GGSD用竞技游戏的输赢规则当指导,逼机器人学出真正有用的动作,语义多样性比传统方法高出一倍左右。







