如何讓 NPC 更像真人? | 人人都是產品經理

編輯導語:NPC是遊戲中不可或缺的一部分,它為玩家打造了一個有生命力的虛擬世界。與玩家串聯起了遊戲世界。但傳統的AI還存在著很多缺陷,以致於背上「智障」的罵名。如何能夠製作出優秀的遊戲AI(遊戲NPC)⽆疑是遊戲開發者苦苦探求的問題,作者對如何NPC更像真人作出了分析與總結。

遊戲中的⾮玩家⻆⾊作為遊戲的重要組成部分,對於遊戲的可玩性的塑造有深遠的影響。但是⻓久以來驅動這些⻆⾊的⼈⼯智能技術⼀直存在巨⼤的缺陷,⽽使得這些遊戲中的⼈⼯智能飽受「⼈⼯智障」的罵名。這不僅極⼤地影響了遊戲的體驗,也制約了遊戲開發者設計遊戲的思路。

隨著深度強化學習技術的發展,⾃動化地製作智能體成為了現實,但是這些智能體往往「勇猛」有餘,「⼈性」不⾜。本⽂從⼈⼯智能技術研究與實踐的⻆度探討了如何能夠製作出像人一樣操作的遊戲智能體。

一、為什麼遊戲需要AI?

⾃電⼦遊戲誕⽣之始,為了能夠為玩家打造⼀個有⽣命⼒的虛擬的世界,遊戲中往往都會添加諸多的⾮玩家⻆⾊(Non-Player Character, NPC)。他們最早可以追溯到⻰與地下城的桌游(DungeonsDragons)[1],在這類桌游中通常需要⼀個遊戲主持⼈來扮演⾮玩家的⻆⾊提供給玩家決策的選擇和下⼀步的指引。

他起到了串聯起玩家與遊戲世界的作⽤,甚⾄可以說整個遊戲的進⾏節奏都由他來掌控。

⽽到了電⼦遊戲中,這種⾮玩家的⻆⾊的職責就更加豐富了。他們或許是任務的發布者,或是關鍵劇情的⼈物,或是玩家要挑戰的對⼿,抑或僅僅是玩家擦肩⽽過的路⼈。

但是他們串聯起玩家與遊戲世界的作⽤依然沒有變。如果沒有他們,遊戲設計者是很難構建出⼀個充盈豐富的虛擬世界的。

很多經典的NPC由於背負著豐富的故事劇情,成為⼀代玩家⼼中寶貴的回憶。⽐如⼤家熟知的《超級⻢⾥奧》中的碧琪公主(Princess Peach),就是玩家操控的⻢⾥奧⼀直去努⼒營救的對象。

儘管碧琪公主在遊戲中更像⼀個花瓶NPC,與主⻆的交互並不多。但是正是由於她的存在,賦予了《超級⻢⾥奧》整個遊戲的原始驅動⼒。

更有甚者,諸多遊戲NPC的原型就是取材於我們的真實⽣活。

⽐如《魔獸世界》中的暗夜精靈⼥獵⼈凱莉達克(CayleeDak),她的原型就取材於現實⽣活中的⼀個獵⼈玩家,由於她經常在遊戲⾥幫助別⼈⽽備受⼴⼤玩家歡迎。

後來她因⽩⾎病不幸逝世后, 遊戲中的公會專⻔為她舉辦了盛⼤的虛擬葬禮以紀念她的樂觀友善。

葬禮上數百名玩家集結在暴⻛城的英雄⾕,⼀路游⾏⾄暴⻛城的花園區,並按照美式習俗鳴放了21響禮炮。《魔獸世界》官⽅得知后便專⻔為她設計了這個NPC和相關的劇情任務,為遊戲增添了不少溫度。

