[游戏] Agentank 李尔,一个 18k 参数的蒸馏模型如何逼近头部选手,挤进王者局

与前排选手🛡️的思路不同,我一开始也丢给了大模型来出策略,但发现策略并不完备且及其消耗 token ,加上我本身的背景是算法,也划水过几次 luxai 的比赛,见识过模仿学习和强化学习在游戏 Agent 所发挥的作用,所以我的策略是让模型退居二线,目标是开发一套可迭代的机器学习模型,或者说当下时髦的...
[游戏] Agentank 李尔,一个 18k 参数的蒸馏模型如何逼近头部选手,挤进王者局
[游戏] Agentank 李尔,一个 18k 参数的蒸馏模型如何逼近头部选手,挤进王者局

与前排选手🛡️的思路不同,我一开始也丢给了大模型来出策略,但发现策略并不完备且及其消耗 token ,加上我本身的背景是算法,也划水过几次 luxai 的比赛,见识过模仿学习和强化学习在游戏 Agent 所发挥的作用,所以我的策略是让模型退居二线,目标是开发一套可迭代的机器学习模型,或者说当下时髦的说法:蒸馏一套模型。

简单来说,就是不断学习击败我的选手,蒸馏它们的策略,让模型权重来拟合头部,而不是反复丢 bad case 给 LLM 来做细微的改动。当然,初始化的时候,用的就是大模型那版。模拟了数万次可能的行径,然后加上线上的失败案例,做一个模仿学习。

但由于我们线上能发布的是 js ,无法加载机器学习模型,我提交的是一个数组矩阵,整体文件在 100-200k 左右。这种背景下,NN 的上限其实是被约束了的。你无法构造一个强力的 Unet 模型,来拟合所有击败你的对手,只能说是近似精度。

另外,有个策略至关重要:Action mask 。面对一些 base case ,我没有写规则要求坦克怎么走,而是不要怎么做。屏蔽掉可能导致 game over 的动作,剩下的采用模型输出的动作。这个经验,在模仿学习、强化学习的案例中,都十分重要,能带来显著提升。(这和调教大模型,也是一个道理:告诉 LLM 不要做什么,胜过告诉它应该做什么。)

整个过程,还是用到了大模型。我这里混用了 codex gpt5.5 和 cursor 里面的 opus4.6 以及 gemini3.1pro 。大模型在这里扮演的角色是:数据处理和编排整个训练流程。Action mask 也是大模型来写了,我负责观测极端不应该的行为,引导模型给出抽象的、不过拟合的 mask 。

结论:如大家所见,模仿学习这种蒸馏做法,是有用的。我的最好轮次,能击败前 50 名中的大概 23 位。能站在王者局一段时间。但同样,这个方式也有不足:前排有眩晕技能的并不多,模型拟合出来的结果就是不怎么使用技能。而技能往往某些场合决定了成败。另外就是:模仿只能逼近,无法超越

目前我线上这版 v84 ,采用 49 维特征、近万场对战、230 万帧样本,5 层 MLP ,合计约 18k 参数。欢迎 v 友切磋: https://agentank.ai/share/tanks/tnk_Ebeq1eaaD7VHteiXT

以上抛砖引玉,感谢各位阅读。

来源: v2ex查看原文