这算不算,买了个游戏给电脑玩?
最近,多少天命人,晚上握着金箍棒,直捣天宫;白天握着地铁杆,直达公司。
就在万千网友为那只黑猴子打得昏天黑地时,科技博主「图灵的猫」整起花活儿,开发了一个 AI 吗喽,让它直面天命。
据博主介绍,歇菜了 1000 次,AI 吗喽终于击败了首个 BOSS—— 广智。
这下子,社交媒体炸了锅,网友怒赞:
花钱买游戏,再花个钱买 AI,然后坐着看电视。 AI 制作游戏,AI 玩游戏,拜拜嘞人类!
可以给我写个 AI 吗?我想让它操控我那破败不堪的人生。
AI 干这个相当于上班吧。
把这个 AI 当作 Boss,让玩家挑战它,后期 AI 是不是就无敌了?
截至目前,该视频在抖音已有 13.2 万次点赞,并一举登上多个社交平台的热搜榜。
-1-
一个神奇的脑回路
事情的起因,源自一个神奇的「脑回路」。
两个多月前,《黑神话・悟空》还没上线,早已预购的博主急得抓耳挠腮,挠着挠着,挠出一个想法:
孙悟空是从石头缝里蹦出来的,属于硅基,而 AI 依赖的芯片,也是硅基。 这四舍五入,AI 不就相当于孙悟空的后代?
于是,博主尝试开发一个 AI 吗喽,让它参与到天命人的旅途中,找回自己的大圣神通,甚至通关整个游戏。
这个事儿吧,说起来简单,干起来费劲。
和现在几行对话就能调用的 AI 不同,ARPG 这类实时决策且状态极其复杂的三维空间游戏,属于传统 AI 领域的逆天工程。
因为人们无法告诉 AI 哪是攻,哪是防,哪是苇名弦一郎,更无法指望它自己通关。
而且,这背后涉及大量特征和系统设计,开发都以月计,再加上没什么实际用途,因此几乎没人愿意干这费力不讨好的活儿。
不过,该博主就是这么「闲得慌」,在游戏发布前的漫长等待中,开始手搓 AI 吗喽。
-2-
第一关:跑图
让 AI 吗喽完成天命之旅,面临的第一个挑战就是跑图。
为此,博主给它实装了一套基于多模态大模型、可以自动探索地图的开源框架,通过记忆、推理、技能和行动规划等模块,AI 就能解析画面,进行基本的探索与交互。
对于第一个关卡黑风山来说,整个流程趋近于线性,AI 基本可以完成。
而到了浮屠界这类逆天地图,AI 两眼一抹黑。
博主想到了一个解决方法,就是加入让 AI 远离悬崖的地形约束,但大模型的作用也仅限于此。
因为有限的输入输出让模型无法给出精准的战斗决策,而且,从接收信号到反回动作,大模型需要好几秒,相当于顶着几千延迟的高 ping 战士。
在动作游戏中,这显然是不能接受的,即便有法术,《黑神话》里的部分 boss 容错也并不比魂游低。
-3-
第二关:斗战神
为了解决大模型延迟问题,博主为 AI 吗喽开发了一套叫做「斗战神」的实时战斗系统。
人类玩游戏是通过眼睛观察屏幕,再由大脑将指令信号传递到肢体,最后借助键盘、手柄等交互设备,与游戏进行互动。
AI 虽然不需要交互设备,但学习游戏的过程与人类是一致的,换句话说,它本就是根据生物的学习机制抽象演化来的智能算法。
「斗战神」正是基于这一思路来构建的。
它有几个不同模块,首先是视觉。
和风灵月影这类程序不同,斗战神并不会直接读取或修改程序,而是和人一样,通过画面来判断,需要先看清敌人是谁、位置在哪。
博主的方法是,通过每 n 毫秒一次的眨眼频率,来获取屏幕上的帧画面,Resize 后实时分割截取敌人的 RGB 图像,喂给视觉网络,以获得当前帧的状态。
通过它,AI 就能计算敌人的位置、姿态和可能的攻击方式,并做出应对。
而血条棍式和法术 CD 等状态,则直接通过框定区域内的像素值进行识别。
比如法术 CD 只有明暗两种分类,而左下角的葫芦则根据次数分为多类。
有了眼睛,接下来就是交互。
博主通过映射脚本模拟键盘按键信号,让 AI 可以和游戏交互。
最后就是重头戏战斗。
为了让大家更好理解,博主举了一只名叫「福福」的猫的例子。
这只名叫「福福」的猫,是怎么学习说话的呢?
按下零食按钮后获得食物,对于福福来说就是正反馈,而不听话被主人责备,就是负反馈。
这就是一种简单的学习机制,叫做 Reinforcement Learning(强化学习)。
简单来说,就是让智能体学习,在不断变化的环境中,通过采取不同行动来最大化收益。
所谓收益,其实就是环境对智能体的动作给出的奖励或惩罚。
比如,使 Boss 掉血或成功闪避,AI 就会获得微奖励,而自己掉血则施加惩罚等。
根据这些反馈来更新模型,AI 就能学会如何更好地出招。
当然,动作游戏远比按按钮要复杂得多,当前节点的选择,会对后续所有状态产生影响,因此具备无穷多的可能性。算法要做的,就是在不更改游戏程序的前提下,找到最有可能获胜的那条路。
那么,问题来了,怎么找呢?
数学给出了答案,优化目标函数。
以博主使用的 DQN 和 PPO 模型为例。
我们不需要知道这些犹如鬼画符一样的公式的具体含义,而是可以把它想象成下山:
山间布满迷雾,路径无数,我们只能每走几步就驻足观察。根据当前走过的路,来推算下一次的方向和步数,进而找到最优的下山之路。
这就是它的学习原理。
以上,AI 吗喽的架构就搭载完毕。
它有 6 组解耦合的根模块,分别是捕捉画面的「识」、预测出招的「算」、负责交互的「触」、用于跑图的「探」、记录数据的「聚」以及最核心的「斗战」。
而从看到敌人再到做出动作,中间经过图像识别、状态计算、招式决策、参数更新和推理交互等环节,斗战神的反应时间可以做到 0.2 秒,比大模型要快很多倍。
-4-
第三关:AI 吗喽大战首个 Boss
六根合一,接下来就是它降妖除魔、踏碎凌霄的天命之旅。
但不幸的是,这位天命 AI 出师未捷身先死,殒命于西行路上的一只小妖。这说明在训练初期,AI 并不比一只用脚玩电脑的吗喽好到哪里去。
但它的可怕之处在于自主学习的能力。
在经历了十几次死亡后,AI 就自行掌握了基本的战斗技巧,利用移动、轻攻击和闪避这三个有限动作,和小怪打得有来有回。
有趣的是,博主试着调高了「保留血量」这个动作的奖励,AI 竟然还学会了如何逃课。
随后的前进路上,AI 吗喽遇到了第一个难题,精英怪。
精英怪的强度明显更高,为了更快获胜,博主在轻棍之上加入了多项闪避和重击等新技能,但这时出现了新问题。
动作变多后,模型收敛反而变差了。
于是,博主尝试了 dropout,一种减少网络复杂性给模型减负的方法。
之后,AI 顺利击杀了鸦香客。
随着剧情推进,它遇到了西行路上的第一难,货真价实的关卡 Boss—— 广智。
毫无疑问,一开始 AI 很快被广智速通。
广智的技能,无论是起手速度还是机制,都明显上了一个台阶,原先的斗战模组已经不够用了。
怎么优化?
首先要改进的是躲避能力,让 AI 更好地应对招式。
博主先试着加大了掉血的惩罚,结果滑稽的一幕出现了,AI 直接放弃了攻击,开始一直逃跑。
这背后原因很简单。由于进攻奖励不够,AI 自然更倾向于最低成本的方式 —— 跑路 —— 来避免惩罚。
对症下药,博主很快想到了解决办法。
首先提高 boss 掉血的正向奖励,让 AI 更具攻击性。
同时设定线性奖励衰减,就是每次逃跑的奖励都会减少,甚至变为负,直到成功攻击到敌人后才会重置,以此来避免持续的躲避动作。
几十次迭代后,AI 已经可以打掉广智 30% 的血量了,虽然进步斐然,但还是无法击败他。
博主又发现,广智的最大特点,就是几乎所有位移都是靠技能完成,会有明显前摇,只要能捕捉到这个起手式,AI 就可以完美识别。
原本的视觉方案是 3 层 CNN 卷积 + 全连接,但现在有个问题,浅层卷积网络太小,无法充分提取细微的前摇信息,简单来说,就是「脑子不够用了」。
一个办法是直接给脑子扩容,增加网络深度,但这样又会导致模型变慢,甚至影响拟合。
怎么办?
博主又想到了预训练。
打个比方,我们在做数学题时,需要从 1+1=2 开始从头学一遍吗?当然不用,因为初等数学的知识我们已经学过了。
同样的,预训练就相当于我们用一个大脑提前学习基础知识,考试时交给另一个小脑做题即可。
基于此,博主加入了更深层的残差网络 ResNet,通过预训练让它更好地提取招式,实际决策中由训练好的网络,得到当前画面的 embedding 向量表征。
通俗来说,就是把涵盖大量信息的画面,经过压缩后传给可快速决策的小脑模型。
现在对于招数的识别,AI 已经足够强了,但攻击效率还不够高,经常处于被动挨打的局面,博主又想到一个优化思路 —— 组合。
原本的攻击方式只有轻棍、重棍,但可以打出更高伤害和硬直的组合技,显然收益更高。
因此博主试着把组合技作为一个信号,引导 AI 去连击,比如轻棍三式 + 翻滚,两轻一重破棍式等,效果相当不错。
考虑到技能形态的变化,AI 在前期一直使用的是劈棍式,而随着技能点增长,流派增多后,AI 还会学习到大量不同组合。
当 boss 被打出硬直(硬直是指角色在受到攻击或使用特定技能时,暂时无法进行正常操作或移动的状态),通常会有好几秒输出空间,博主也试着加入了硬直判定的逻辑,如此一来,AI 就能结合连击稳定进行追击,打出更多伤害。
据博主介绍,优化后的 AI 吗喽有好几次都差点通关。
进一步分析后,他发现由于动作变多,体力条消耗尽后,AI 还是会尝试攻击,影响后续的状态判定。
因此博主又加入了针对体力条的优化,让 AI 在体力条接近为空时,主动拉开距离恢复体力。
最后为了战斗更优雅,博主还为斗战神加入了一个法术模组 —— 定身术。
定身和闪避都属于非攻击类的正向收益,但定身完成后可以接一套连击,显然能让 AI 获得更高的奖励。
经过多次优化的 AI 吗喽,在被虐 N 次后,终于打败了广智。
视频链接:https://mp.weixin.qq.com/s/DvvnxI_wpv3lpA6AOwRFVQ
据博主介绍,在《黑神话・悟空》发售前的一个多月里,他们在只狼和法环这两款类猴游戏上,做了大量开发测试。
从一开始的被虐,到跟弦一郎拼刀,再到挑战大树守卫,这个过程中积累了很多踩坑经验,所以 AI 才能在这么短时间内完成训练,并通关广智。
截至视频发布前,AI 吗喽已经开始与白衣和大头鏖战。
看完博主制作 AI 吗喽全流程,干货满满,正如网友所说,这就是纯纯的一篇大论文。
-5-
网友的评论「亮」了
有着《黑神话》和 AI 的双重流量加持,该博主的 AI 吗喽,一举登上各大社交平台的热搜,吸引万千网友围观。
有交流技术的。
网友 plusSeven 询问博主的硬件配置和训练时间,要立个项目给学生试试。
据博主「图灵的猫」介绍,他们没有 A100 这种高算卡,基本在 3070 附近。RESNET 效果不错,但黑神话的画面偏暗,加上虚幻五的一些小毛病,所以还是会有识别错误,导致很难无伤。
博主还提出一个优化思路,是加 openpose 这类姿态识别,不过由于时间原因,他们并未尝试。
至于投入的成本,主要是时间和显卡,还有买游戏的钱。
有网友好奇打广智的模型是否能泛化到虎先锋上,对于这个答案,大家众说纷纭,莫衷一是。
还有网友争论这到底算是 AI 还是游戏外挂。
也有网友虽然听不懂博主的科普,但仍不明觉厉:
博主表示,如果时间允许,他们会让 AI 吗喽走完这趟西行之旅,并将代码开源出来。
虽然目前 AI 只击败了一个 boss,但它的成长过程以及未来的潜力,远比游戏进度更有意思。