網易伏羲遊戲AI Bot的擬人化和風格化:AIGA賦能遊戲探索

2023-09-23   CDA數據分析師

原標題:網易伏羲遊戲AI Bot的擬人化和風格化:AIGA賦能遊戲探索

導讀本文將分享網易伏羲在遊戲AI Bot方向的一些工作。我們的工作稱為AIGA,它是另一種形式的AIGC,生成的內容是agent的action。我們在遊戲場景方面做了一些AIGA相關的工作。今天的分享將重點圍繞AIGA技術手段的應用展開。

主要包括以下三個方面:

1. 從AIGC到AIGA

2. 遊戲AI Bot擬人化和風格化研究進展

3. RLHF微調遊戲AI Bot模型

分享嘉賓|胡裕靖博士網易 人工智慧研究員

編輯整理|徐謙

出品社區|DataFun

01

從AIGC到AIGA

AIGC是指AI生成內容,已經被廣泛了解。

AIGC有著廣泛的應用,包括圖像生成和對話。微軟基於OpenAI的GPT技術,開發了一系列驚艷的工具。

AIGC技術發展迅速,包括基於模型和深度學習的AIGC。但在遊戲領域中,很早就對GC(生成內容)進行了研究。這些研究主要集中在應用方面,而不是理論方法方面。很多早期應用研究被稱為PCG(程序生成),如關卡生成、武器裝備生成和場景建築生成等。從技術手段上來將主要使用了啟發式方法和遺傳算法,不過效果不如目前的AIGC驚艷。從這個角度來看,AIGC與遊戲是有著深厚的淵源的。

AIGA是將AIGC中的C換成了A,即AI生成的行為(AI Generated Action)。更準確地說,應該稱為AI生成的智能體(AI Generated Agent)。AIGA並不是一個新概念,其實就是遊戲中的AI Bot,俗稱程序控制的小人,能自動做出一些行為。

遊戲AI Bot在遊戲中有什麼用呢?先看第一個例子,在足球遊戲FIFA中,遊戲可以聯網在線玩,幾個隊友一起打遊戲。但一個隊總共需要十一個人踢,所以在隊伍中經常會有一些AI Bot,來和你控制的角色進行配合。這裡面就用到了程序的自動化控制。

再看第二個例子,在經典遊戲暗黑破壞神中,裡面的僱傭兵會跟隨玩家一起活動。這裡面可能用了簡單的一些基於規則的方法來控制這些僱傭兵,比如:自動機、行為樹等方法。但這裡也還是AI Bot的範疇,能給玩家提供一個遊戲夥伴。

再看第三個例子,在很多單機遊戲中,如老頭環和戰神中,有很多BOSS或者小兵,也是程序控制的,也是AI Bot。這裡不一定要用強化學習去實現,它的主要目標僅僅是給玩家提供一些挑戰即可,不需要很複雜的一些操作。

但是在網遊中,如網易的一些遊戲,如逆水寒、永劫無間裡面,以及最近要上線的籃球遊戲裡面,也有很多AI Bot。這些AI Bot就是強化學習方法訓練出來的。遊戲會基於AI Bot專門設計一些玩法,比如提供一些新手玩家的福利局。

所以,對於遊戲來講,遊戲AI Bot是非常重要的,是不可或缺的。

網易的很多遊戲中都會有一些AI Bot,也就是所謂的AIGA。

02

遊戲AI Bot擬人化和風格化研究進展

本文將重點介紹AIGA在遊戲需求中的核心應用。我們在許多項目中發現,遊戲AI Bot有兩個非常重要的需求:擬人化和風格化。AI Bot的行為具有明顯的風格特徵,並且是多樣化的風格特徵。

本小節中,我們將整體介紹一下關於這兩個需求的相關研究。

擬人化和風格化,這兩點的目標雖然不同,但是其實現方式是基本一樣的。

遊戲AI Bot的擬人化和風格化,有哪些作用呢?從玩家的角度來講,一個好的AI Bot,可以讓玩家有一個好的心流體驗。心流,是指玩家在遊玩過程中的心理起伏變化過程。

我們希望玩家在玩遊戲的過程中,他的心流曲線是一個上升的過程。強化學習能夠訓練出很強的機器人,遠遠超過人類的水平。但是如果作為對手的話,玩家就會覺得機器人太強了,遊戲體驗不是很好。最終玩家會感覺到焦慮,它的心流就會到這個焦慮區間。這就表明擬人化做的不夠好。