NPC可以說是遊戲中不可或缺的⼀部分。是他們點亮了整個遊戲虛擬世界,⼀⽅⾯讓玩家更好地融⼊遊戲,另⼀⽅⾯傳達了遊戲的態度。但是隨著遊戲創作者的野⼼越來越⼤,玩家對遊戲的要求也越來越⾼,單純只會讀劇本的NPC已經很難滿⾜構建⼀個優秀虛擬世界的要求。

這些NPC的⾏為必須變得更加豐富⼀些,能處理的問題必須更複雜⼀些才能讓這個虛擬世界變得更有趣,更吸引玩家。其實早在1950年,遊戲AI的概念就被引⼊到了電⼦遊戲中[2],就是為了⽤⼈⼯智能的技術來設計出更智能的NPC,因此遊戲AI也常常成為了遊戲NPC的⼀種代稱。

但是傳統的遊戲AI製作技術存在著諸多缺陷,使得這些遊戲中的⼈⼯智能⼀直飽受⼈⼯「智障」的罵名,這不僅極⼤地影響了遊戲的體驗,也制約了遊戲開發者設計遊戲的思路。如何能夠製作出優秀的遊戲AI(遊戲NPC)⽆疑是遊戲開發者苦苦探求的問題。

二、為什麼現在的AI是智障?

為什麼現在的AI很多時候總是看上去像個智障呢?其實背後的主要原因是驅動AI的模型太簡單了。⽬前主流的遊戲AI都是基於⾏為樹這樣的規則系統實現的,它的複雜度有限,並且規律易尋。反觀⼈類⼤腦⾥這麼多神經元錯綜複雜的交匯著,⾄今科學家們也沒完全解開⼤腦的秘密。

我們以經典的《吃⾖⼈》遊戲為例來介紹⼀下如何⽤⼀個規則系統實現遊戲AI。吃⾖⼈遊戲的玩法如圖所示,就是要控制吃⾖⼈儘可能多地吃掉散布在迷宮各處的⾖⼦。但是其中的難點在於,會有能夠傷害吃⾖⼈的幽靈在其中遊盪,吃⾖⼈為了得到更多的⾖⼦不得不躲避幽靈的進攻。

那麼如果要⽤規則系統設計⼀個吃⾖⼈的AI,該怎麼做呢?⾸先,我們需要考慮吃⾖⼈可能會遭遇哪些狀態?⽽當遭遇這些狀態后,吃⾖⼈⼜可以採取怎樣的操作?不同的操作⼜可以把吃⾖⼈引⼊怎樣的狀態中去?當把這些問題答案羅列出來之後,我們就能夠組織出吃⾖⼈在不同狀態下應該如何決策的規則系統,如下圖所示:

在「尋找⾖⼦」狀態下,可以設置讓吃⾖⼈隨機游⾛,如果看到⾖⼦就去吃掉它的⾏為。⽽當發現幽靈正在附近的時候,就進⼊到「躲避幽靈」狀態,這時可以將吃⾖⼈的⾏為設置為遠離幽靈,⽽⽆視⾖⼦的存在。

當幽靈脫離了之後,狀態⼜可以轉換到「尋找⾖⼦」。如果吃⾖⼈很幸運地吃到了⼀顆能量藥丸,那麼他就獲得了擊敗幽靈的能⼒,此時狀態可以轉換為「追擊幽靈」……

從上⾯的吃⾖⼈的例⼦中我們可以看出,基於規則的AI系統是有明顯的缺陷的。⾸先,如果遊戲場景⽐較複雜或者說對智能體的⾏為和能⼒有⽐較⾼的要求,會有⾮常複雜繁多的狀態。

分解出這些狀態、編寫狀態中的⾏為、設計狀態之間的轉移條件⽆疑會帶來巨⼤的遊戲開發成本。但是遊戲開發的成本是有限的,開發⼈員的精⼒也是有限的。

其次,隨著遊戲的設計越來越複雜,分解這些狀態、編寫規則系統也已經變得越來越不太可能了,更別說開發⼀個栩栩如⽣的規則AI系統了。

