事實(shí)上這是幾個(gè)月前的一個(gè)PPT演講。在GDC 2018上,Valve游戲工程師John McDonald介紹了度假社用深度學(xué)習(xí)提高CSGO用戶游戲體驗(yàn)的嘗試。之所以說是“提高用戶體驗(yàn)”而不是“鑒別開掛行為”,是因?yàn)閂社這次不僅把AI技術(shù)用在了反作弊機(jī)制上,還對(duì)普通玩家心理進(jìn)行了透徹研究。
2018年1月Steam游戲人數(shù)排行前三名
CSGO中的掛
CSGO(中文名《反恐精英:全球攻勢》)是V社于2012年推出的一款第一人稱射擊團(tuán)隊(duì)競技游戲,它是CS系列的第四部作品,6年來一直深受國內(nèi)外玩家的歡迎。作為一款FPS游戲,玩家惡意開掛幾乎是不可能避免的,相比上圖中排名第一的PUBG,其實(shí)CSGO里的掛并沒有多到人神共憤的程度。
但有掛玩家就會(huì)生氣,一生氣他們就會(huì)抱怨,會(huì)用腳投票。
根據(jù)John McDonald透露的數(shù)據(jù),現(xiàn)在CSGO的月活人數(shù)有1240萬,平均日活約300萬,組隊(duì)時(shí)間平均1-2秒。對(duì)于一個(gè)已經(jīng)推出6年的游戲,保持這樣的數(shù)據(jù)并穩(wěn)居Steam榜單前三是不容易的,它離不開開發(fā)團(tuán)隊(duì)為玩家打造的游戲環(huán)境。
可就在2016年,V社收到了鋪天蓋地的玩家投訴,許多人用發(fā)郵件、reddit發(fā)帖等方式告狀:你們的游戲有很多掛。面對(duì)玩家的怒火和無法迅速排查開掛行為的棘手情況,V社有點(diǎn)懵。
CSGO是V社自己開發(fā)的游戲,它自帶官方VAC系統(tǒng),能對(duì)開掛者實(shí)施高效封禁——但火爆的游戲背后總伴隨經(jīng)濟(jì)利益,許多人針對(duì)VAC開發(fā)了不少能繞過監(jiān)控的掛,或是看準(zhǔn)V社喜歡秋后算賬的風(fēng)格找漏洞,既奪走了心存僥幸的玩家的賬號(hào),也毀掉了正常比賽的玩家的游戲體驗(yàn)。
時(shí)至今日,許多人在調(diào)侃CSGO“已涼”時(shí)都不忘把“掛太多”拉出來重點(diǎn)批評(píng)一下。所謂愛之深、責(zé)之切。他們對(duì)游戲的熱愛是真實(shí)的,但他們對(duì)外掛的憎惡也是深入骨髓的。而令人無奈的一個(gè)現(xiàn)實(shí)是,制作一個(gè)CSGO外掛的成本非常低,如果某人還保留著當(dāng)初《半條命2》的外掛,他就會(huì)發(fā)現(xiàn)這個(gè)掛居然也可能繼續(xù)在CSGO里生效。
CSGO和深度學(xué)習(xí)
2015年,CSGO的Overwatch正式上線(別想歪!我真的沒笑),這是一個(gè)監(jiān)督功能,允許獲得裁決資質(zhì)的選手可以通過觀看疑似作弊選手的Demo來判斷其是否作弊或者調(diào)整了游戲參數(shù)。如果玩家發(fā)現(xiàn)存在開掛行為,他們可以把Demo提交給協(xié)調(diào)員進(jìn)一步審核,之后官方會(huì)跟進(jìn)處理并反饋結(jié)果。
Overwatch本身可以初步判斷玩家有沒有開掛,它背后的算法是樸素貝葉斯,系統(tǒng)先為開掛找到一個(gè)閾值,然后對(duì)結(jié)果進(jìn)行分類。但實(shí)踐證明,這個(gè)基于樸素貝葉斯的系統(tǒng)太寬容了,它只能辨別出非常明顯的開掛行為,然后把大多數(shù)微妙的Demo——漏網(wǎng)之魚反饋給真人。
對(duì)于玩家而言,也許Overwatch頗為雞肋,但在深度學(xué)習(xí)眼里,這就成了不可多得的數(shù)據(jù)來源。
模型簡介
V社開發(fā)的反作弊深度學(xué)習(xí)系統(tǒng)叫VACnet。因?yàn)槊嫦蛐蛄刑幚砣蝿?wù),它被設(shè)計(jì)成一個(gè)時(shí)間步長為140的GRU RNN,包含一個(gè)輸入層(256個(gè)神經(jīng)元)和4個(gè)隱藏層(每層256個(gè)神經(jīng)元)。網(wǎng)絡(luò)使用的激活函數(shù)是ReLU,損失函數(shù)是二元交叉熵,優(yōu)化算法是Adagrad。
VACnet在Overwatch搜集的數(shù)據(jù)中訓(xùn)練,其中包含玩家提供的內(nèi)容和官方收集的內(nèi)容,是個(gè)大型優(yōu)質(zhì)數(shù)據(jù)集。雖然現(xiàn)在也有用深度學(xué)習(xí)生成數(shù)據(jù)的方法,但這種做法容易讓神經(jīng)網(wǎng)絡(luò)鉆空子,所以開發(fā)人員用的還是真實(shí)的游戲Demo。
模型的輸入不是常規(guī)的長向量,這里他們把140次射擊當(dāng)做一個(gè)序列,按順序記下每個(gè)視頻幀的所有信息。這些輸入被稱為(X,y),其中X就是我們常說的特征,它包括用了什么武器、射擊后的結(jié)果、(如果擊中)目標(biāo)距離有多遠(yuǎn)、瞄準(zhǔn)角度調(diào)整用時(shí)等。訓(xùn)練到最后,模型需要能擬合X數(shù)據(jù)并反復(fù)驗(yàn)證學(xué)習(xí)質(zhì)量,直到輸出最佳結(jié)果。
推斷和硬件
完成訓(xùn)練后,模型就要被用于推斷(饋送)。
John McDonald把這一過程類比成制作牛肉漢堡。當(dāng)開發(fā)人員面對(duì)Overwatch時(shí),他們手中沒有現(xiàn)成的牛肉肉泥,而是一頭不斷吃草長胖的牛。為了讓數(shù)據(jù)能為深度學(xué)習(xí)模型所用,開發(fā)人員花了95%的時(shí)間和精力把牛切成牛肉——數(shù)據(jù),然后把剩下的1%用于把牛肉攪碎——深度學(xué)習(xí),4%用于制作漢堡——訓(xùn)練模型。
據(jù)介紹,V社平均每天收集60萬場5v5比賽,每場比賽耗時(shí)4分鐘,一共是240萬分鐘CPU耗時(shí)(一天)。然而一天只有1440分鐘,這也就是說,為了達(dá)成目標(biāo),他們至少要購買1700塊GPU。這時(shí),玩家們獻(xiàn)給G胖的供奉就開始發(fā)揮作用了——他們一共買了3456塊CPU。下圖是處理器的冰山一角,它包含64個(gè)刀片式服務(wù)器,每個(gè)刀片有54個(gè)CPU核心、128GB RAM,僅用于模型推斷。
按照之前V社制定的反作弊邏輯:玩家舉報(bào)——協(xié)調(diào)員篩選——玩家裁定——開掛/沒開掛,現(xiàn)在他們有了VACnet,舉報(bào)環(huán)節(jié)就又增加了一個(gè)“VACnet舉報(bào)”。據(jù)了解,在所有舉報(bào)中,玩家舉報(bào)的開掛證實(shí)率為15-30%,而且種類非常豐富;而VACnet的開掛證實(shí)率高達(dá)85%-90%,但種類相對(duì)單一。
效果評(píng)價(jià)
正如之前所述的,VACnet的效果是令人滿意的,盡管缺乏靈活性和通用性,但它至少找出了大部分開掛者的“罪證”。如下圖所示,剛被加入游戲反作弊機(jī)制中時(shí),它就小幅提高了系統(tǒng)檢測開掛數(shù)的數(shù)量,加入更多訓(xùn)練數(shù)據(jù)后,它在2018年前后又形成了一個(gè)劇增的峰值。而且就實(shí)際應(yīng)用來看,從VACnet提出至今,它還沒有誤判過一起作弊事件,當(dāng)然最后的真人檢測也在其中發(fā)揮了重要作用。
從用戶反饋來看,這個(gè)深度學(xué)習(xí)嘗試也取得了史無前例的成功。自從引入Overwatch和VACnet以來,在reddit上抱怨開掛的CSGO玩家數(shù)大幅降低,僅為2016年高峰期的1%。這種情況將有利于老玩家的存續(xù)和新玩家的進(jìn)駐,也是V社所喜聞樂見的。
但VACnet真的很完美嗎?其實(shí)不盡然。除了之前提到了它似乎只能識(shí)別某幾種開掛行為,它還有一個(gè)更嚴(yán)峻的缺點(diǎn)。訓(xùn)練時(shí),當(dāng)完成“舉報(bào)——協(xié)調(diào)員篩選——玩家裁定——開掛/沒開掛”這一流程后,為了保證模型的學(xué)習(xí)效果,經(jīng)真人裁定的數(shù)據(jù)會(huì)被再次饋送進(jìn)模型進(jìn)行學(xué)習(xí)。
這就引出一個(gè)問題,如果有人開發(fā)了一個(gè)掛,它能在前幾槍自描、鎖頭,后幾槍回歸正常,那系統(tǒng)該怎么判斷?如果是個(gè)真人裁判,他肯定會(huì)想:emm,這貨有問題,肯定開掛了。但機(jī)器不知道這樣的判斷依據(jù),它只能把它標(biāo)成開掛,然后同時(shí)從開掛的時(shí)間段和沒開掛的時(shí)間段內(nèi)去強(qiáng)行學(xué)習(xí)開掛依據(jù)。這會(huì)導(dǎo)致模型性能變差。
針對(duì)這個(gè)問題,目前V社找到的補(bǔ)救方法是添加一個(gè)自動(dòng)的重新訓(xùn)練功能,它能修補(bǔ)啟發(fā)式算法帶來的漏洞。二是建立一個(gè)全新的沒有經(jīng)驗(yàn)的模型,由它來拓展開掛行為檢測范圍,增加系統(tǒng)能識(shí)別的開掛種類。第三則是把VACnet應(yīng)用到其他steam游戲上,追求泛化通用化。
小結(jié)
John McDonald認(rèn)為,深度學(xué)習(xí)是一種新興涌現(xiàn)的技術(shù),它將改革傳統(tǒng)的反作弊方式。V社現(xiàn)在已經(jīng)把深度學(xué)習(xí)用于反開掛、反作弊和Dota2英雄選擇等,而其中最受關(guān)注的就是Dota2的“大老師”。
就目前而言,玩家無需擔(dān)心有人用深度學(xué)習(xí)技術(shù)開發(fā)對(duì)抗VACnet的工具,因?yàn)閂社手里掌握著其他人難以想象的游戲數(shù)據(jù),對(duì)于深度學(xué)習(xí)來說,數(shù)據(jù)越多,模型性能越好,這是毫無疑問的。唯一需要擔(dān)心的一點(diǎn)是,這個(gè)用于訓(xùn)練的數(shù)據(jù)集是從比賽里收集的,有人可能會(huì)惡意污染數(shù)據(jù)。雖然似乎人們可以一眼分辨出這個(gè)人有沒有開掛,但如果外掛能做到欺騙玩家,那它也能騙過VACnet,并干擾它的訓(xùn)練和學(xué)習(xí)。
綜合整個(gè)演講,我們可以下這么一個(gè)結(jié)論:VACnet是有效的,但它的反作弊能力并沒有我們想象中的那么突出,它還是不能做到完全杜絕外掛。如果一個(gè)反作弊系統(tǒng)連玩家有沒有作弊都分辨不出來,那它的開發(fā)者其實(shí)并沒有消滅外掛的決心,而只是關(guān)心玩家的游戲體驗(yàn)。
事實(shí)上這也正是VACnet成功的地方,它立竿見影地減少了投訴帖子數(shù)量,穩(wěn)定住了玩家的心,讓CSGO穩(wěn)居玩家活躍榜的前三位。當(dāng)玩家們再次談及游戲里的開掛行為時(shí),他們也會(huì)樂于討論V社在反作弊上的努力,并褒揚(yáng)深度學(xué)習(xí)的實(shí)際效果。
對(duì)于一個(gè)普通玩家來說,這樣的結(jié)果是喜是憂呢?
-
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5506瀏覽量
121265
原文標(biāo)題:V社:用深度學(xué)習(xí)檢測CSGO中的開掛行為
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論