另一方面,如果機器人行為不夠豐富,行為特徵不明顯,行為特徵很單一話,玩家心流會到這個Boredom的區間中。玩家這樣的心流也不是我們想要的。

擬人化和風格化這兩點,會影響玩家的心流和體驗。。這方面的研究工作雖然已經有了一些,我們之前也有很多的探索,但是還沒有形成統一的方法論,通用性還不夠。

比如,我們在開發永劫無間遊戲機器人時,實現了一個巡路功能的機器人,它可以自動完成遊戲角色的尋路任務。我們在設計這個機器人時,花費了很多時間調整獎勵權重,以使它的行為更加接近真實玩家。最終,我們實現了一個可以自動執行複雜操作的機器人,做到了左圖中一個效果,它可以在遊戲中執行一些人類玩家才會做的複雜行為,而不僅僅是簡單地尋路導航。

這是原始的永劫無間中的巡邏機器人,它使用規則編寫,會一直跳來跳去。雖然也能到達目的地,但是玩家一眼就能夠看出這是機器人,就不想玩了,導致體驗不佳。我們使用的強化學習方法訓練出來的機器人,則可能看起來更自然,玩家體驗更好。但問題在於,我們在進行強化學習訓練的過程中,耗費了大量人力和時間去調整算法相關獎勵權重和參數,才能夠達到現在的效果。同時,這樣的方法不具備可複製性。換一個任務的話,我們調出來的參數和權重就不能用了。

我們在多樣化,或者行為多風格化方面做了很多工作,提出了一些方法,如多聯盟訓練、Reward Shaping、進化算法和多目標優化等。這些方法雖然有一些論文發表,但計算複雜度高,成本較高,實現周期長,線上成本也高,不是我們想要的。

我們的遊戲AI機器人具有擬人化和多風格化的特點。我們後來發現遊戲AI機器人與其他AI技術路徑是相似的。因為評估這些AI時,沒有客觀的統一標準,最終需要人類主觀判斷的。此外,從技術手段上來說,存在調參和調整reward等問題,我們希望實現更通用的自動化技術方案。另一個目標是提升業務效果。

1.擬人化

擬人化雖然是主觀的,但是需要有客觀量化的指標來指導算法研究並提出通用化的方案,以評估AI是否擬人。圍繞客觀性和可靠性方面,我們提出了一個框架,可以指導遊戲AI機器人的研究。可以對人類玩家的行為特徵進行統計,並將其與AI機器人訓練出來的行為特徵進行比較,以進行統計學上的匹配。可以計算有多少行為是相匹配的,以評估AI機器人的擬人化程度。

第二個方面是多樣性指標。人類的行為具有多樣性,遊戲中的行為也應具有多樣性,否則將不夠擬人。可以通過策略分布和動作分布等方式來衡量。

第三個方面是競技性指標。AI的強度將提高遊戲的競技性能。但對於AI機器人來說,我們不要求過高的競技性,而是要求在一定水平上達到要求。即使是隨意玩遊戲,也需要有一定的目標和閾值。

第四個方面是領域相關指標。不同遊戲需要不同的擬人化評估標準,因此需要根據遊戲的特點設定特殊的指標。

這些指標也可以通過遊戲中的一些行為分布來體現。只不過,我們需要從遊戲本身出發來統計這些指標,而不是單一地使用統計學的方法。比如說很多動作類遊戲,我們可以通過統計玩家的連招釋放率來衡量遊戲的難度和玩家的技巧水平。這與人類的行為類似。比如說在一些籃球遊戲或足球遊戲中,玩家的跑位非常重要。我們可以通過分析遊戲中不同位置的熱力圖來判斷遊戲的合理性。這也可以用來衡量遊戲的難度和玩家的技巧水平。

最終,這四個指標只是一些量化的指標,我們還需要通過主觀評判來判斷遊戲是否真正與人類的行為相匹配。最後的圖靈測試是一個重要的評判標準。

這個框架可以幫助我們在做算法疊代的過程中,通過量化的指標來評估算法的進步情況。例如,我們可以通過比較疊代前後的結果來判斷算法是否真正有所提升。

如果將這些指標展示為可視化雷達圖,我們可以通過面積的大小來判斷不同算法方案的擬人性。

從可視化的雷達圖中可以看出,如綠色部分所示,強化學習訓練出的Bot在競技性方面可能更強,但在多樣性和客觀性方面可能不夠好。

從可視化的雷達圖中可以看出,如紅色部分所示,通過模仿學習方法訓練出的Bot在擬人化程度方面比強化學習更高。

