0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用深度学习提高CSGO用户游戏体验的尝试

zhKF_jqr_AI 来源:未知 作者:胡薇 2018-05-31 16:42 次阅读

事实上这是几个月前的一个PPT演讲。在GDC 2018上,Valve游戏工程师John McDonald介绍了度假社用深度学习提高CSGO用户游戏体验的尝试。之所以说是“提高用户体验”而不是“鉴别开挂行为”,是因为V社这次不仅把AI技术用在了反作弊机制上,还对普通玩家心理进行了透彻研究。

2018年1月Steam游戏人数排行前三名

CSGO中的挂

CSGO(中文名《反恐精英:全球攻势》)是V社于2012年推出的一款第一人称射击团队竞技游戏,它是CS系列的第四部作品,6年来一直深受国内外玩家的欢迎。作为一款FPS游戏,玩家恶意开挂几乎是不可能避免的,相比上图中排名第一的PUBG,其实CSGO里的挂并没有多到人神共愤的程度。

但有挂玩家就会生气,一生气他们就会抱怨,会用脚投票。

根据John McDonald透露的数据,现在CSGO的月活人数有1240万,平均日活约300万,组队时间平均1-2秒。对于一个已经推出6年的游戏,保持这样的数据并稳居Steam榜单前三是不容易的,它离不开开发团队为玩家打造的游戏环境。

可就在2016年,V社收到了铺天盖地的玩家投诉,许多人用发邮件、reddit发帖等方式告状:你们的游戏有很多挂。面对玩家的怒火和无法迅速排查开挂行为的棘手情况,V社有点懵。

CSGO是V社自己开发的游戏,它自带官方VAC系统,能对开挂者实施高效封禁——但火爆的游戏背后总伴随经济利益,许多人针对VAC开发了不少能绕过监控的挂,或是看准V社喜欢秋后算账的风格找漏洞,既夺走了心存侥幸的玩家的账号,也毁掉了正常比赛的玩家的游戏体验。

时至今日,许多人在调侃CSGO“已凉”时都不忘把“挂太多”拉出来重点批评一下。所谓爱之深、责之切。他们对游戏的热爱是真实的,但他们对外挂的憎恶也是深入骨髓的。而令人无奈的一个现实是,制作一个CSGO外挂的成本非常低,如果某人还保留着当初《半条命2》的外挂,他就会发现这个挂居然也可能继续在CSGO里生效。

CSGO和深度学习

2015年,CSGO的Overwatch正式上线(别想歪!我真的没笑),这是一个监督功能,允许获得裁决资质的选手可以通过观看疑似作弊选手的Demo来判断其是否作弊或者调整了游戏参数。如果玩家发现存在开挂行为,他们可以把Demo提交给协调员进一步审核,之后官方会跟进处理并反馈结果。

Overwatch本身可以初步判断玩家有没有开挂,它背后的算法是朴素贝叶斯,系统先为开挂找到一个阈值,然后对结果进行分类。但实践证明,这个基于朴素贝叶斯的系统太宽容了,它只能辨别出非常明显的开挂行为,然后把大多数微妙的Demo——漏网之鱼反馈给真人。

对于玩家而言,也许Overwatch颇为鸡肋,但在深度学习眼里,这就成了不可多得的数据来源。

模型简介

V社开发的反作弊深度学习系统叫VACnet。因为面向序列处理任务,它被设计成一个时间步长为140的GRU RNN,包含一个输入层(256个神经元)和4个隐藏层(每层256个神经元)。网络使用的激活函数是ReLU,损失函数是二元交叉熵,优化算法是Adagrad。

VACnet在Overwatch搜集的数据中训练,其中包含玩家提供的内容和官方收集的内容,是个大型优质数据集。虽然现在也有用深度学习生成数据的方法,但这种做法容易让神经网络钻空子,所以开发人员用的还是真实的游戏Demo。

模型的输入不是常规的长向量,这里他们把140次射击当做一个序列,按顺序记下每个视频帧的所有信息。这些输入被称为(X,y),其中X就是我们常说的特征,它包括用了什么武器、射击后的结果、(如果击中)目标距离有多远、瞄准角度调整用时等。训练到最后,模型需要能拟合X数据并反复验证学习质量,直到输出最佳结果。

推断和硬件

完成训练后,模型就要被用于推断(馈送)。

