zoukankan      html  css  js  c++  java
  • 以彼之道,还施彼身——使用机器学习来揪出作弊的玩家

    大家现在都有听过「吃鸡」这个游戏的威名吧!这个本名为「绝地求生·大逃亡」的射击游戏已经成为了当下最火的多人在线游戏,甚至超越了Dota2和CS:GO这些经典大作,变成了游戏玩家中的一个热点话题。

    绝地求生·大逃亡是现在非常火的一个游戏,当然,外挂也非常猖獗

    事实上,从最早的毁灭战士、半条命,到现在的战地、守望先锋以及绝地求生,FPS游戏一直有着蓬勃的生命力,也一直吸引着数以万计的玩家每天在线上厮杀——射击游戏的魅力毋庸置疑,但也并非是那么完美,因为有一个东西一直是所有游戏的梦魇,那就是作弊工具。

    与其他对抗类游戏不同的是,射击游戏的主要较量点并不在于团队策略或是个人战术(至少对于业余玩家如此),而在于个人的操作水平高低。一个大神可以单手把其余玩家虐出心理阴影,而对于天赋一般的普通玩家而言,想短时间提升射击游戏水平就是天方夜谭,那么如何才能体验虐人的快感呢?很简单,买一套作弊工具就好了。

    守望先锋中的自动瞄准作弊工具

    作弊工具是如此的强大,它不仅能帮你在游戏中实现自动瞄准、报告敌方位置等功能,甚至在某些游戏中还能赋予玩家超能力,让你上天入地、刀枪不侵,这对于很多玩家来说的确是莫大的诱惑——当然,对于其他玩家而言就是极度地不公平。因此,越来越多的玩家会去尝试使用作弊工具来打游戏,久而久之,游戏中的正常玩家就会越来越少,整个游戏生态也会逐渐毁灭。

    还记得小时候一起开黑的CS吗?作弊问题几乎毁了这个游戏

    游戏开发商和运营商当然不会坐视不管,重拳打击往往是一些知名厂商的做法,而为了惩戒这些「调皮」的玩家,如何识别出使用了作弊工具的电脑环境就显得尤为重要。关于这一点,我们必须要提一提Valve(CS系列的开发商)的VAC系统(Valve Anti-Cheat System),这个系统内置在Valve的游戏平台Steam之中,对于大多数在线游戏都会自动启用。这个系统的主要运作原理是在游戏运行时查询是否有登记在黑名单之中的、有作弊嫌疑的工具在同时启用,如果检查到这类软件,VAC会自动将用户的账号停用甚至封禁。

    Valve公司推出的VAC系统

    这种办法和我们常见的杀毒软件有些类似,它们共同的一个弊端就是容易被软件所欺瞒,同时对于新生的软件工具没有任何抵抗力——由于其具有这种不健全以及滞后性的特征,我们把这种防御称之为被动防御。当然,其他的游戏公司所采取的反作弊方式可能更老套,一些游戏商会引导玩家进行举报,然后对游戏录像进行筛查,最后在给出审查结果以及决定是否惩罚相关玩家——这种做法无疑效率缓慢,但是为了游戏生态,游戏商不得不花费大量人力物力进行此类工作。

    作弊与反作弊的较量已经持续了数十年了,可为什么我们现在要讨论这个话题呢?这是因为现在视频游戏的相关产业逐渐健全起来,尤其是竞技游戏的奖金水涨船高,仅CS:GO一项游戏的全年总奖金就已经接近一亿美元。在巨额回报的诱惑下,很多人都会铤而走险,甚至在一些重要比赛中使用作弊工具。而鉴于现在很多的游戏赛事都是线上比赛,玩家并不会亲临现场受到监督,因此作弊的风险也会相对较低。

    CS:GO目前是全世界最具影响力的竞技游戏之一

    另一方面,得益于计算机技术与程序算法的发展,作弊工具的能力和伪装能力也越来越强。在以前的游戏中,作弊工具的效果都会非常夸张以至于瞬间就能被其他玩家发现,而现在,优秀的作弊工具会表现得更像一个职业选手,除非是非常有经验的玩家或者是程序分析师,否则一般玩家很难分辨出一个表现优异的角色操控者是人还是算法。

    魔高一尺道高一丈。作为在线游戏的平台提供者、竞技游戏的举旗先锋,Valve公司已经开始研究如何更高效、更及时地鉴别出游戏作弊者,他们给出的答案,就是机器学习。

    机器学习和游戏有着千丝万缕的联系

    这在某种程度上是一种以彼之道,还施彼身的做法——游戏商同样采用计算机算法,来对付那些算法操控的游戏角色。那么,这种做法真的可以奏效吗?机器学习就能解决这个以往只有靠人力才能完成的工作吗?答案是肯定的,Valve对此信心满满,并已经在旗下游戏CS:GO中尝试使用这种反作弊手段。

    这是一种全新的自动性人工智能系统,这个系统与游戏本身紧密关联。系统本身会采集游戏中的一些数据,然后通过数据分析鉴别出产生这些数据的操作是否来自于一个真实的人——这个过程有点类似于我们常用的网页验证码技术,而且毫不意外的是,目前最先进的验证码技术——Google的reCAPTCHA,就是充分利用了机器学习技术来实现高效率和即时性。

    Google的reCAPTCHA人机验证系统

    与传统的机器学习方法类似,这个反作弊系统同样需要使用训练数据来进行模型训练——这个系统的本质其实就是一个二元分类器,因此在运作上与传统的机器学习模型并无明显不同。游戏中的数据是繁杂海量的,因此使用传统方法找出关键数据是无法想象的。而使用机器学习方法,数学模型就能自动通过海量的训练数据找到作弊操作和普通操作与各种游戏数据之间的联系,并将这种联系转化为关于各种特征的权重,并使用这些权重来判断未来的操作属于哪一类。

    但是,仅仅这样做是不够的。正如我们之前讲过的,现在的游戏作弊工具和职业玩家非常难以区分,而如果算法错误地将一个技术高超的职业玩家识别为作弊玩家,那么后果将会相当严重。为了尽可能杜绝这一现象发生,我们需要对算法进行额外的调整。

    CS:GO的一种可用的机器学习流程图

    Valve给出的办法是在识别过程中增加一步人类鉴别过程——这个系统被称为Overwatch系统(很有意思有木有)。当算法认为一个操作有可能是作弊者的时候,会由专业人士来再次进行一次判别(见上图),来确定这个玩家是不是无辜躺枪的。然后,人类的最终判别结果会被传回模型本身用于完善,因此,这个模型会随着测试次数的增多而不断得到提升,最终达到一个令人满意的准确率——也就是不再需要Overwatch系统作为辅助。

    有些作弊工具比如全地图挂就很难通过录像去察觉——因为有些玩家会真的拥有这种大局意识

    机器学习支持下的反作弊程序还会具有各种各样的优势,首先,由于机器学习方法下的反作弊程序可以实现一种「主动打击」,因此传统作弊软件的一些伪装策略会完全失效;而另外,由于模型本身在不断成长,模型对于各种数据的权重判别也在不断变化,因此对于作弊算法而言,想要找到某些漏洞进行尝试性攻击会是非常困难的。

    当然,这一切的研究工作还处于比较早期的阶段,Valve为了实现早期的训练过程,使用了数百台设备、上百万个游戏录像用于分析。而算法的早期成长速度非常缓慢,游戏中高维度、高密集度、高混乱度的数据给算法优化带来了非常多的问题。解决这些问题这不仅需要高质量算法的支撑,也需要这个社区的玩家一起群策群力。

    事实上,我们已经可以在线上比赛中看见机器人的身影,比如图中的Nash其实就是算法在操纵

    作为研究者,Valve同时提到,传统的通过识别软件特征的反作弊程序只会让事态变的越严重——因为如果不具备主动识别性能,反作弊程序将会在这种「军备竞赛」中永远落后于作弊工具,黑客们总会找到各种各样的伪装和优化策略来对抗游戏商,而被动地防御带来的资源消耗是不可估量的。

    游戏一直是机器学习算法一个很好的练武场,我们也希望机器学习算法的成长和进步能够为我们带来一个更美好、更神奇的游戏世界。作为普通玩家,在了解这些前沿科技的同时,最重要的还是从自身做起,不图不挂,素质游戏,自觉维护和谐、公平的游戏环境。

    相关阅读:

    https://medium.com/@SidiPi7/a-study-of-cs-go-and-machine-learning-overview-on-how-machine-learning-can-be-used-to-tackle-the-30c46289972e

  • 相关阅读:
    LeetCode-49. Group Anagrams
    LeetCode-242.Valid Anagram
    LeetCode-239.Sliding Window Maximum
    LeetCode-703. Kth Largest Element in a Stream
    LeetCode-225.Implement Stack using Queues
    LeetCode-232.Implement Queue using Stacks
    LeetCode-25. Reverse Nodes in k-Group
    LeetCode-142.Linked List Cycle II
    LeetCode-141. Linked List Cycle
    LeetCode-24.Swap Nodes in Pairs
  • 原文地址:https://www.cnblogs.com/yangshunde/p/7740078.html
Copyright © 2011-2022 走看看