微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

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

首页 当AI战斗机学会了"分工":一场空战里的角色扮演游戏

当AI战斗机学会了"分工":一场空战里的角色扮演游戏

2026-10-14 20:47
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-10-14 20:47 • 科技行者

想象一下这样的场景:两架战斗机对抗两架战斗机,天上导弹横飞,雷达信号交织。你会发现一个奇怪的现象,训练出来的AI飞行员,四架飞机常常做着几乎一样的动作,一起冲锋,一起转向,一起规避。看起来很整齐,但整齐得像军训,而不是像真正的空战王牌那种默契配合。

这不是危言耸听。现实中很多多智能体强化学习系统训练出来的战术,确实存在这个毛病。四个AI各自决策,但彼此之间没有明确的"你干这个我干那个"的分工机制,结果就是一窝蜂式的行动,缺少真正的战术层次。

中国科学院自动化研究所的研究团队盯上了这个问题,他们发的论文叫DRG-MAPPO,全称是"分层动态角色图多智能体近端策略优化"。名字挺拗口,但背后的想法其实挺直白:既然人类空战王牌都讲究长机和僚机的配合,长机主攻僚机掩护,那AI为什么不能学会这种角色分工?

这篇论文最后做出来的系统,在2v2超视距空战模拟里跑出了87%的胜率,明显超过了当时几种主流的多智能体强化学习方法。更有意思的是,系统自己"涌现"出了一些人类飞行员才有的战术,比如诱敌深入然后侧翼包抄,比如两架飞机集中火力打一个目标。这些行为不是研究者手写规则硬塞进去的,而是训练过程中自然长出来的。

空战AI卡在哪儿了

要理解这篇论文解决了什么问题,得先搞清楚过去的方法为什么不够用。

传统的空战决策系统,早期基本靠专家规则和优化算法撑着。比如粒子群优化、鸽群启发算法这类,本质上是把老飞行员的经验编码成数学公式和判断逻辑。这类方法在熟悉场景里表现稳定,飞机的一举一动都能预测,但一旦对手换了套路,或者战场态势变得复杂,规则就开始失灵了。原因很简单,规则是死的,战场是活的。

后来强化学习登场了,尤其是多智能体强化学习,MADDPG、MATD3、MAPPO这些算法陆续被搬进空战场景。

多智能体强化学习*:多个AI智能体同时学习决策,彼此之间既要配合又要应对环境和对手,是比单智能体强化学习难得多的问题,因为每个智能体的最优策略都依赖于其他智能体在做什么。

这些方法确实比死板的规则灵活,能处理连续、高维的状态空间。但论文里指出了两个卡住大家的坎。

第一个坎是关系建模的缺失。空战场景里,每一架飞机、每一发导弹的相对位置、速度差、角度关系都在不停变化,信息量巨大且高度动态。如果AI只是把所有信息一股脑塞进一个向量里让神经网络自己去理解,它很难精准捕捉到"敌人刚刚掉头了,这是个机会"这种转瞬即逝的战术窗口。

第二个坎是角色模糊。传统的强化学习架构是"扁平"的,意思是每个智能体独立做决策,没有明确的分工机制。四架飞机里谁该主攻,谁该掩护,全靠网络自己隐式地学,学不好就会出现前面提到的"一窝蜂"现象,或者更糟,四个AI互相抢功,谁都想当主攻手,结果谁也顾不上防守。

这就好比一个足球队,场上十一个人各自盯着球猛冲,没有前锋后卫中场的明确分工。球可能偶尔进了,但整体配合一定是灾难性的。如果不设定角色分工,球队看起来热闹,实际打法混乱,遇到有战术体系的对手基本没有还手之力。这正是论文想要解决的核心矛盾。

给战场画一张关系图

DRG-MAPPO的第一个关键设计,是不再把观测数据当成一个平铺的特征向量,而是把战场建模成一张图。