但是,最重要的⼀點是當⼈類與這些AI進⾏交互的時候,可能會產⽣很多意料之外的狀態,⽽這些規則系統是完全不具備泛化性的,對於這種意外狀態只能表現出智障⾏為。

三、為什麼遊戲AI需要像⼈?

隨著遊戲這麼多年的發展,遊戲的形態和玩法都變得越來越豐富。但是我們可以發現,在那些特別吸引⼈的遊戲中,有兩種類型的遊戲是特別突出的。

⼀種是構建了⼀個引⼈⼊勝的虛擬世界,⾥⾯的⼈和事是那麼真實,以⾄於讓我們深深沉浸其中。⽐如在《荒野⼤鏢客》中,當你漫步在⼩鎮的街道上,也許會看到⼀個婦⼈倒在地上哭泣求助,如果你過去幫助她,她會突然變臉掏出槍指著你說「搶劫!」。

這種看似對玩家的當頭⼀棒,卻⼜是⾮常符合那個時代背景的事件真的讓玩家⽆法⾃拔。

⽽同樣也是打造了⼀個⻄部場景樂園的《⻄部世界》更是吸引了⽆數的權貴到其中遊玩,它本質上就是⼀個有⾼度擬⼈AI的動作探險遊戲,只不過⾥⾯AI的智能和外形都進化到了⼀個遠⾼於現在電⼦遊戲的形態。

另外⼀種是構建了⼀個合適的與真⼈在線競技的場景。多⼈在線對戰變得越來越熱⻔,其背後的邏輯也可以解釋為在遊戲消費內容有限的情況下,玩家還是希望更多地與更聰明的⼈類進⾏遊戲,因為⼈類的創造⼒和遊戲⽣命⼒是旺盛的,即便在這個過程中可能要忍受謾罵與不快。如果我們⽤⾜夠像⼈類玩家的AI來填充,這類遊戲本質上和第⼀類也沒有區別。

總⽽⾔之,就是遊戲中的⻆⾊越像⼈,就越能給玩家帶來吸引⼒。它並不⼀定需要像⾼⼿玩家⼀樣將遊戲玩得滾⽠爛熟,但是要能做出⼈類才會做出的反應,即便那些反應是不理智的。

因此遊戲⻆⾊⾏為的智能性對於打造整個遊戲的遊戲性、以及對玩家體驗的塑造有著⾄關重要的作⽤。但是就像前⾯提及的⾏為樹⼀樣,這麼多年過去遊戲中誕⽣了⽆數的AI,但是⼤多數還是會被玩家認為不像⼈,只會固定的套路,讓玩家對遊戲興趣⼤減。

四、怎麼判斷AI像不像⼈呢?

那怎麼才能判斷AI到底像不像⼈呢?這個問題並不好回答,具體到不同的場景⾥,答案可能都不⼀樣。⽐如機器可以很好地將⼀段複雜的中⽂翻譯成英⽂,但是⼜很難聽懂「我去!我不去」「那麼到底去不去呢?」這樣的對話。那麼這個機器到底像不像⼈呢?

實際上,在⼈⼯智能誕⽣之初,計算機之⽗圖靈(AlanTuring)就討論過這個問題,並提出了著名的圖靈測試(TuringTest)[3]作為⼀種解決⽅案。如下圖所示,假設有⼀個⼈和⼀台機器被隔離在⼀個⼩房間⾥,我們看不到⾥⾯到底是⼈還是機器,但是我們可以通過⼀些裝置與他們進⾏溝通。

通過⼀系列提問,我們需要判斷究竟哪個是機器哪個是⼈,如果我們的誤判⽐例超過30%,那麼就可以說機器通過了圖靈測試。圖靈認為通過圖靈測試的機器具備了和⼈類⼀樣的智能。

在遊戲中,我們其實也希望AI能夠達到類似這種以假亂真的效果,⾄少在遊戲的某個具體任務上,AI能夠通過圖靈測試,讓玩家覺得AI是鮮活的,有⽣命⼒的。