通過可視化的雷達圖,我們可以直觀地看出這些指標反映出Bot的擬人化程度的多少。雷達圖的面積越大,擬人化程度可能越高。

在具體做法方面,我們需要基於人類數據來做擬人化。模仿學習可以幫助我們模仿人類數據的分布,但這樣得到的強度可能有限。單純的模仿學習可能無法得到合理的行為,最主要的缺點是強度比較低。

因此,我們需要進行修正,將模仿學習和強化學習結合起來,通過強化學習加上模仿學習的整合來做擬人化。這樣可以提高遊戲算法的強度和多樣性,從而更好地模擬人類行為。

整個優化方案非常簡潔,我們希望通過自動化過程來實現優化過程。

在方案中,目標參數由兩部分組成,一部分是強化學習,另一部分是模仿學習,通過權重進行關聯。我們使用一些規則化方法,來自動調整這裡的權重。具體來講,我們首先使用強化學習來調整AI Bot的強度水平,然後再使用模仿學習來提高AI Bot各個維度的擬人指標。

我們使用一些規則化的方式來實現這一目標。在訓練過程中,我們如果發現AI Bot的勝率或強度低於我們設定的閾值,我們通過降低模仿學習的權重,進行AI Bot的強度優化。當AI Bot的強度上升後,我們再調高模仿學習的權重,來優化AI Bot的擬人性。

通過這種方法,在訓練過程中,AI Bot會先優化勝率。當AI Bot強度達到一定水平時,再調高模仿學習的權重,來提高模仿學習效果。最終,AI Bot的強度會自動緩慢提高。這是一種超參數設置的自動化方法。可能還有其他複雜的自動化方法,但對於遊戲應用來說,這種方法已經足夠了。

在即將上線的籃球遊戲《全明星街球派對》中,我們就使用了擬人化的方法來提高AI Bot的強度。我們對比了模仿學習和強化學習的效果,發現強化學習可以提高AI Bot的強度,但其他指標不如模仿學習方法;使用模仿學習可以提高AI Bot的其他指標,但強度不如強化學習的方法。

在籃球遊戲中,AI Bot的投籃次數、傳球和移動的頻率等領域相關指標,模仿學習比強化學習的效果更好。

對於領域指標,如傳球次數、投籃次數等,我們可以將遊戲數據中的人類玩家的數值做為模仿學習的優化目標,自動化進行權重調節。這樣,不僅可以用於擬人化優化,還可以用於任意風格化的優化,如降低傳球次數或增加傳球次數。我們在後續風格化的技術探索中,也用了類似方法。

這裡展示了籃球遊戲中擬人化的最終效果。

然而,我們又遇到了一個新的問題:雖然從客觀指標上,能夠看出來相對於強化學習提升很大。但是主觀感受上,對於一般人而言,並沒有感覺到提升。如果不是遊戲資深玩家,無法主觀上分辨出遊戲機器人的擬人效果。因為我們最終目標是主觀擬人性的提升。雖然客觀提升很大,但也不是我們的最終目標。這個問題,我們後面再來回答。

2.多風格化

風格化也是類似的情況。遊戲AI Bot的哪些行為能夠反應出其風格呢?我們提出一個框架。首先定義遊戲AI Bot的State,如球員的移動軌跡分布,位置熱力圖分布。這些State的變化情況,反應了對應的Action,從而代表了不同的風格。

以籃球遊戲為例,如擋拆次數、投籃次數,蓋帽次數這些Action,代表了不同的防守風格,如防守風格嚴密等。

從結果上,也對應了強化學習的Reward效果。如兩分球得分率、三分球得分率、榜首成功率等結果,可以對應不同的Reward效果。

State、Action、結果這幾個維度,常常會交織在一起。我們將它們拆分開,來表示不同的遊戲AI Bot風格。

在遊戲《逆水寒》中,我們進行了這種嘗試。

首先嘗試多風格化。最開始,我們想用一個模型將所有的風格訓練出來。這個在理論上可以辦到,但是在風格維度比較多時,會有一個打地鼠的現象。在一個模型中同時實現激進的風格和保守型的風格。這兩個維度本身就是衝突的,幾乎不可能同時實現。。由於遊戲AI Bot的多風格化,重點是在它在風格化,而不是在於多。因此對於多,我們通過其他的方式來實現。

如何才能把風格很好地體現出來的呢?對於玩家而言,在玩一個遊戲的過程中,遇到的風格相對來講不會很多,有幾種或者十幾種風格就足夠了。重點在於遊戲的風格特徵需要比較明顯。於是我們轉換了一種思路,先把遊戲AI Bot的風格做出來。