John McDonald把这一过程类比成制作牛肉汉堡。当开发人员面对Overwatch时,他们手中没有现成的牛肉肉泥,而是一头不断吃草长胖的牛。为了让数据能为深度学习模型所用,开发人员花了95%的时间和精力把牛切成牛肉——数据,然后把剩下的1%用于把牛肉搅碎——深度学习,4%用于制作汉堡——训练模型。

据介绍,V社平均每天收集60万场5v5比赛,每场比赛耗时4分钟,一共是240万分钟CPU耗时(一天)。然而一天只有1440分钟,这也就是说,为了达成目标,他们至少要购买1700块GPU。这时,玩家们献给G胖的供奉就开始发挥作用了——他们一共买了3456块CPU。下图是处理器的冰山一角,它包含64个刀片式服务器,每个刀片有54个CPU核心、128GB RAM,仅用于模型推断。

按照之前V社制定的反作弊逻辑:玩家举报——协调员筛选——玩家裁定——开挂/没开挂,现在他们有了VACnet,举报环节就又增加了一个“VACnet举报”。据了解,在所有举报中,玩家举报的开挂证实率为15-30%,而且种类非常丰富;而VACnet的开挂证实率高达85%-90%,但种类相对单一。

效果评价

正如之前所述的,VACnet的效果是令人满意的,尽管缺乏灵活性和通用性,但它至少找出了大部分开挂者的“罪证”。如下图所示,刚被加入游戏反作弊机制中时,它就小幅提高了系统检测开挂数的数量,加入更多训练数据后,它在2018年前后又形成了一个剧增的峰值。而且就实际应用来看,从VACnet提出至今,它还没有误判过一起作弊事件,当然最后的真人检测也在其中发挥了重要作用。

从用户反馈来看,这个深度学习尝试也取得了史无前例的成功。自从引入Overwatch和VACnet以来,在reddit上抱怨开挂的CSGO玩家数大幅降低,仅为2016年高峰期的1%。这种情况将有利于老玩家的存续和新玩家的进驻,也是V社所喜闻乐见的。

但VACnet真的很完美吗?其实不尽然。除了之前提到了它似乎只能识别某几种开挂行为,它还有一个更严峻的缺点。训练时,当完成“举报——协调员筛选——玩家裁定——开挂/没开挂”这一流程后,为了保证模型的学习效果,经真人裁定的数据会被再次馈送进模型进行学习。

这就引出一个问题,如果有人开发了一个挂,它能在前几枪自描、锁头,后几枪回归正常,那系统该怎么判断?如果是个真人裁判,他肯定会想:emm,这货有问题,肯定开挂了。但机器不知道这样的判断依据,它只能把它标成开挂,然后同时从开挂的时间段和没开挂的时间段内去强行学习开挂依据。这会导致模型性能变差。

针对这个问题,目前V社找到的补救方法是添加一个自动的重新训练功能,它能修补启发式算法带来的漏洞。二是建立一个全新的没有经验的模型,由它来拓展开挂行为检测范围,增加系统能识别的开挂种类。第三则是把VACnet应用到其他steam游戏上,追求泛化通用化。

小结

John McDonald认为,深度学习是一种新兴涌现的技术,它将改革传统的反作弊方式。V社现在已经把深度学习用于反开挂、反作弊和Dota2英雄选择等,而其中最受关注的就是Dota2的“大老师”。

就目前而言,玩家无需担心有人用深度学习技术开发对抗VACnet的工具,因为V社手里掌握着其他人难以想象的游戏数据,对于深度学习来说,数据越多,模型性能越好,这是毫无疑问的。唯一需要担心的一点是,这个用于训练的数据集是从比赛里收集的,有人可能会恶意污染数据。虽然似乎人们可以一眼分辨出这个人有没有开挂,但如果外挂能做到欺骗玩家,那它也能骗过VACnet,并干扰它的训练和学习。

综合整个演讲,我们可以下这么一个结论:VACnet是有效的,但它的反作弊能力并没有我们想象中的那么突出,它还是不能做到完全杜绝外挂。如果一个反作弊系统连玩家有没有作弊都分辨不出来,那它的开发者其实并没有消灭外挂的决心,而只是关心玩家的游戏体验。