雖然圖靈測試對於判斷AI像不像⼈直觀並且可靠,但是卻並不實⽤。⾄少在優化AI的過程中,使⽤這樣的⽅式去評判成本太⾼了。因為我們很難直接把⼈當成AI的優化器,讓⼈判斷了AI做的像不像⼈之後,再反饋到AI的模型上,讓AI去修改參數,再讓⼈類判 斷。

這樣⼿把⼿的「⼈⼯」智能,對於⼈的精⼒消耗⼤不說,也很難覆蓋到所有可能的場景。如何更好地度量AI的擬⼈性依然是⼀個⾮常重要的研究課題,但是最基本的我們可以從⼈類的⾏為數據和AI的⾏為數據的對⽐中羅列出哪些⾏為是不像⼈的、哪些是像⼈的,從⽽逐漸去優化不合理的部分。這對於⼀個有限的問題空間⽽⾔並不是⼀件⾮常困難的事情。

五、從⼈類的⾏為⾥學習

接下來我們就要考慮如何得到⼀個像⼈的AI模型。既然像⾏為樹這種總結經驗式的AI製作⼿段對於提升AI的智能性⾮常困難,⼀個最直接的想法便是能不能直接從⼈類過往的遊戲⾏為⾥學習經驗呢?答案是肯定的。⼈類在玩遊戲的時候,能夠產⽣⼀系列的遊戲狀態-遊戲操作對,這些遊戲狀態-動作對我們稱為⼈類示例。如果將⼈類⼀局遊戲的示例按順序組織起來,形成⼀條⾏為軌跡⼀條遊戲的序列tr,即:

那由m條⼈類示例軌跡組成的數據集可以記為:

從⼈類⾏為⾥學習的⽬標可以認為是希望AI在遊戲中的表現與⼈類的表現越接近越好。如果能夠從這種數據⾥估計出⼈類的策略分佈,並且引⼊⼀個回報函數來刻畫這個表現程度(⽐如遊戲的技巧得分、遊戲的競技得分等的綜合表現)。那麼模仿⼈類⾏為的學習⽬標就可以表示為找到⼀個AI策略,使得它盡量能夠取得和⼈類接近的回報,即:

六、行為克隆

如何求解這個問題呢?⼀種直接的想法是通過⼈類的示例數據集:

來估計⼈類的⾏為策略pi* ,這種⽅式也被稱為⾏為克隆(Behavior Cloning)[4]。⼀種常⽤的估計⽅法就是最⼤似然估計(Maximum Likelihood Estimation)。假設要求解的策略模型表示為pitheta(theta是模型的參數),那麼它產⽣⼀個數據樣本(s,a)的似然即可以表示為pitheta(a|s)。最⼤似然估計可以轉換為最⼤化對數似然,即:

這是⼀個凸優化問題,我們可以直接使⽤⼀些強⼤的機器學習學習⽅法來求解。⽐如,近⼏年⻜速發展的深度學習,由於⾮常強的學習擬合能⼒⽽被⼴泛應⽤到圖像、⾃然語⾔處理等領域,它同樣可以幫助我們來擬合⼈類的⾏為。

不過值得注意的是,在進⾏機器學習的時候,每個樣本都是作為獨⽴的樣本去對待的(機器學習的樣本獨⽴同分佈假設),但是樣本實際上都是從序列數據中收集⽽來,並不滿⾜獨⽴同分佈的假設。

這就會導致策略模型如果在某⼀步發⽣了⼀丁點⼉的錯誤預測,那麼這個錯誤會被⼀直累積下去,導致AI遇到⼀些⼈類從來沒有遇到過,並且AI也沒有被訓練過的場景。這時候AI的表現就會⾮常糟糕。