我們做了一個簡單的實驗。在強化學習的典型遊戲Breakout中,我們訓練了一個AI模型,來觀察不同風格所呈現的分布情況。

首先,我們考察移動次數這個風格。整體上,每一局的移動次數是差不多的,符合正態分布的情況,均值在十五到十六。但是,有的EPISODE上移動次數很少,有時移動次數非常多。

於是,我們希望基於這個模型得到一個移動比較多的AI Bot。我們基於移動次數指標來劃分樣本,再對原來的模型做fine tune。如果要訓練移動次數多的AI Bot,我們劃一條線,只保留移動次數25以上的樣本,丟棄其它樣本。再用這部分樣本,來fine tune原來的模型,這樣就能夠得到一個移動次數一直比較多的AI Bot——Active Bot。同理,我們也可以得到一個移動比較少的AI Bot。我們丟棄中間的樣本,將移動次數很少的樣本取出來,最後得到一個Lazy Bot。這樣,我們就得到了兩個風格化的AI Bot。

一般來講,我們先預訓練一個基模型,基模型的行為符合正態分布。然後,我們根據需求,提取出一部分樣本出來,基於基模型做風格化的finetune,即自模仿學習的方式。

我們用SIL(Self-Imitation Learning,自模仿學習)的方法,從自己的樣本里做模仿,再根據需求風格和指標做樣本提取,同時使用RL(強化學習)方法來保證強度。

多風格化過程和擬人化是基本一樣的,主要區別是多風格化中的樣本是來自於AI Bot自己的樣本,而擬人化的樣本是來自於人類樣本。

基於這個思路,我們在籃球遊戲中進行了一些體驗,並開發了一個專門投三分球的遊戲AI Bot。這個AIBot只會投三分球,或者更準確地說,它會在遊戲中儘可能地去投三分球。

在遊戲畫面中,我們可以看到這個AI的角色是庫里。了解籃球的人應該清楚,庫里的三分球能力是非常出色的。因此,這個AI Bot的特點就是能夠儘可能地去投三分球。

此外,我們還有專門投兩分球的AI Bot,這是非常有意思。以庫里為例,雖然他的三分球能力非常出色,但通過我們使用的自模仿學習、強化等訓練方法,這個AI Bot卻選擇投兩分球。即使在投兩分球後被蓋帽,它仍然會繼續往籃下沖。這是一個非常有趣的現象,說明風格並不一定與強度或直觀感受一致。然而,這個AI Bot仍然能夠完成我們設定的目標。

前面介紹了投籃風格,這裡我們再舉個擋拆風格的例子。在籃球遊戲中,我們通過強化學習訓練的方式,發現一開始擋拆並不容易實現。這是因為遊戲本身的機制和一些設定。如果防守方表現出色,或者進攻方表現不錯,擋拆可能並不是必要的。強化學習可能會認為這不是一個必要的東西,於是就會直接去做其他動作。

我們可以通過提取擋拆樣本的方式,讓中鋒球員在比賽中更多地運用擋拆風格。通過模型自模仿,我們可以將這種行為朝著擋拆方向進行引導。這樣,中鋒球員的擋拆次數就會變得更多。這些技巧和方法是可以實現並發揮作用的。

03

RLHF微調遊戲AI Bot模型

我們前面提到的問題是關於主觀感受和客觀指標之間的差距。儘管我們的客觀指標可能會得到很大提升,但在主觀上可能並沒有明顯的感受,甚至可能覺得好像並沒有什麼提升。因此,我們需要找到這個差距(GAP)所在,以便更好地彌合主觀和客觀之間的鴻溝。

在模型訓練完成後,我們使用客觀指標來進行評估。然而,這個客觀指標並沒有直接反饋到模型的訓練中,而只是提供了一種參考。最終,仍然需要人類進行評判,然後根據這些評判來調整模型。例如,如果我認為某個指標表現不夠好,我可以調整模型以改善該指標。

我們的最終目標是,讓客觀指標能夠直接反饋到模型的訓練中。如果模型的客觀指標表現不佳,能夠直接反饋並優化模型。然而,大部分客觀指標並不能直接用於模型的優化。

另一個問題是,客觀指標無法完全反映模型的擬人化程度和風格化程度。

現有方案的思路是在宏觀的數據層面進行優化,通過模仿學習或自我模仿學習,將AI的行為引導到我們想要的數據統計分布方向,使其擬合得更好。