具体来说,每个AI智能体眼里的战场被拆解成四类节点:自己、友军、敌军、来袭导弹。每个节点携带自己的特征信息,比如敌机节点会记录相对距离、相对方位角、速度差、接近速度、进入角、高度差、航向偏差这七项数据。

图注意力网络*:一种神经网络结构,能让每个节点在更新自己的表示时,自动判断该"关注"哪些其他节点更多一点,类似人在嘈杂环境里会自动把注意力集中在重要信息源上。

这里用了一个和Transformer里类似的注意力机制,也就是缩放点积注意力。简单说,系统会计算每两个实体之间的"关联度",敌机对我方的威胁程度不同,导弹的紧迫程度也不同,注意力机制让网络学会给这些关系加权,重要的关系权重高,次要的自动被压低。

这套机制处理完之后,会产出三个层级的表示,一个是"我自己"经过关系信息强化后的状态,一个是"我所在的局部战场态势"的摘要,还有一个是"整个团队"的态势摘要。

这就像开车时的仪表盘和后视镜。如果只看仪表盘,你知道自己的车速和油量,但完全不知道周围车辆在做什么。传统的强化学习状态输入就类似只看仪表盘,信息是有,但缺乏和周围环境的关系。图注意力机制相当于加装了360度环视摄像头,而且这套摄像头还很聪明,会自动把旁边正在变道的车标红提醒你,把远处车道上没威胁的车调暗显示。如果没有这层关系建模,系统看到的只是一堆孤立的数字,很难判断"现在这个瞬间,谁对我威胁最大"。

高层定角色,底层出招式

有了关系图之后,DRG-MAPPO在决策架构上做了一个关键的分层设计。

高层策略负责给每个飞机分配战术角色,比如"领队"或者"支援者"这类离散的角色标签。这个决策不是每一帧都重新算一次,而是引入了一个叫做时间承诺机制的东西。

时间承诺机制*:角色分配不是每一步都重新抽取,而是设定一个固定的时间窗口,在窗口内保持角色不变,窗口结束才重新评估是否切换角色。

为什么要这样设计?原论文给出的理由很直接,空战里的战术角色本质上是持续的行为模式,不是逐帧切换的东西。如果一架飞机上一秒决定当诱饵吸引火力,下一秒又突然切换成主攻,队友根本反应不过来,整个配合就崩了。

这就像篮球比赛里的战术暗号。教练喊一次"挡拆配合",球员们会在接下来的几个回合里都执行这套战术,而不是每两秒就换一套新战术让队友猜。如果没有这个持续性约束,系统在训练早期很容易陷入角色反复跳变的震荡,今天想让A飞机进攻,下一秒又让它撤退,训练过程会变得极不稳定,团队也没法形成真正的默契。

角色确定之后,会被映射成一个可学习的角色嵌入向量,而不是简单的独热编码。

角色嵌入*:把离散的角色标签转换成一段连续数值向量的表示方式,好处是网络能捕捉到不同角色之间的潜在相似性,而不是把每个角色当成完全孤立的类别。

低层策略在这个角色向量的条件下,结合前面提到的关系图特征,从12个离散的战术动作里选一个执行,动作集合覆盖了转向、爬升、俯冲、加减速、蛇形机动、规避导弹、发射导弹等具体操作。

这套架构本质上是把"想清楚该干什么"和"具体怎么操作"这两件事拆开来做。这就好比公司里战略部门和执行部门分开,战略部门决定这个季度主攻哪个市场,具体怎么谈判、怎么发货是执行团队的事。如果两件事混在一起让同一批人同时做,决策速度会被拖慢,而且容易在细节执行上迷失战略方向。

让AI学会"盯紧一个目标打"

光有角色分工还不够,论文还设计了一个辅助任务,专门用来催生"集火攻击"这种协同行为。

目标优先级辅助任务*:让每个智能体额外预测一个"当前最该攻击哪个敌人"的概率分布,这个预测有一个由人工设计的评分公式给出的标准答案作为训练监督信号。