如下圖所示,我們可以很直觀地從⼀個賽⻋遊戲的例⼦中明⽩,假如在學習⼈類的賽⻋軌跡的時候,在彎道的控制上出現了⼀定的誤差,那麼這個誤差會被⼀直延續下去,直到賽⻋撞出賽道。但是如果沒有⼈類撞出賽道之後的補救⾏為數據,⾏為克隆將很難幫助我們得到⼀個滿意的⾏為策略。

不難看出,⾏為克隆雖然簡單並且⾼效,但是決策序列越⻓⾏為克隆就越可能累積很⼤的誤差,導致後續的決策越來越離譜。如果能夠獲取⾜以應付各種意外情況的海量⼈類示例數據,那麼這個累積誤差問題才能得到緩解,但是這⼀點在遊戲研發階段通常都很難滿⾜。不然我們只能寄希望於這些累積誤差不會導致對遊戲致命的影響。

為了解決這個問題,也有學者提出名為DAgger(DatasetAggregation)[5]的⽅法。這個⽅法的基本思想是不斷利⽤⼈類來糾正⾏為克隆中出現的錯誤。具體演算法可以描述為:

  1. ⾸先將⾏為克隆得到的策略繼續與環境交互,來產⽣新的數據
  2. 然後將這些數據提供給⼈類,以獲得⼈類在這些數據上的⾏為,從⽽得到⼀個增⼴的數據
  3. 在增⼴后的數據集上,重新進⾏⾏為克隆,以得到新的策略
  4. 重複上述過程

由於在不停和環境交互的過程中利⽤⼈類的知識對數據進⾏了增⼴,DAgger演算法會⼤⼤增加數據對狀態空間的覆蓋度,從⽽減少學習時候的誤差。

但是也需要注意,不停地讓⼈類提供指導本身也並不是⼀件簡單的事情,即便是⼀個狂熱的玩家也很難不厭其煩地教AI玩遊戲,況且如果遊戲⾜夠複雜,遊戲策略⾜夠豐富, 那麼DAgger需要向⼈類請教的示例數量同樣可能⾮常海量。

六、逆強化學習

上⼀節中我們提到,藉由⾏為克隆學習得到的策略⼀般會受到累積誤差問題的影響,那麼有沒有另⼀種⽅法能夠減輕累積誤差問題帶來的影響呢?答案是肯定的,這就是逆強化學習[6]。

逆強化學習與⾏為克隆不同,並不直接求解智能體的⾏為策略,⽽是嘗試從示例數據集中求解出⼈類所使⽤的獎勵函數⽤於解釋⼈類策略的⾏為。在使⽤逆強化學習解決模仿學習問題時,我們就可以使⽤強化學習在學到的獎勵函數上求解最優的⾏為策略。

換句話說,⾏為克隆是單純的「模仿」,⽽基於逆強化學習的模仿學習則是嘗試「理解」⼈類⾏為的內在邏輯(獎賞函數),再根據它「學習」⾃⼰的⾏為,⾃然⽐⾏為克隆更容易適應環境中的⼩誤差。

在逆強化學習中,最核⼼的部分就是根據示例數據集求解得出的獎勵函數,我們通常要求其滿⾜這個性質:當使⽤這個獎勵函數時,使⽤⼈類策略獲得的累積期望獎賞,⽐使⽤其他任意策略所能獲得的累積期望獎賞都要多。換句話說,我們認為⼈類策略是在使⽤這個獎勵函數時的最優策略,也就是:

得到⼈類策略使⽤的獎勵函數后,我們就可以使⽤這個獎勵函數構建⼀個新的任務:

並在這個新的任務上⽤強化學習來求解最優的⾏動策略pi*。根據我們之前對性質的描述,在這個任務上表現最好的⾏為策略就是⼈類策略 ,即:

通過這種⽅式,我們就得到了⼀個能夠模仿⼈類的AI策略。

逆強化學習雖然能夠解決⾏為克隆中存在累積誤差的問題,但它本身也存在諸多問題,⽐如逆強化學習假設⼈類總是做出最優的選擇,這個假設通常在模仿⼈類⼈類的問題中顯得過強了。

