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