这个评分公式挺讲究,综合考虑了距离远近、敌我双方的雷达锁定状态、以及已经有几发友军导弹在跟踪这个目标。分数最低的敌人被认定为优先打击对象。

关键的地方在于,这个辅助任务和主策略共享同一套图注意力编码器,用交叉熵损失训练。它不直接控制动作,而是像一个"提示牌",持续告诉网络当前局势下谁最该被优先攻击,潜移默化地引导主策略往集火的方向学习。

论文里特别强调,团队协作行为比如集火攻击,并没有被直接写进奖励函数里强行奖励。研究者担心过度设计奖励会导致奖励工程失控,AI学会一些投机取巧但不真实的取巧行为来骗取奖励分数。他们选择让协作行为通过图注意力、角色分配和这个辅助任务的共同作用自然涌现出来。

这个思路让我想到教小孩打篮球。你可以直接告诉孩子"传球给空位队友能得糖吃",孩子很快会学会传球,但也可能学会一些奇怪的钻空子方式来骗糖吃。另一种做法是让孩子多看比赛录像,反复提醒他注意场上谁最空,时间久了孩子自己会明白传球的意义,而且这种理解更扎实,不容易跑偏。DRG-MAPPO选的是后一条路。

奖励怎么给,细节里的分寸感

整个系统的奖励函数由几部分组成,团队共享的战斗奖励在赢或输时给出大额正负奖励,在击杀或被击杀时给出中等奖励,此外还有基于天线瞄准角和相对距离计算的战术优势奖励,鼓励飞机把机头对准附近的敌人;还有威胁规避惩罚,检测到来袭导弹时给予负向信号,逼着AI做出规避动作;最后是越界惩罚,飞出预设作战区域就要扣分。

这套设计的分寸感在于,它没有直接奖励"配合",而是把每个个体的战术合理性设计好,让配合成为自然结果。这跟前面提到的辅助任务思路是一致的。

实验数据说了什么

论文在一个200公里乘100公里的模拟战场里跑了2v2超视距空战实验,每边两架飞机,各带四发导弹,初始高度3公里,巡航速度180米每秒。仿真环境用C++开发,用GTacview做可视化。

训练2500轮之后,DRG-MAPPO的胜率曲线明显超过了对比的几种方法,包括IPPO、QMIX、标准MAPPO、HAPPO,以及只加了图注意力但没有分层结构的MAPPO+GAT。最终DRG-MAPPO的胜率达到87%,平均奖励收敛到大约950,而其他方法大多卡在500到650之间。

有意思的是前800轮左右,所有方法表现都差不多,都在经历一个"冷启动瓶颈"。这说明单纯靠图结构或者单纯靠分层架构都不足以让系统一开始就领先,真正的分野出现在1250轮之后,DRG-MAPPO才开始把差距拉开。这暗示着图关系建模和分层角色分配这两个模块必须协同发挥作用,单独使用任何一个都无法达到同样的效果。

消融实验部分进一步验证了这一点。研究者分别去掉时间承诺机制、图结构建模、角色分配、辅助任务这四个模块,发现每去掉一个,胜率都会明显下滑,其中去掉时间承诺机制导致的表现波动最为剧烈,证实了角色频繁震荡确实会严重破坏战术一致性。

对抗实验部分,研究者让所有训练好的模型互相打循环赛,每对模型对战200局。DRG-MAPPO在这个交叉对战里平均胜率69.9%,对所有基线都保持优势,这说明它学到的策略不是靠"背对手套路"取胜,而是真正具备了泛化能力。

方法 峰值胜率 平均奖励 交叉对战平均胜率

DRG-MAPPO(本文方法) 87% 约950 69.9%

MAPPO+GAT 中等 约600-650 较低

HAPPO 中等 约500-650 较低

标准MAPPO 较低 较低 较低

QMIX 更低 更低 更低

IPPO 最低 最低 最低

从战术录像里能看到什么