此外,逆強化學習問題本身並不是⼀個良定義的問題,通常有多個可能的獎賞函數能夠滿⾜要求,例如對任意狀態-動作對都給出0值的平凡獎勵函數可以成為任意逆強化學習的解。

七、對抗式模仿學習

⾏為克隆和逆強化學習作為兩種模仿學習的⽅法,都存在⼀定的缺陷,我們⾃然就會考慮是否有⼀種⽅法可以將⼆者的優勢結合起來,既能直接求解⾏為策略,⼜不會受到累積誤差問題的影響呢?

在逆強化學習中,我們學習了⼀個獎勵函數, 我們可以⽤這個獎勵函數來評估智能體策略與⼈類策略的相似度,但是這個獎勵函數不能直接指導智能體進⾏⾏動。那麼既然智能體的⽬標是模仿⼈類的策略,那麼我們是否可以不⽤顯式的求出⼀個獎勵函數⽤來評估AI策略與⼈類策略的相似性呢?

有沒有可能直接⽤「和⼈類⾏為的相似度」這樣的指標來引導強化學習對⾏為策略的學習呢?從這樣的思路出發,我們就得到了⽣成對抗模仿學習(Generative Adversarial Imitation Learning, GAIL)[7],它通過⽤⼀個評估智能體與⼈類的相似度的函數作為獎勵函數的⽅式來對⼈類的策略進⾏模仿。

GAIL是⼀種基於⽣成式對抗⽹絡的⽅法,與各種使⽤⽣成式對抗⽹絡的⽅法相似,它也會構建⼀個⽣成器G和⼀個判別器D,並讓⼆者不斷進⾏博弈並交替進⾏更新。在GAIL中,判別器D是⼀個⼆分類器,通常是⼀個深度神經⽹絡,它的輸⼊是狀態-動作對(s,a),輸出則是⼀個(0,1)區間內的概率值,代表輸⼊的狀態-動作對由⼈類⽣成的概率。和⼀般的⼆分類任務相似的,每輪訓練中我們可以可以簡單的通過最⼩化交叉熵損失函數:

接著對D進⾏更新。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

GAIL中的⽣成器G則是智能體的⾏為策略,訓練中需要與環境不斷交互⽣成軌跡,它會使⽤強化學習⽅法進⾏更新,使⽤判別器的輸出作為強化學習任務中的獎勵函數。這就意味著,被判別器D認為更像⼈類的⾏為會得到更多的獎賞,因此隨著訓練的推進會逐漸向⼈類⾏為策略逼近。

⼆者經過多輪迭代最終收斂后,判別器D⽆法區分出真實軌跡與⽣成器⽣成的軌跡,此時我們的⽣成器G 就是⼀個能夠有效模仿⼈類⾏為策略的AI策略。

當然,作為⼀種基於⽣成對抗式⽹絡的⽅法,GAIL也有與GAN相似的缺點:實際應⽤時需要⼤量經驗性的trick,某些情景下很難訓練到理想的收斂結果。但由於GAIL能給模型帶來的更強的泛化性,以及更少的示例數據需求仍然使它成為了⼀個優秀的模仿學習⽅法。

八、Avatar平台中的模仿學習

Avatar是IEG研發效能部遊戲AI研究中⼼團隊⾃研的分散式在線強化學習訓練框架,已經在如競速、格⽃、FPS、Moba等多個品類的遊戲上進⾏探索和實踐,部分遊戲AI已經上線。

本章我們重點討論在真實遊戲業務場景中訓練強化學習模型的過程中,為什麼需要模仿學習,並介紹我們在Avatar訓練框架下在模仿學習上做的探索。

1. 真實業務需求