然而,對於主觀目標,人類並不是從數據分布方面去評判的。無論你在數據統計方面做得多麼出色,如果有一次沒有做對,那麼人類會認為你和他們的認識不太符合,從而判定你的模型不正確,認為你使用的是機器人。即使模型在客觀指標上有一萬次的成功率,但只要有一次失敗,就會影響人類對模型擬人化或風格化的判定。

因此,我們考慮是否可以從人類的主觀反饋中學習。已經證明,這是可行的。如果行為做得不理想,我們會提供一些標籤或其他反饋。這些反饋會形成新的數據,反映人類的反饋和主觀評價。這些數據將用於進行RHLF (基於人類反饋的強化學習),從而進一步優化模型。

我們進行了一些初步的實驗,目前也在進行整體優化。我們發現從主觀上講,該模型的跟防不太好,防守時跟的比較遠,不夠嚴密。

因此,我們考慮使用pair-wise的標籤來判斷左邊做得好還是右邊防守做得好,然後通過這種方式進行標註,形成數據。

數據被轉化為獎勵函數(reward function),然後用於進行強化學習的fine tune。在訓練過程中,我們發現RLHF過程的訓練會使Bot的跟防距離不斷下降,最終達到一個不錯的水平。

讓我們來看一下左右對比。左邊是通過RLHF訓練後的結果,它會及時跟上,比如庫里這個球員去防守。而右邊如果仔細看的話,會發現它中間有一段時間朝裡面跑了。因為它的對位球員實際上在跑向這邊,而這個庫里應該直接跑到那邊去防守。所以這個跟防在右邊的表現稍微差一些。因此,通過RLHF這種方法,我們可以進行一些調整。

因此,右邊的跟防表現得稍微差一些,但通過RLHF這種方法,我們可以進行一些調整來改善這種情況。

我們的整個方案pipeline就是這樣的。首先進行數據採集,但在數據採集之前,我們可以使用強化學習的方式對模型進行預訓練。然後,基於我們設定的目標,我們可以進行自我模仿學習。為了確保強度,我們會加上強化學習的保障措施。

然後,在訓練出模型之後,我們再通過主觀評判的方式,使用RLHF進行微調。這個過程可以不斷疊代,因為像ChatGPT一樣,可能需要不斷調整和完善模型的效果。

如果這個閉環能夠建立起來,AI工程師就可以較少地介入調整獎勵和參數等問題,從而在一定程度上實現通用化生產,而無需進行複雜的操作。

非常感謝大家的參與。這個技術非常有趣,它們可以在我們的遊戲生產pipeline中發揮作用。其中,一些現有的技術可以為我們提供幫助。

04

問答環節

問題一:語音助手的回覆風格化也是類似的思路嗎?

語音助手風格,我覺得也可以用這種方式進行。語音助手可以採用多種風格,比如甜言蜜語型或犀利型等。為了將這些風格數據分開,需要設定一些數據指標,並使用模仿學習或監督學習的方式,將風格化的數據更多地用於訓練模型。基模型可以通過Lora或其他方式提取出想要的風格化數據,然後快速進行風格變化。在遊戲開發中,我們也採用了類似的方式,取得了不錯的效果。基模型建立後,提取出風格化數據,大概只需要幾個小時就可以完成訓練目標。

問題二:多目標學習是如何實現的?

多目標學習,目的是在一個模型中實現多種風格。我們可以先從一個模型實現一種風格開始,然後逐漸擴大模型,加入風格化的變量,將不同的風格區分開來,避免目標之間的衝突。模型中需要有一個體現風格目標的嵌入變量。另外,還可以通過在已有模型上疊加不同的Lora模型來實現多目標,因為Lora是一個比較輕量級的網絡,可以不斷往上添加。

問題三:對於多目標強化學習若干個目標之間還有比較強的聯繫。那您這塊有什麼建議嗎?

對於多目標強化學習,多個目標之間存在較強的聯繫,可以考慮將它們視為一個整體,使用傳統的multi-objective方法進行求解。這種方法可以通過優化一個總體目標來綜合考慮多個目標,尋求一個多目標最優解。

同時,也可以考慮採用優先級層次結構或權重的獎勵函數等方法,將多個目標整合為一個總體目標,並根據優先級或權重進行優化。

然而,這些方法可能會增加計算的複雜度,特別是對於實際應用中的大規模問題。因此,在選擇方法時需要權衡計算複雜度和求解效果。此外,還需要根據具體問題進行調整和優化,以獲得更好的結果。

了解更多數據分析知識、與更多優秀的人一起進群交流請掃碼

CDAshujufenxi後拉您進群