论文里放了几张空战录像截图,值得细说一下。

第一张展示的是诱敌加侧翼包抄战术。被分配为支援者角色的飞机故意保持向前的飞行轨迹,吸引敌人的火力和注意力,这个动作制造出一个战术窗口,让被分配为领队角色的飞机趁机执行侧向机动,绕到一个更有利的攻击角度上。这跟人类空战里经典的"牺牲一个吸引火力,另一个抓机会偷袭"的打法几乎一致,只不过这里没人教它这么做,是训练自己长出来的。

第二张展示的是集火攻击。两架飞机在规避完来袭威胁之后,在目标优先级辅助任务的引导下,同时锁定同一个敌人,从不同角度发射导弹,提高命中概率。

第三张更微妙,原本扮演支援者角色的那架飞机,在威胁消退之后,动态地从防御姿态切换到进攻姿态,并最终成功命中目标。这说明角色分配不是一次分配就固定到底的僵化标签,而是会随着战场态势的变化重新评估,这正是前面提到的时间承诺机制留出的弹性空间在起作用。

写在后面

读到这篇论文时,最让我意外的地方是研究者刻意不去手写"集火攻击奖励"这种看起来最直接的做法。很多做强化学习的人第一反应都是,想让AI学会某个行为,就直接在奖励函数里给它加分。但这篇论文选择绕开这条捷径,靠图注意力、角色分配和目标优先级预测这三者的间接组合,让集火行为自己长出来。这种"不直接奖励结果,而是设计好过程结构让结果自然发生"的思路,其实在教育学和管理学里也很常见,只是没想到在强化学习论文里看到这么明确的表述。

另一个值得琢磨的细节是,时间承诺机制这个设计看似简单,一个固定间隔重新采样角色而已,但消融实验显示去掉它之后系统表现波动最剧烈。这提示了一个容易被忽略的问题,在多智能体系统里,决策频率本身也是一种需要被设计的资源,不是频率越高越灵活就越好,有时候"慢下来,保持一致"反而是稳定性的来源。

这篇论文没有解决的问题也很明显,只在2v2这样小规模场景下验证过,真正的现代空战涉及的飞机数量、传感器种类、通信约束都复杂得多。研究者自己在结尾也提到,未来要探索这套分层范式能不能扩展到更大规模的集群对抗。角色种类目前也只有"领队"和"支援者"两种,现实战术体系里的角色分工要丰富得多,比如电子干扰、诱饵机、指挥节点,这些能不能被同一套框架容纳,还是个开放问题。

如果一群AI真的能在没有人类明确教导的情况下,自己演化出"你去当诱饵,我去偷袭"这种需要信任和牺牲精神的配合,这件事细想起来还挺让人后背发凉的。

Q&A

Q1:DRG-MAPPO是什么?

A:DRG-MAPPO是中科院自动化所团队提出的分层多智能体强化学习框架,全称是分层动态角色图多智能体近端策略优化,用于让多架AI战斗机在空战模拟中学会协同配合,核心是把战场建模成关系图,并让高层策略动态分配领队和支援者等战术角色。

Q2:DRG-MAPPO的胜率有多高,和其他方法比怎么样?

A:在2v2超视距空战模拟中,DRG-MAPPO达到87%的峰值胜率,明显高于IPPO、QMIX、标准MAPPO、HAPPO以及仅加图注意力的MAPPO+GAT等基线方法,在所有模型互相对战的循环赛中平均胜率也达到69.9%。

Q3:DRG-MAPPO里的目标优先级辅助任务有什么用?

A:这个辅助任务让每个智能体预测当前最该攻击哪个敌人,训练信号来自一个综合距离、雷达锁定状态和已跟踪导弹数的评分公式,它和主策略共享编码器,潜移默化地引导系统自然涌现出集火攻击这类协同行为,而不需要在奖励函数里直接奖励协作。

分享至
0赞

好文章,需要你的鼓励

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