玩赛车游戏的 AI 们现在已经不仅仅是图快图爽了。他们开始考虑战术规划,甚至有了自己的行车风格和“偏科”项目。
比如这位只擅长转弯的“偏科”选手,面对急弯我重拳出击,惊险漂移,面对直线我唯唯诺诺,摇晃不停:
还有具备长远目光,学会了战术规划的 AI,也就是这两位正在竞速的中的绿色赛车,看似在转弯处减缓了速度,却得以顺利通过急弯,免于直接 GG 的下场。
还有面对不管是多新的地图,都能举一反三,跑完全程的 AI。看起来就像是真的在赛车道上学会了思考一样。(甚至上面所说的那位偏科选手还在不懈努力后成功逆袭了)
这项训练结果一经公布,便吸引了大批网友的围观:
强化学习让 AI 学会“长远考虑”
训练赛道来自一款叫做《赛道狂飙》(Trackmania)的游戏,以可深度定制的赛道编辑器闻名于玩家群体。
为了更大程度上激发赛车 AI 的潜力,开发者自制了这样一张九曲十八弯的魔鬼地图:
这位开发者名叫 yoshtm,之间就已经用 AI 玩过这款游戏,一度引发热议:
一开始,yoshtm 采用的是一种监督学习模型,拥有 2 个隐藏层。
模型包含了 16 个输入,包括如汽车当前速度、加速度、路段位置等等,再通过神经网络对输入参数进行分析,最终输出 6 种动作中的一种:
基于这一模型架构,开发者让多只 AI 在同一张地图上竞争。通过多次迭代,不同 AI 的神经网络会出现细微的差别,结果最好的 AI 将最终脱颖而出。
这种方法确实能让 AI 学会驾驶,不过也带来了一个问题:AI 常常只能以速度或最终冲线的时间等单一指标来评估自己,难以更进一步。
这次,时隔两年后的赛车 AI,不仅学会了从长远出发制定策略(比如在急弯时对速度作出调整),还大幅提高了对新地图的适应性。
主要原因就来自于开发者这次引入的新方法,强化学习。这种方法的核心概念是“奖励”,即通过选择带来更多奖励的行为,来不断优化最终效果。
在训练赛车游戏中的 AI 时,yoshtm 定义的奖励很常规:速度越快奖励越多,走错路或掉下赛道就会惩罚。
但问题是,一些行动,比如在临近转弯时的加速或许能导致短期的正面奖励,但从长远来看却可能会产生负面的后果。
于是,yoshtm 采用了一种叫做 Deep Q Learning 的方法。
这是一种无模型的强化学习技术,对于给定状态,它能够比较可用操作的预期效用,同时还不需要环境模型。
Deep Q Learning 会通过深度网络参数 的学习不断提高 Q 值预测的准确性,也就是说,能够使 AI 在赛车游戏中预测每个可能的行动的预期累积奖励,从而“具备一种长远的策略目光”。
随机出生点帮 AI 改正“偏科”
接下来开始进行正式训练。
yoshtm 的思路是,AI 会先通过随机探索来尽可能多地收集地图数据,他将这一行为称之为探索。探索的比例越高,随机性也就越强,而随着比例降低,AI 则会更加专注于赢取上述设置的奖励,也即专注于跑图。
不过,在训练了近 3 万次,探索比例降低到 5% 时,AI“卡关”了:
核心问题是 AI 出现了“偏科”。
由于前期经历了多个弯道的跑图,所以 AI 出现了过拟合现象,面对长直线跑道这种新的赛道类型,一度车身不稳,摇摇晃晃,最终甚至选择了“自杀”:
要如何解决这个问题呢?
yoshtm 并没有选择重新制作地图,而是选择修改 AI 的出生点:
每次开始训练时,AI 的出发点都将在地图上的一个随机位置生成,同时速度和方向也会随机。
这一办法立竿见影,AI 终于开始能够完整跑完一条赛道了。
接下来就是进行不断训练,最终,开发者 yoshtm 和 AI 比了一场,AI 在这次跑到了最好成绩:6 分 20 秒。
虽然还是没有真人操控的赛车跑得快,不过 AI 表现出了较强的场地适应性,对草地还是泥地都能立马举一反三。
yoshtm 最后这样说道:《赛车狂飙》本来就是一个需要大量训练的游戏,AI 当然也如此。至少我现在很确定,这个 AI 可以打败大量的初学者。
参考链接:
[1]https://www.youtube.com/watch?v=SX08NT55YhA
[2]https://www.reddit.com/r/Games/comments/tcj32m/ai_learns_to_drive_from_scratch_in_trackmania/