以我們在⼯作中的真實業務場景為例,當遊戲業務與接⼊Avatar強化學習訓練框架時,除通過AvatarServiceAPI將遊戲客戶端與訓練框架交互接⼝對⻬之外,都不可避免地需要實現下列內容。

  • 特徵⼯程:將遊戲原始數據轉換為形如MDP(state/action)格式的數據,並設計狀態和動作的數據內容
  • 獎賞設計:針對當前對局狀態和模型預測的動作給出正負反饋
  • ⽹絡設計:根據MDP設計對應的神經⽹絡結構

經歷過的同學⼀定能夠體會到被調參⽀配的恐懼,⽽這三項每個都是調參地獄。例如[8]詳解了獎賞設計(reward shaping),⽂章有多⻓,說明reward shaping這⼀過程有多困難。

調參⼯作每⼀次微⼩調整都需要數⼗⼩時甚⾄數⼗⽇的驗證,⽽指東打⻄的結果太容易使⼈崩潰。

不同於研究領域中RL的重點更多傾向於關注「更⾼的分數、更強的決策」,⽽實際業務中甲⽅爸爸的要求是「⾼擬⼈性、⾼多樣性、⾼可靠性、覆蓋各個能⼒段」。這⼆者之間的⽬標差距為reward shaping帶來了更⼤量的⼯作量。

⻓遠來看,⽹絡設計在學術界已有諸多的NAS(NetworkArchitectureSearch)相關研究,可以⾃適應的⽣成效果差不多的⽹絡結構,與實際業務的相關性較低。

⽽特徵⼯程和獎賞設計則都與業務強相關,不僅要對ML/DL/RL有相當的經驗,也需要對業務有相應的理解才能訓練出甲⽅爸爸滿意的、「像⼈⼀樣的」強化學習模型。

當有了「模型能夠做出像各種各樣不同玩家能做出的⾏為」,這⼀普遍需求后,如何利⽤真實玩家⾏為引導強化學習模型訓練的想法就會⾃然⽽然地浮現出來。也就是如何利⽤模仿學習,推進現有的強化學習訓練進⼀步提升擬⼈性、多樣性。

九、Avatar框架內設計

1. Avatar設計簡介

以PVE遊戲為例,Avatar訓練框架核⼼包含了三個服務——Agent Server, Actor Server和Learner Server。核⼼交互、MDP處理⼯作由Agent Server完成,其處理與遊戲客戶端和另外兩個server的交互(如下圖所示,紅⾊部分由業務⽅實現)當客戶端連接后,輪詢等待預測請求,並從對應的預測服務中獲取結果,返回給客戶端。

當積累夠⼀定數量的預測數據后,Agent Server將其組裝成訓練樣本發送給訓練服務;

Actor Server預測訓練⽹絡當前policy返回的動作結果;Learner Server則負責對⽹絡進⾏非同步訓練,並定期同步參數給Actor Server。

本⽂不具體介紹Avatar框架的具體實現⽅式和⼯作原理,詳⻅我們的iwiki⽂檔[9]以及《Avatar⼤規模分散式訓練優化實踐》[10]。

2. 輔助⽹絡設計

從框架設計⻆度考慮,模仿學習可以理解為利⽤某種監督學習⼿段提升強化學習訓練效果的⼀種⽅法,我們將這類⽹絡稱之為輔助⽹絡(Auxiliary Model)。為了降低業務⽅的學習成本,以及儘可能保證框架的模塊化、通⽤性,我們完全復⽤了Actor和Learner 模塊,僅新增對監督學習模型配置、輸⼊數據標準標準定義以及loss function⽀持。

這設計過程中,我們重點處理的依然是模型間的交互流程,以及模型與遊戲間的交互⽅式的變化。我們認為,在MDP結構下,輔助⽹絡對強化學習主模型訓練主要影響位點有以下三處:影響policy action;影響某個state,或state/action組合的reward;增加額外的loss。

由此,我們額外開放了交互接⼝(如下圖所示),業務實現代碼可以獲取每個⽹絡的預測結果,並⾃由選擇交互時機。

3. 模仿學習實現

