反作弊深度解析 - 反恐精英:全球攻势

反作弊深度解析 - 反恐精英:全球攻势

关键洞察

关键洞察

关键洞察

  • 跑步机问题: 传统的基于规则的反作弊是一场永无止境的军备竞赛(即,发布一个检测,眼看作弊开发者绕过它,然后重复)。深度学习通过用数据和算力换取工程时间,打破了这一循环。

  • 你的标签也许已经存在: Valve 的最大突破在于意识到 CS:GO 的 Overwatch 陪审系统多年来一直在悄悄生成带标签的训练数据。在构建流水线之前,先盘点你已经拥有哪些带标签的数据。

  • 数据工程才是真正的工作: 构建 VACNet 的 95% 工作都在于解析回放并构建形状正确的输入序列。真正的模型训练大约只占 1% 的工作量。瓶颈几乎从来不是算法。

  • 人类仍留在裁决循环中: VACNet 的设计目的是改进案件筛选,而不是自动封禁玩家。当后果是给某人的账号留下永久记录时,让人类做最终决定是正确的设计选择。

  • 循环重训练让公开披露也安全: 由于 VACNet 会基于新的 Overwatch 裁决持续重训练,公开它的存在并不会破坏它。人类陪审员会捕捉新适应的作弊模式;模型会在下一轮训练中学会它们。

约翰·麦克唐纳(John McDonald)当时是 Valve 的一名工程师,现在仍是该公司的程序员,在公司工作了 12 年以上后,于 2018 年 3 月的 GDC 上发表了这场演讲,讲解 Valve 如何构建 VACNet——一个旨在检测《Counter-Strike: Global Offensive》中作弊行为的深度学习系统。演讲涵盖了该项目背后的动机、使其成为可能的数据管道、在规模化运行所需的基础设施,以及使其能够抵御对抗性适应的设计原则。

本文将重点讨论反作弊架构。可以把它看作是在一个实时、对抗性环境中应用深度学习的案例研究,其中的经验同样适用于任何存在作弊问题的多人游戏。

先说明一点时间背景:这场演讲早于 Counter-Strike 2;后者于 2023 年 9 月取代 CS:GO 成为线上主游戏。如有必要,我们会注明该系统此后如何演进。

跑步机:Valve 为何想摆脱它

传统反作弊就是手工编写规则。工程师发现一种作弊方式,写出检测逻辑,发布上线,而坏人则绕开它。然后再来一遍。麦克唐纳给这件事起了个名字:"工作的跑步机。" 他承认这是有价值的工作,但也是一种没有终点的投入。

CS:GO 比大多数游戏都更糟。其代码库约有 75–80% 未自 Half-Life 2 以来发生变化,这意味着 2005 年为 Half-Life 2 死斗编写的作弊程序,只需大约 5 到 10 分钟的修改,就仍然可以在 CS:GO 上工作。攻击面巨大。而且,任何一次公开披露检测技术,都会立刻让它失效。作弊开发者在盯着看,等到会议直播结束前,这种方法就会停止工作。

麦克唐纳这样描述 2016 年向 Valve 提出的方案:观看比赛的人能看出正在作弊,他们是在识别一种模式。深度学习非常擅长识别模式。如果你有足够多带标签的输入样本(比赛数据)和输出样本(裁决),就可以训练一个模型,把前者映射到后者。编写传统反作弊的工程师,实际上就是在手工完成这种映射。深度学习可以自动完成它。代价:用数据和算力换工程时间。在 Valve,他们长期工程师短缺,而数据和算力两者都很充足。

突破口:你的带标签数据可能本就存在

任何监督式深度学习项目的核心问题,都是训练数据从哪里来。从零开始搭建标注管道既昂贵又缓慢。Valve 有个近在眼前的捷径。

自 2012 年起,CS:GO 一直运行着一种名为 Overwatch 的同行评审反作弊系统。受信任的玩家会被分配案件(来自被举报玩家的匿名化八回合演示),并被要求就是否存在作弊行为投票。根据陪审员投票,经由朴素贝叶斯模型计算,裁决大约需要 99.8% 的置信度。实际上,定罪通常能达到五个 9 的确定性。陪审员非常谨慎,遵循“排除合理怀疑”的标准。

这个系统已经运行了很多年。虽然没人专门把它设计成这样,但它已经变成了一个大型的带标签训练样本数据库:演示文件与人类裁决一一对应。他们有 X 和 Y,只是此前还没用起来。

这个教训值得细想。在投入构建标注管道之前,值得先问问你的游戏是否已经在某处拥有一个你还没有意识到的带标签数据集。已经有处理结果的审核队列、已确认封禁的玩家举报、同行评审系统——这些都可能是伪装成别的样子的训练数据。

信任分:限制影响范围

在 VACNet 之前,Valve 已经为作弊问题构建了另一个工具:Trust Score,于 2016 年上线。它值得单独成节,因为它解决的是另一个问题。

Trust Score 是一个基于玩家如何与 CS:GO 及更广泛的 Steam 平台互动而训练的模型,用来预测未来被封禁的可能性。该分数作为额外信号,与水平和地图偏好一起进入匹配系统,把信任水平相近的玩家分到一起。

麦克唐纳对 Trust Score 的作用和局限说得很直接:它“不会降低作弊率”,他说。它降低的是“破坏范围”。诚实玩家遇到作弊者的频率会低得多。被怀疑的坏人会被分到彼此之间的大厅里。作弊者仍然在游戏里;只是没出现在你的对局中。

作为一种设计模式,这一区分很有用。抓作弊并封禁是一种手段;在检测和封禁进行时限制他们能影响谁,则是另一种。它们彼此独立,但都能改善玩家体验。

