快手AI技術(shù)對(duì)游戲的全鏈路賦能
簡(jiǎn)介
近年來游戲產(chǎn)業(yè)迅猛發(fā)展,光是 2020 年第一季度,中國(guó)游戲市場(chǎng)的銷售收入就突破了 700 億元,而游戲做為承接互聯(lián)網(wǎng)公司流量并進(jìn)行商業(yè)化變現(xiàn)最有效的渠道之一,各大互聯(lián)網(wǎng)公司也都在積極布局。AI 作為在多個(gè)行業(yè)被證實(shí)可以提高生產(chǎn)力的技術(shù),在游戲領(lǐng)域的應(yīng)用空間也是巨大的。AI 與游戲的結(jié)合其實(shí)早就已經(jīng)出現(xiàn)了,從深藍(lán)到 AlphaGo,AI 迅速在各個(gè)游戲里超越人類。
當(dāng)大家對(duì) AI 和游戲關(guān)系的普遍認(rèn)知還停留在“與玩家對(duì)抗”的時(shí)候,我們已經(jīng)注意到其實(shí) AI 可以給游戲的研發(fā),推廣,運(yùn)營(yíng)等多個(gè)環(huán)節(jié)進(jìn)行賦能,本文主要介紹快手將 AI 技術(shù)應(yīng)用于游戲業(yè)務(wù)各個(gè)環(huán)節(jié)的探索和落地情況。這些工作由快手 AI 平臺(tái)部,游戲技術(shù)中臺(tái)和快游工作室合作完成。
AI 輔助研發(fā)
在推關(guān)類游戲中,關(guān)卡數(shù)量隨著游戲運(yùn)營(yíng)時(shí)間遞增,一個(gè)成熟的推關(guān)類游戲,比如消消樂,關(guān)卡數(shù)量成千上萬。而合理的設(shè)置關(guān)卡難度是提升用戶心流體驗(yàn)的關(guān)鍵要素。好的關(guān)卡設(shè)計(jì)可以有效根據(jù)用戶當(dāng)前水平調(diào)動(dòng)用戶游戲興趣,而難度不穩(wěn)定的關(guān)卡設(shè)計(jì)會(huì)對(duì)用戶的游戲體驗(yàn)造成極大的干擾。
在以上背景下,根據(jù)業(yè)務(wù)和場(chǎng)景的訴求產(chǎn)出合適難度的關(guān)卡就變得非常必要了。在傳統(tǒng)的推關(guān)類游戲開發(fā)中,測(cè)試關(guān)卡難度往往是通過測(cè)試人員做大量重復(fù)的測(cè)試。這種傳統(tǒng)的方式有兩個(gè)主要缺陷:一是需要消耗大量人力和工時(shí);二是這種測(cè)試往往帶有測(cè)試人員的個(gè)體誤差導(dǎo)致關(guān)卡的難度估計(jì)存在系統(tǒng)性偏差。
為了系統(tǒng)性的解決這兩個(gè)問題,我們用 AI 能力在游戲關(guān)卡方面做出了一些嘗試。由于游戲機(jī)制問題,這里有兩種業(yè)務(wù)訴求,其一為通過 AI 來評(píng)估給定關(guān)卡的難度,其二為自動(dòng)生成指定難度的關(guān)卡??焓衷谝陨蟽煞N場(chǎng)景下均有對(duì)應(yīng)解決方案,并已經(jīng)成功落地到點(diǎn)消和斗地主等游戲中。
智能關(guān)卡難度測(cè)試
點(diǎn)消游戲特點(diǎn)是 action 比較單一,游戲關(guān)卡盤面由最多 9*9 個(gè)格子組成,action 只有點(diǎn)擊。但是其狀態(tài)空間非常巨大,每個(gè)格子上附帶的大量屬性:元素種類(方塊、阻礙元素、道具、暫時(shí)空格、永久空格、是否有傳送門)和元素屬性(顏色、層數(shù)、狀態(tài)、朝向等)。
我們?cè)O(shè)計(jì)了基于強(qiáng)化學(xué)習(xí)(利用 CNN+A2C)和蒙特卡洛樹搜索(MCTS)的算法來解決這個(gè)問題。其中一個(gè)難點(diǎn)是并行 MCTS 算法。因?yàn)橛卸鄠€(gè) worker 在同時(shí)執(zhí)行選擇(selection)->擴(kuò)展(expansion)->仿真(simulation)->反向傳播過程(backpropagation),某一個(gè) worker 在進(jìn)行選擇的時(shí)候,其他 worker 未結(jié)束的仿真結(jié)果是無法獲取的,這導(dǎo)致大量 worker 只能看到過時(shí)且類似的信息,嚴(yán)重影響了搜索樹選擇節(jié)點(diǎn)的好壞,破壞了串行狀態(tài)下的探索 - 利用平衡(exploration-exploitation balance)。
為解決這一問題,我們提出了 WU-UCT 算法(Watch the Unobserved in UCT)。這個(gè)算法借用了異步并行算法的思想,其核心在于維護(hù)一個(gè)額外的統(tǒng)計(jì)量用于記錄每個(gè)節(jié)點(diǎn)上有多少個(gè)正在對(duì)其進(jìn)行仿真的 worker,并用其對(duì)選擇算法進(jìn)行調(diào)整。此外,我們使用了主 - 從工作模式的系統(tǒng)。由主進(jìn)程維護(hù)一個(gè)完整的搜索樹,并進(jìn)行選擇和反向傳播操作。同時(shí),主進(jìn)程負(fù)責(zé)將擴(kuò)展和仿真的任務(wù)分配給對(duì)應(yīng)的子進(jìn)程,由子進(jìn)程完成后將結(jié)果返還主進(jìn)程。這樣做的好處在于很好地保證了統(tǒng)計(jì)信息對(duì)于每次選擇都是完整的,同時(shí)避免了進(jìn)程間共享內(nèi)存和訪問沖突等問題。
最終,我們用以上方法訓(xùn)練的 AI,對(duì)超過 1000 關(guān)進(jìn)行自動(dòng)難度驗(yàn)證,以用戶實(shí)測(cè)的通關(guān)率為標(biāo)準(zhǔn),我們的 AI 難度評(píng)估系統(tǒng)的誤差在 8.6% 以內(nèi)。在 WU-UCT 的幫助下,我們的系統(tǒng)可以準(zhǔn)確地預(yù)測(cè)某一關(guān)卡上線后玩家的預(yù)期通關(guān)率,為關(guān)卡設(shè)計(jì)師提供了很好的指導(dǎo),達(dá)到了不需要人工測(cè)試即可得到反饋,大幅降低了開發(fā)成本,也改變游戲制作方式。另外,我們也把這項(xiàng)工作總結(jié)成論文發(fā)表在 ICLR2020[1] 并被大會(huì)選為 Oral 報(bào)告論文。
自動(dòng)關(guān)卡生成
當(dāng)我們通過 AI 解決了給定關(guān)卡難度自動(dòng)評(píng)測(cè)的問題后,一個(gè)自然的需求是能否連關(guān)卡生成也自動(dòng)化?于是我們?cè)诳焓肿匝械摹稅塾味返刂鳌飞系臍埦滞娣ㄗ鲩_始了新的嘗試。
棋牌類的殘局關(guān)卡的設(shè)計(jì)非常困難,對(duì)設(shè)計(jì)人員要求非常高,即便是該游戲的專家也往往難于設(shè)計(jì)出有價(jià)值的殘局。我們首先利用強(qiáng)化學(xué)習(xí)和 minimax 搜索設(shè)計(jì)出了一個(gè)破解斗地主殘局的 AI,然后用該 AI 為基準(zhǔn)對(duì)隨機(jī)生成的牌局做篩選,同時(shí)利用實(shí)際測(cè)試的用戶體驗(yàn)數(shù)據(jù)來學(xué)習(xí)篩選規(guī)則。除了已經(jīng)上線的二人殘局關(guān)卡,還能生成三人殘局(因難度太高暫時(shí)沒在游戲內(nèi)開放)。另外為了避免生成相似的殘局,我們對(duì)牌面信息做了標(biāo)準(zhǔn)化變換,讓相似的牌面信息在標(biāo)準(zhǔn)化空間內(nèi)成為相同的牌面。我們最終自動(dòng)生成的殘局達(dá)到 30-40% 的通過率(開發(fā)人員測(cè)試),大大提升了開發(fā)效率。目前該方案已經(jīng)上線《愛游斗地主》殘局玩法。
AI 輔助推廣
游戲研發(fā)測(cè)試完成之后的下一個(gè)重要任務(wù)是進(jìn)行推廣。我們這里介紹 AI 在游戲廣告投放業(yè)務(wù)中的一些實(shí)踐和探索工作。
智能投放
游戲工作室會(huì)在流量平臺(tái)(如快手)購(gòu)買流量,即用戶。而作為廣告主,游戲工作室會(huì)建立或者雇傭第三方投放團(tuán)隊(duì)來進(jìn)行廣告投放。投放團(tuán)隊(duì)用素材(短視頻,圖片封面,廣告詞)構(gòu)建廣告創(chuàng)意,然后打包并設(shè)置相應(yīng)的投放參數(shù),最終形成廣告計(jì)劃在廣告平臺(tái)提供的接口中投放。廣告平臺(tái)負(fù)責(zé)將廣告創(chuàng)意在進(jìn)行曝光并收取廣告主的費(fèi)用,用戶通過觀看廣告并點(diǎn)擊廣告中的鏈接,下載游戲并激活,成為游戲用戶。用戶在游戲內(nèi)部直接或間接消費(fèi),作為游戲工作室獲得流水收入。
傳統(tǒng)的廣告投放以人工制作廣告創(chuàng)意,生成廣告計(jì)劃為主要手段。然而,人工投放缺點(diǎn)明顯,首先人工投放需要大量人力做一些重復(fù)性操作。其次,人工投放效果多依賴于優(yōu)化師(投放人員)的直覺和經(jīng)驗(yàn),沒有可以泛化的通用方法。
為了解決上面的問題,解放優(yōu)化師的雙手和部分大腦,我們搭建了智能投放系統(tǒng)。該系統(tǒng)的目標(biāo)是可以形成投放的全鏈路閉環(huán),不需要人工介入。這個(gè)系統(tǒng)是基于召回和組合排序投放策略框架。
召回是指素材(短視頻,封面,廣告詞)的召回,本質(zhì)上可以理解從素材庫(kù)中選取其中部分素材。召回的方法有基于規(guī)則的和基于模型的。我們召回模型多以回歸和分類模型為主,如線性模型,樹模型,神經(jīng)網(wǎng)絡(luò)等。我們以優(yōu)化目標(biāo)(ROI,激活數(shù),激活單價(jià)等)為指標(biāo),建立監(jiān)督學(xué)習(xí)模型并預(yù)測(cè)單素材表現(xiàn)從而優(yōu)選出有潛力的素材。素材的特征,以視頻為例子,包括視頻重要幀的嵌入向量,視頻時(shí)長(zhǎng),視頻風(fēng)格,視頻類別等。另外,除了素材本身的特征,還包括過去一段時(shí)間的表現(xiàn)特征,如過去 24 小時(shí)的點(diǎn)擊率,三秒完播率等。
組合排序是將召回的原素材進(jìn)行組合(笛卡爾乘積)構(gòu)建廣告創(chuàng)意并排序。根據(jù)排序結(jié)果將頭部創(chuàng)意編排進(jìn)廣告計(jì)劃。我們開發(fā)了多種排序模型。如張量分解模型,基于神經(jīng)網(wǎng)絡(luò)的雙塔模型等。在張量分解方法中,我們可以將一個(gè)創(chuàng)意看成是若干類型的元組,如(短視頻,圖像封面,廣告詞)可以看做一個(gè)三階張量。之前投放的廣告創(chuàng)意的表現(xiàn),如果 ROI 等可以看做是張量的某個(gè)元素的數(shù)值。因?yàn)椋瑥埩糠纸饪梢园褎?chuàng)意打分看成是一個(gè)張量補(bǔ)全問題,然后利用低秩假設(shè)和經(jīng)典的張量分解算法將創(chuàng)意的分?jǐn)?shù)補(bǔ)全。
雙塔模型,確切地說是多塔模型,是將各個(gè)維度的素材特征經(jīng)過神經(jīng)網(wǎng)絡(luò)得到各自的抽象特征表示,然后在通過融合映射為一個(gè)分?jǐn)?shù)。例如,最基本的雙塔模型作用在短視頻和圖像封面的場(chǎng)景下,可以理解為給視頻素材找到合適的封面。
基于召回和組合排序框架,我們就可以設(shè)計(jì)多種具體的投放策略,包括新素材冷啟動(dòng)、創(chuàng)意空間探索、智能創(chuàng)意制作等。除了上述投放策略,我們還開發(fā)了各種輔助策略,如素材的黑白名單策略,老素材的回收策略,關(guān)停策略等。所有這些策略配合基本已經(jīng)滿足我們的目前的所有場(chǎng)景了。目前我們已經(jīng)介入 10 多款游戲,其中有 2 款游戲已經(jīng)全部自動(dòng)托管。目前 AI 生成的廣告計(jì)劃帶來的花費(fèi)已經(jīng)是占總花費(fèi)的 40% 左右。
AI 輔助運(yùn)營(yíng)
游戲推廣之后的下一個(gè)環(huán)節(jié)是運(yùn)營(yíng)。在運(yùn)營(yíng)過程中,有許多游戲內(nèi)的策略問題,游戲內(nèi)的運(yùn)營(yíng)策略非常影響用戶的體驗(yàn)和留存,從而影響營(yíng)收。設(shè)置合適的策略通常是游戲策劃的一個(gè)非常重要的工作,好的策略通常依賴于游戲策劃的豐富經(jīng)驗(yàn)和直覺。不過在某些場(chǎng)景下,數(shù)據(jù)可以更好指導(dǎo)如何生成適合用戶的運(yùn)營(yíng)策略。另一方面,在支持運(yùn)營(yíng)的過程中,常常需要游戲 AI 的輔助。例如在游戲的冷啟動(dòng),掉線帶打等場(chǎng)景中,游戲 AI 發(fā)揮著重要的作用。這里我們介紹我們?cè)诳焓钟螒驑I(yè)務(wù)中,我們是如何通過數(shù)據(jù)驅(qū)動(dòng)的策略和游戲 AI 去提升用戶體驗(yàn)的。
數(shù)據(jù)驅(qū)動(dòng)的游戲內(nèi)策略
匹配策略
在多人競(jìng)技或者對(duì)抗游戲場(chǎng)景中,匹配是玩家良好體驗(yàn)的重要一環(huán),對(duì)提升用戶留存至關(guān)重要。用戶匹配算法一般是按一定策略先粗排篩選出實(shí)力相當(dāng)或滿足某種規(guī)則的用戶群體進(jìn)行分場(chǎng),然后進(jìn)行局部精排分隊(duì)以保證游戲平衡性,但如何從全局用戶體驗(yàn)上進(jìn)行優(yōu)化得到玩家分場(chǎng)分隊(duì)匹配還是一個(gè) NP-hard 難題。
以《愛游斗地主》游戲原始基于規(guī)則的匹配策略為例,將待匹配用戶構(gòu)成匹配池,以用戶狀態(tài)(剩余金幣量、勝率、段位等)為主要尺度,按規(guī)則公式計(jì)算戰(zhàn)力系數(shù),然后按該系數(shù)相近的用戶匹配到一起。然而,這些信息并不能準(zhǔn)確反映玩家真實(shí)水平,很難保證對(duì)局玩家狀態(tài)平衡,導(dǎo)致用戶實(shí)際體驗(yàn)不一致。因此需要更全面的評(píng)估玩家的真實(shí)水平,并從全局體驗(yàn)上優(yōu)化匹配策略,以提高用戶游戲時(shí)長(zhǎng)和留存。
我們利用玩家歷史游戲行為序列和畫像數(shù)據(jù),基于深度神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)多維特征融合的用戶匹配策略。將玩家歷史游戲行為統(tǒng)計(jì)特征和用戶畫像作為模型輸入,玩家歷史對(duì)局的連桌數(shù)的區(qū)間分類作為標(biāo)簽,我們可以訓(xùn)練一個(gè)多分類模型。線上預(yù)測(cè)時(shí),首先通過設(shè)計(jì)的聚類模型對(duì)用戶進(jìn)行粗略聚類——即粗排過程。然后將每個(gè)聚類下用戶,三人一組(斗地主規(guī)則)分組,將所有分組組合輸入預(yù)測(cè)模型,輸出不同組合下匹配概率值,優(yōu)先將概率值大的組合匹配在一起——即精排過程。
關(guān)于特征提取,我們從用戶歷史對(duì)局?jǐn)?shù)據(jù)中,提取出用戶基本特征和行為特征。此外,通過概率圖模型,我們將各玩家的游戲戰(zhàn)力看成一個(gè)隨時(shí)間動(dòng)態(tài)變化的高斯分布,從游戲?qū)纸Y(jié)果中學(xué)習(xí)玩家的能力值 [2],以反映玩家真實(shí)游戲水平。將上述用戶基本特征、行為特征和玩家能力值聯(lián)合拼接后進(jìn)行特征嵌入表征作為匹配模型輸入特征。我們將連續(xù)對(duì)局次數(shù)(稱為連桌數(shù))作為匹配結(jié)果較好的一個(gè)正向反饋。我們構(gòu)建深度神經(jīng)網(wǎng)絡(luò)作為模型,以局為單位聯(lián)合三名玩家特征作為模型輸入:
我們主要關(guān)注的運(yùn)營(yíng)指標(biāo)是用戶留存。該模型上線后,較傳統(tǒng)基于規(guī)則的匹配策略,用戶 7 日留存提升了約 2.4%。
發(fā)牌策略
除了匹配,發(fā)牌也是至關(guān)重要的。在斗地主游戲中,分發(fā)出去的牌組將直接影響該局游戲玩家的發(fā)揮及游戲體驗(yàn)。發(fā)牌完成后,系統(tǒng)不再對(duì)牌局進(jìn)行干涉,由三位玩家自行完成游戲。因此,發(fā)牌的策略是斗地主游戲決策中至關(guān)重要的部分。傳統(tǒng)的發(fā)配策略通常為隨機(jī)發(fā)牌或者根據(jù)規(guī)則生成牌組。隨機(jī)發(fā)牌的情況下,可能出現(xiàn)非常零散的手牌或是三家牌力非常不平衡的牌組,從而造成不公平,這些都會(huì)嚴(yán)重影響玩家體驗(yàn)。而按規(guī)則的發(fā)牌策略往往比較生硬,無法對(duì)牌力進(jìn)行有效的調(diào)整。另外,以上方案都沒有利用玩家的狀態(tài)信息進(jìn)行發(fā)牌。因此,我們開發(fā)了數(shù)據(jù)驅(qū)動(dòng)的發(fā)牌策略。
我們首先制作了牌庫(kù),其中包括大量的牌組。而入選牌庫(kù)的標(biāo)準(zhǔn)則是根據(jù)玩家的反饋。玩家的反饋有很多,例如一局之后,超過一個(gè)玩家點(diǎn)擊“再來一局”就可以認(rèn)為是一個(gè)正向反饋。如果沒人點(diǎn)擊“再來一局”可以認(rèn)為是負(fù)向反饋。我們收集多種反饋,從而標(biāo)記一個(gè)牌組的“好壞”,并利用這些樣本數(shù)據(jù)訓(xùn)練二分類模型。之后我們隨機(jī)或者按規(guī)則生成牌組,并通過以上模型來過濾出相對(duì)好的牌組進(jìn)入牌庫(kù)。當(dāng)然,不同場(chǎng)次的玩家偏好不一樣,從而反饋也不一致。因而我們根據(jù)不同場(chǎng)次分別組建牌庫(kù)。另外,在同一牌庫(kù)中,我們根據(jù)其中牌組的特征進(jìn)行了聚類,這些聚類標(biāo)簽也可以在后續(xù)的牌組選擇中應(yīng)用。我們的牌庫(kù)模型和牌庫(kù)本身也會(huì)根據(jù)數(shù)據(jù)的積累,定期更新。
接著,我們提出一種基于強(qiáng)化學(xué)習(xí)的牌組選擇與牌位分配的方法。我們從玩家的歷史游戲信息以及近期的勝負(fù)信息中,提取玩家的基本特征、行為特征、狀態(tài)特征等。同時(shí),我們從牌局提取相應(yīng)的牌組特征。我們將玩家特征視為 state,牌組特征視為 action,一局游戲的 reward 定義為玩家是否繼續(xù)游戲的,從而建立 RL 學(xué)習(xí)框架。我們利用 Q-Learning 算法對(duì)最佳發(fā)牌策略進(jìn)行學(xué)習(xí)。
在線上發(fā)牌階段,將三名玩家的信息進(jìn)行特征提取得到用戶特征。另外,計(jì)算不同子庫(kù)分別能達(dá)到的收益值,取能最大化收益的子庫(kù)。再根據(jù)模型,從子庫(kù)從中選取最優(yōu)牌組。
該策略上線后顯著提升了活躍度,綜合 7 日留存提升了 3.6%,日平均局?jǐn)?shù)提升了 11.7%。另外,我們還針對(duì)不同的場(chǎng)次分別提供了個(gè)性化的模型和牌庫(kù),目前該策略已經(jīng)推全到《愛游斗地主》的所有場(chǎng)次。另外我們還提供專門用于比賽和直播的牌庫(kù)。
游戲 AI
在游戲運(yùn)營(yíng)過程中,我們有多個(gè)場(chǎng)景需要游戲 AI 的支持,例如出牌提示和掉線代打等。游戲 AI 技術(shù)對(duì)游戲的支持,主要體現(xiàn)在《兜來玩麻將》業(yè)務(wù)中的落地以及在斗地主業(yè)務(wù)中推廣?!抖祦矶返刂鳌钒?6 種麻將玩法,例如四川麻將 - 血流成河,四川麻將 - 血戰(zhàn)到底,大眾麻將,二人麻將等。在游戲剛上線的業(yè)務(wù)冷啟動(dòng)階段,由于玩家數(shù)量較少,需要將游戲 AI 投入到匹配池來提升體驗(yàn)。因此,需要支持 6 種以上麻將玩法的 AI 并支持分級(jí)。然而,通用的麻將 AI 研究是一個(gè)學(xué)術(shù)界尚未解決的非對(duì)稱博弈難題。MSRA 在日本麻將上做出了超越人類水平 AI[3],然而其算法框架強(qiáng)烈依賴于專家級(jí)別用戶的訓(xùn)練數(shù)據(jù)且針對(duì)日本麻將的規(guī)則做了定制化,不適合應(yīng)用于我們支持多種玩法的業(yè)務(wù)需求和大規(guī)模擴(kuò)展。
我們基于深度強(qiáng)化學(xué)習(xí)進(jìn)行創(chuàng)新性的研究,解決了缺乏專家級(jí)數(shù)據(jù)等技術(shù)難點(diǎn),沉淀出一套擴(kuò)展性極強(qiáng)的的算法框架,成功在多種規(guī)則麻將中使 AI 達(dá)到人類頂尖水平,不僅滿足了業(yè)務(wù)需求,也達(dá)到了業(yè)內(nèi)領(lǐng)先的成就。我們還推廣該框架至其他游戲,例如斗地主。
首先我們解決了缺少高質(zhì)量數(shù)據(jù)的問題。該方法是先使用簡(jiǎn)單的基于規(guī)則的 AI 互相對(duì)戰(zhàn)生成訓(xùn)練數(shù)據(jù),并用這個(gè)數(shù)據(jù)進(jìn)行監(jiān)督學(xué)習(xí)得到一個(gè)初始化模型,然后從這樣一個(gè)初始化模型出發(fā)自對(duì)弈進(jìn)行強(qiáng)化學(xué)習(xí)。我們稱這個(gè)方法為 RuleBase Initialization (RBI)。RBI 方法得到的 AI 水平遠(yuǎn)高于從零開始訓(xùn)練的 AI,并且這套流程可以適用于不同的麻將規(guī)則,可擴(kuò)展性強(qiáng),并可以滿足 AI 分級(jí)的要求。
其次,我們?cè)O(shè)計(jì)了平滑的獎(jiǎng)勵(lì)來解決初期訓(xùn)練困難和獎(jiǎng)勵(lì)方差過大的問題。在訓(xùn)練初期,AI 水平比較低,直接用游戲的真實(shí)獎(jiǎng)勵(lì)隨機(jī)性太大,容易使梯度方向偏離正確方向。我們通過加入一些人為設(shè)計(jì)的聽牌、和牌的獎(jiǎng)勵(lì)使得獎(jiǎng)勵(lì)更符合對(duì)于新手的引導(dǎo)。在訓(xùn)練過程中,我們逐漸降低人為設(shè)計(jì)獎(jiǎng)勵(lì)的權(quán)重,使獎(jiǎng)勵(lì)平滑地回歸游戲的真實(shí)獎(jiǎng)勵(lì)。同時(shí),我們采取了 reward clipping 方法來防止梯度過大。
麻將的規(guī)則十分多樣,不同規(guī)則麻將在流程、可行動(dòng)作域、記分方式等方面有區(qū)別。為了高效支持大量不同規(guī)則的麻將 AI,我們的算法框架必須具有比較強(qiáng)的通用性和可擴(kuò)展性。為了提高可擴(kuò)展性,我們嘗試了區(qū)別于傳統(tǒng) Decision Flow 的全新結(jié)構(gòu):將所有可能的 action(包括出牌)排成一個(gè)向量作為模型輸出的概率分布,這樣用一個(gè)模型就能處理所有打牌階段決策。我們對(duì)這個(gè)單模型 AI 使用 RBI 方法進(jìn)行強(qiáng)化學(xué)習(xí)訓(xùn)練,得到了很好的效果。此外,這種算法可擴(kuò)展性極強(qiáng),每種玩法只需要重新訓(xùn)練一個(gè)模型,代碼改動(dòng)量也很小。我們用這個(gè)框架快速拓展,目前已經(jīng)支持了血流、血戰(zhàn)、大眾、二人、北方推倒胡,國(guó)標(biāo)麻將等規(guī)則。
我們已經(jīng)將多種玩法的 AI 在快手的《兜來玩麻將》中上線,我們最高級(jí)的 AI 水平顯著強(qiáng)于高水平玩家。其中,我們的國(guó)標(biāo)麻將 AI 參加了 2020 年 IJCAI 的國(guó)標(biāo)麻將比賽,以第一名的成績(jī)?nèi)雵磳⑴e行的決賽。在麻將 AI 的探索中,我們不但沉淀了一套麻將 AI 的能力,而且還錘煉了一套完整的游戲 AI 的訓(xùn)練平臺(tái)和方法論,并已經(jīng)將相關(guān)經(jīng)驗(yàn)遷移到斗地主等游戲中。
規(guī)劃和展望
隨著 AI 能力的不斷擴(kuò)展,對(duì)游戲的賦能也會(huì)不斷深化和拓展,相信在不遠(yuǎn)的將來 AI 能力可以更深入的觸及游戲行業(yè)的各個(gè)環(huán)節(jié),極致化用戶體驗(yàn),形成 AI 能力在游戲上更完美的閉環(huán)。