具體到模仿學習的實現,我們實現了對抗式模仿學習,模仿學習被認為是「影響到reward的監督學習模型」,主要負責判別當前狀態(動作)是否是符合⼈類⾏為的狀態(動作)。在實際訓練過程中,模仿學習模型和強化學習模型⼀同訓練。

‍‍

在業務同學側,使⽤模仿學習僅除了設計⽹絡結構之外,僅需要處理主模型在⽣成訓練樣本時疊加模仿學習輸出的獎賞,以及將⼈類⾏為數據引⼊到模仿學習訓練過程中即可。

十、模仿學習在競速類遊戲上的探索

我們已經嘗試在競速類遊戲上對對抗式模仿學習進⾏了初期探索,將不同賽道地圖中使⽤業務中已上線的不同能⼒段模型的錄像數據視為模仿學習的⾏為數據。

同時,我們去除了reward_shaping中所有⼈⼯設計的獎賞,僅‍‍保留模仿學習輸出和最終圈速與⽬標圈速的相近程度作為實際獎賞。

在其中⼀個賽道上的圈速收斂曲線如下圖所示:

藉助對抗式模仿學習,使⽤不同能⼒段位的⾏為數據,最終訓練出的強化學習模型能⼒段位⼗分貼近於⽬標能⼒段位,且實際⽐較發現其收斂速度與原始的僅通過reward_shaping收斂效率相當。

在競速類遊戲中初步實現了我們預期⽬標:減少繁瑣的獎勵調整⼯作量,並實現模型能⼒多樣化。

十一、總結與展望

打造⾼智能的遊戲AI⼀直是遊戲製作中繞不開的話題,但是過去由於技術所限,導致遊戲AI的智能⽔平⽐較低,因此遊戲製作者天然地考慮了這個缺陷,⽽將遊戲的亮點設計在其他地⽅,遊戲AI僅僅只起到⼀個補充的作⽤。

但是基於示例的強化學習⽅法讓我們看到⼀線希望,就是僅通過少許的⼈類示例數據,也能夠讓遊戲AI獲得相當⾼程度的智能。

我們相信在未來,只要能夠打造更為擬⼈、更為智能的AI,他們不僅可以幫助我們為玩家打造更好的遊戲體驗,甚⾄還會對遊戲的製作思路和⻆度帶來翻天覆地的變化。遊戲AI或許會成為整個遊戲的最核⼼資產,遊戲的玩法也將是由玩家與這些AI來共同定義的。

‍‍‍‍‍‍‍‍‍‍‍‍‍

註釋:

  1. ⻰與地下城桌游Dungeons&Dragon
  2. 第⼀款帶有AI的遊戲Nim
  3. 圖靈測試Turing Test
  4. Dean Pomerleau. 「Efficient Training of Artificial Neural Networks for Autonomous Navigation」. In: Neural Computation 3.1 (1991), pp. 88–97.
  5. St.phaneRoss, Geoffrey J. Gordon, and DrewBagnell. 「AReduction of Imitation Learning and Structured Prediction to No-Regret Online Learning」. In: Proceedings of the 14th International Conference on Artificial Intelligence and Statistics. 2011, pp. 627–635.
  6. RUSSELL S J. Learning Agents for Uncertain Environments[C] // Proceedings of the Eleventh Annual Conference on Computational Learning Theory. 1998 : 101 – 103.
  7. HO J, ERMON S. Generative Adversarial Imitation Learning[C] // Proceedings of the 30th Annual Conference on Neural InformationProcessing System. 2016 : 4565 – 4573.
  8. Reward Shaping https://cloud.tencent.com/developer/article/1693899
  9. Avatar 框 架 iwiki https://iwiki.woa.com/pages/viewpage.action? pageId=612412665
  10. Avatar⼤規模分散式訓練優化實踐https://km.woa.com/articles/show/522742?ts=1632620082

 

作者:楊敬文 、姜允執、李昭,IEG研發效能部 遊戲AI研究中心;公眾號:騰訊研究院(ID:cyberlawrc)