真正的工作是数据工程

麦克唐纳用了一个令人印象深刻的食物类比:深度学习就是绞肉机。你的原始游戏数据就是牛。真正的工作,是把牛变成绞肉机能够处理的统一、尺寸正确的输入。这几乎占了全部工作量。

他估计工作分布大约是 95% 的数据工程、约 1% 的模型训练,以及 4% 的其他所有事情。而且至关重要的是,数据工程本质上就是标准工程工作。解析回放文件。提取每次射击的特征。构建固定大小、结构一致的输入序列。这些都不需要深度学习专长。它们只是规模化的管道工作。

就 VACNet 而言,每个输入单元代表一次射击,包含:所使用的武器、射击结果(爆头、命中其他部位或未命中)、如果命中则包含目标距离,以及视角增量(从开枪前半秒到开枪后四分之一秒这一帧帧之间的垂直与水平瞄准变化)。模型处理的是从八回合窗口中抽取的连续 140 次射击序列,并预测陪审员是否会定罪的概率。

这些具体参数(140 次射击、半秒和四分之一秒的窗口)并没有强有力的分析依据。“基本上纯属随意,”麦克唐纳说。模型并不在意具体数值。重要的是每次的结构都一致。

让人类留在裁决环中

VACNet 不是为封禁玩家而构建的。这个区别塑造了整个架构。

该系统观察比赛,识别它高度确信正在作弊的玩家,并将这些案例提交给 Overwatch。人类陪审员审查这些案例并作出裁决。是否有罪仍由人来决定。VACNet 的作用是提高这些人看到的内容质量:由人类提交的 Overwatch 案件,定罪率只有 15–30%;而由 VACNet 提交的案件,转化率则达到了 80–95%。

其背后的理由是经过深思熟虑的。VAC 封禁是永久性的。它会阻止访问 98% 的 CS:GO 服务器,并以无法撤销的方式在 Steam 账户上留下标记。仅凭自动化置信度就采取这种措施,即使置信度非常高,也会带来麦克唐纳不愿接受的风险,尤其是在边缘案例或新型输入可能产生误报的情况下。模型负责标记。人类负责决定。

对于任何惩罚具有重大且不可逆性质的游戏系统而言,这一设计原则都成立。模型是分诊工具。它不能取代最终裁决。

自我强化的循环:为何公开并不会破坏它

在一场面向游戏开发者、并开启直播的房间里,麦克唐纳用整整四十分钟解释了 VACNet 的工作原理之后,他面对了一个显而易见的问题:他是不是刚把一份路线图交给了作弊开发者?

没有。原因在于架构本身。

VACNet 与 Overwatch 一起在一个持续循环中运行。它提交案件,人类进行裁决,而这些裁决会反馈到下一轮重训练中。如果某个作弊开发者学到了 VACNet 分析的具体时间窗口,并试图在这些窗口内压制作弊信号,人类陪审员仍然会将其识别为作弊并定罪。下一轮训练会纳入这些裁决。模型会学习新的模式。

这些窗口大小本身就是任意的。扩大窗口,只需要在你的 shell 历史中找到重训练命令并按回车。模型重训练大约需要六个小时。一个从零开始构建反模型的作弊开发者,面对的是数月的工作以及一个他们无法解决的数据问题:麦克唐纳指出,“你在深度学习里选什么算法并不重要。真正重要的是更多的数据。”Valve 拥有比任何外部行为者都多得多的带标签数据。

这个循环还意味着系统会随着时间推移变得更稳健,而不是更脆弱。每当某个作弊开发者调整策略,他们就会产生新的行为供陪审员评估。而这种评估又会成为新的训练数据。系统在每一次攻击中成长。

值得注意的是,服务器端的行为分析只是众多范式中的一种,而不是唯一一种。像 Mirror Networking 的 GUARD 这样的源代码级反作弊工具采取的是互补的方法:它不是作为一个单独进程运行、让作弊者能够识别并绕过,而是直接嵌入游戏源代码中,并采用“静默检测”的理念。它不会用可见的封禁提示去正面告知可疑作弊者,而是悄悄地把可疑活动报告给游戏服务器。作弊者并不知道自己已经被标记。信息不对称正是重点。其底层理念与麦克唐纳不公开 VAC 检测的原因相同:一旦作弊开发者知道你在找什么,他们就会开始把它藏起来。

后来发生了什么

自这场 2018 年的演讲以来,VACNet 一直在其所保护的游戏旁不断演进。2023 年 9 月,Valve 推出 Counter-Strike 2,以其取代 CS:GO 成为线上主游戏时,VACNet 也随之而来,如今被称为 VAC Live,并被描述为该系统的第三代。

与麦克唐纳在 2018 年描述的内容相比,最显著的变化是真实时检测。原始的 VACNet 是在比赛结束后将玩家标记出来,供 Overwatch 审查。VAC Live 现在可以在比赛进行中一旦检测到作弊者,就立即取消整场比赛。从批处理分析转向实时推理,正是麦克唐纳在 2018 年所称的“持续进行的工作”的方向。

他所描述的自我强化循环,仍然是系统运作的核心。那条跑步机还在转。只是它不再需要工程师不停地踩上去了。

本文基于并引用了约翰·麦克唐纳在原始 GDC 演讲中的内容,该演讲发布于 GDC Festival of Gaming YouTube 频道。原始内容的所有权利归各自所有者所有。

书写者

Edgegap团队

Get your Game Online Easily & in Minutes

立即开始集成!

轻松在线游戏
且在几分钟内