事实上这也正是VACnet成功的地方,它立竿见影地减少了投诉帖子数量,稳定住了玩家的心,让CSGO稳居玩家活跃榜的前三位。当玩家们再次谈及游戏里的开挂行为时,他们也会乐于讨论V社在反作弊上的努力,并褒扬深度学习的实际效果。

对于一个普通玩家来说,这样的结果是喜是忧呢?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 深度学习
    +关注

    关注

    73

    文章

    5492

    浏览量

    120969

原文标题:V社:用深度学习检测CSGO中的开挂行为

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Nanopi深度学习之路(1)深度学习框架分析

    的初学者。日记目标是构建深度学习环境,使用的是TensorFlow后端的Keras,Keras 是一个 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者
    发表于 06-04 22:32

    深度学习与数据挖掘的关系

    ;而深度学习使用独立的层、连接,还有数据传播方向,比如最近大火的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能,让机器认知过程逐层进行,逐步抽象
    发表于 07-04 16:07

    什么是深度学习?使用FPGA进行深度学习的好处?

    使用FPGA进行深度学习推理。事实上,微软的“ Project Brainwave ”在云端使用 FPGA 进行推理,并宣布将搜索引擎中 RNN 计算的延迟和吞吐量提高了 10 倍以上。用户
    发表于 02-17 16:56

    深度学习应用入门

    深度学习技术 这一轮AI的技术突破,主要源于深度学习技术,而关于AI和深度学习的发展历史我们这里
    发表于 09-30 14:35 2次下载
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>应用入门

    深度学习科普文:最通俗易懂 从老虎机到电子游戏

    机器学习和数据科学的专家Emmanuel Ameisen分享了自己对深度学习的理解,简明扼要的方式为大家讲述了深度
    的头像 发表于 06-12 19:00 5041次阅读

    深度学习是什么?了解深度学习难吗?让你快速了解深度学习的视频讲解

    深度学习是什么?了解深度学习难吗?让你快速了解深度学习的视频讲解本文档视频让你4分钟快速了解
    发表于 08-23 14:36 16次下载

    如何使用深度学习执行文本实体提取

    随着近期深度学习领域快速发展,我们可以将这些算法应用到 NLP 任务中,并得到准确率远超传统方法的结果。我尝试过分别使用深度学习和传统方法来
    的头像 发表于 12-25 19:15 631次阅读

    汽车背后的故事 通过深度学习提高和发展车辆感知

    汽车背后的故事 通过深度学习提高和发展车辆感知
    发表于 11-01 08:24 2次下载
    汽车背后的故事 通过<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>提高</b>和发展车辆感知

    读懂深度学习,走进“深度学习+”阶段

    人工智能的概念在1956年就被提出,如今终于走入现实,离不开一种名为“深度学习”的技术。深度学习的运作模式,如同一场传话游戏。给神经网络输入
    的头像 发表于 01-14 23:34 867次阅读
    读懂<b class='flag-5'>深度</b><b class='flag-5'>学习</b>,走进“<b class='flag-5'>深度</b><b class='flag-5'>学习</b>+”阶段

    什么是深度学习算法?深度学习算法的应用

    什么是深度学习算法?深度学习算法的应用 深度学习算法被认为是人工智能的核心,它是一种模仿人类大脑
    的头像 发表于 08-17 16:03 2101次阅读

    深度学习框架是什么?深度学习框架有哪些?

    深度学习框架是什么?深度学习框架有哪些?  深度学习框架是一种软件工具,它可以帮助开发者轻松快速
    的头像 发表于 08-17 16:03 2667次阅读

    深度学习框架的作用是什么

    的任务,需要使用深度学习框架。 深度学习框架是对深度学习算法和神经网络模型进行构建、调整和优化的
    的头像 发表于 08-17 16:10 1532次阅读

    深度学习框架和深度学习算法教程

    深度学习框架和深度学习算法教程 深度学习是机器学习
    的头像 发表于 08-17 16:11 1040次阅读

    深度学习服务器怎么做 深度学习服务器diy 深度学习服务器主板什么

    深度学习服务器怎么做 深度学习服务器diy 深度学习服务器主板
    的头像 发表于 08-17 16:11 831次阅读

    Pytorch深度学习训练的方法

    掌握这 17 种方法,最省力的方式,加速你的 Pytorch 深度学习训练。
    的头像 发表于 10-28 14:05 141次阅读
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>学习</b>训练的方法