什麼是深度強化學習?又是如何應用在遊戲中的?

2019-10-23     GameRes遊資網

文/騰訊遊戲學院



講師介紹:Shimon騰訊互娛研發效能部應用研究工程師

導語

本期真經閣文章來自Gcloud雲研社供稿,由應用研究工程師Shimon分享深度強化學習技術在遊戲領域中的應用,文章由淺至深,闡述了深度強化學習的三問,是什麼,為什麼,怎麼做,並穿插了技術在遊戲項目中的具體應用。

1.引言

遊戲是一項非常重要的娛樂行業,是世界上最賺錢的行業之一。中國音數協遊戲工委(GPC)、伽馬數據(CNG)、國際數據公司(IDC)聯合發布的《2018年中國遊戲產業報告》中披露,2018年中國遊戲行業整體收入為2144.4億元,同比增長5.3%,占全球遊戲市場比例約為23.6%,是世界第一大遊戲市場。遊戲產業發展的歷史中,每次重大技術革新都會賦予遊戲更多的內涵與改變。微型處理器的誕生,讓電子遊戲登上歷史舞台,個人電腦的普及,開啟了單機遊戲的時代,網際網路的興起,則讓網遊在世界上流行起來,智慧型手機的普及,將我們帶入了手游時代,而各種遊戲引擎的出現和更新則提高了遊戲開發的速度和質量。


中國遊戲市場實際銷售收入變化



一次次的技術更新或是創造了新設備,或是提供了新場景,或是提高了遊戲開發的效率。如今的遊戲產業中,仍然存在著一些痛點,比如遊戲內機器人和NPC的研發流程繁瑣且難以達到很好的效果,比如角色動畫的開發流程非常複雜,比如遊戲的測試流程和精細化運營流程存在改進的空間,在傳統的遊戲開發流程中,它們都需要大量有經驗的研發人員進行支持,導致遊戲研發成本居高不下。

另一方面,機器學習應該是近年來受到最廣泛關注的技術之一。隨著新的機器學習算法的提出及算力的提高,機器學習技術正在影響著諸如金融,安防,醫療等眾多行業,提高了這些產業的生產效率。其中,以深度學習為代表的監督學習方法最廣為人知,使用也最為廣泛。深度學習主要通過大量的有標記樣本來進行訓練,基於深度模型的強大的表示學習的能力,在擁有大量有標記數據的場景下往往能夠得到顯著優越的效果。比如基於大量的有標記的動物圖片進行訓練,得到的模型就能夠判斷一張新圖片是什麼動物。

然而,在很多場景下有標記的樣本很難獲得,代價很大。以上面提到的研發遊戲內的Bot和NPC為例,如果我們想用深度學習技術,就必須用大量的人類玩家在遊戲內的操作數據來訓練模型。這就意味著這種方法只在那些已經上線且記錄了用戶的大量操作數據的遊戲中有實現的可能性,適用範圍有限。角色動畫等場景也存在著相似的問題,本身就不存在足夠的數據來進行訓練。

與深度學習不同的是,深度強化學習是讓智能體在環境中進行探索來學習策略,不需要經過標記的樣本,在近年來也受到廣泛關注。基於深度強化學習,DeepMind研發的AlphaGo Zero在不使用任何人類圍棋數據的前提下,在圍棋上完全虐殺人類;OpenAI研發的Dota Five則在Dota遊戲上達到了人類玩家的頂尖水平;DeepMind研發的AlphaStar在星際爭霸遊戲上同樣擊敗了人類職業玩家。這些都成了深度強化學習發展的里程碑的事件,證明了深度強化學習在這些場景下的強大能力。



AlphaGO在圍棋上打敗了李世石


當然,深度強化學習也存在一些問題,其中重要的一點就是其必須通過不斷的試錯,探索環境進行學習來尋找更好的策略。在金融,電商推薦等場景,一次錯誤的嘗試可能意味著巨大的損失。但值得慶幸的是,遊戲本身就是一個仿真的環境,探索成本很低。也就是說,遊戲的這種特性使得深度強化學習可以幾乎無成本的獲取到大量樣本,以進行訓練提升效果。

基於上述原因,我們認為基於深度強化學習技術優化遊戲研發流程是一個很有前景的方案,在遊戲研發的一些場景中進行了嘗試,並取得了一定成果。在真實的商業遊戲中,我們會有其他更多的需求,比如成本要足夠低,Bot的行為要足夠擬人,訓練速度要足夠快以適應遊戲開發和更新的進度等,這些都是實際應用中更需關注的問題,我們也將在後續的文章中再仔細闡述。

本文中我們將先對深度強化學習的基礎知識進行回顧,之後再對其在遊戲中可能的幾個應用場景和應用方法進行介紹。

2.什麼是深度強化學習

2.1強化學習基本概念

機器學習研究的是如何通過數據或者以往的經驗來提高計算機算法的性能指標,使系統能夠在下一次完成同樣或者類似的任務時更加高效。根據反饋信號的不同,通常可以將機器學習分為監督學習,半監督學習,無監督學習和強化學習。其中,強化學習的訓練如圖3所示,其沒有現成的樣本,而是智能體在與環境的交互中收集相應的(狀態,動作,獎賞)的樣本進行試錯學習,從而不斷地改善自身策略來獲取最大的累積獎賞。



強化學習典型框架


強化學習通常採用馬爾科夫決策過程(Markov Decision Process,MDP)來作為數學模型。一個MDP通常可形式化為一個五元組(S,A,T,R,),其中S表示的是狀態的集合,A表示的是動作集合,T表示是在當前狀態下執行某動作轉移到某個狀態的機率,則表示對應的獎賞,γ表示折損係數。通常,我們用π來表示策略,即

表示在狀態s下執行動作a時的機率。強化學習的目標就是去找到一個策略能使得累積獎賞最大,我們用用

表示從初始狀態s0開始的累計折損獎賞:




同時,我們定義狀態值函數

,其表示的是從狀態s開始,在策略π下獲得的累積獎賞,該值函數隻取決於狀態s:




而狀態動作值函數

則被定義為:




顯然,其表示的是從狀態s,動作a開始,在策略π下獲得的累積獎賞。

2.2基於值函數的方法

顯然,如果我們知道每一個狀態動作對對應的值函數

,我們就能在每一個狀態下選擇值函數最大的動作,也就自然得到相應的最優策略。也就是說,可以通過求解值函數來獲取最優策略,這類方法也稱為基於值函數的方法。

Q-Learning是此類方法中最廣泛使用的方法之一,採用時序差分的方式對Q值進行更新。首先初始化起始狀態和Q值,然後每一次,智能體在當前狀態s執行動作a並收穫獎賞r,進入下一狀態s',並更新Q值,一次更新過程為:




其中,α表示學習率。當狀態和動作空間較大甚至是連續時,我們就無法實際計算每一個狀態動作對的值函數,因此需要引入監督學習中的方法,用模型來擬合值函數,即:

,稱之為值函數估計。當然,我們可以使用深度神經網絡來進行擬合,以利用其強大的表示學習的能力,此時也就得到深度Q網絡(Deep Q Network),也就是DQN,其在眾多的Atari平台遊戲上都取得了非常亮眼的表現。為了訓練神經網絡來擬合值函數,我們可以將第i輪疊代的損失函數設置為Q-learning中更新的差值的均方差,即:




然後,我們就可以利用包括梯度下降法在內的優化方法來更新網絡,從而實現對值函數的估計。在此基礎上,加上經驗回放和目標網絡兩個技巧,以解決採樣數據關聯性太大及網絡震盪的問題,DQN就可以在Atari上的很多遊戲上達到甚至超過人類玩家水平,取得了當時的最好表現。


用DQN算法玩Atari遊戲



2.3基於策略的方法

基於值函數的方法在很多情況下具有很好的收斂速度和收斂效果,但是卻不能應對動作空間過大甚至連續的情形,以及可能出現策略退化(Policy Degradation)的問題。基於策略的方法,也稱為策略搜索,通常可以採取一個參數化的函數對策略進行表示:

,,然後再尋找最優的參數w,以使得基於該策略的累計回報的期望最大,可以避免上述問題。具體來說,在一個多步的MDP中,累積獎賞可表示為:




其中,

是策略π的狀態密度函數,表示在策略π下出現狀態s的期望。為了得到最大的累積獎賞,即求解上式的最大值,可以先計算出上式的梯度:





然後就可以通過如下方式來更新參數:


,這就是策略梯度方法。在此基礎上,繼續引入演員和批評家算法(Actor-Critic)和優勢函數(AdvantageFunction)來降低方差提升學習效果,就得到了A2C算法,引入異步執行(Asynchronous)的框架提升訓練效率,就得到了A3C算法。而如果將優化理論中的信賴域(Trust Region)方法引入到強化學習中,進行一定的改進,就可以得到PPO算法,其學習速度和效果都非常好,已經成為如今最為流行的強化學習算法之一。


用TRPO算法控制仿真機器人的動作



3.更聰明的Bot和NPC

3.1遊戲內的Bot和NPC

當人工智慧與遊戲一起出現時,相信大家首先想到的就是在遊戲中會碰到的機器人(Bot)或者是非玩家角色(Non-Player Character,NPC),也就是用AI玩遊戲。實際上,玩遊戲確實是人工智慧在遊戲領域最早也最成功的應用之一。

Bot和NPC一直都在遊戲中有著重要的作用。很多遊戲(比如很多角色扮演類遊戲)有大量的NPC,以幫助完成遊戲情節,增加遊戲的挑戰性(比如一個很強的Boss),以及使遊戲世界更加真實。而有的遊戲中則需要有一些Bot來充當玩家,來幫助新手更快地學習遊戲的玩法,在人數不夠時能夠幫助玩家完成開局,在用戶離開時還能進行託管代打(很多棋牌類中遊戲都有)。比如在王者榮耀中,玩家可以選擇人機對戰,這就是與遊戲內置的Bot對戰,而其中的主宰和暴君等就是NPC。

傳統上業界製作遊戲內Bot和NPC的方法是開發者們根據經驗指定一些玩法和規則,寫成行為樹,從而實現控制邏輯。這種方法開發周期長,成本大,並且也很難獲得非常好的表現。還有一些基於規劃的方法,比如樹搜索方法,基於符號表示法等,通過探索未來狀態空間類決定當前應當採取的動作,這類方法在一些簡單的遊戲上能獲得非常好的表現,而當遊戲非常複雜或者無法仿真時則不再適用。另外,基於監督學習來製作遊戲內AI也是可以考慮的方案,但是這種方法必須要求有大量的有標記樣本,意味著只有那些已經上線,且對人類玩家的遊戲內操作數據有詳細記錄的遊戲有可能使用這種方法,且還只能應用於Bot的製作,而在其他的遊戲和場景中則無法使用。

3.2用深度強化學習研發Bot和NPC

與上述方法不同的是,深度強化學習是讓智能體在環境中進行不斷的探索,試錯學習以最大化累積獎賞,從而得到最優策略的,也就意味著其不需要有現成的標記樣本,也不用人為寫規則,因此用深度強化學習來研發Bot和NPC會是一個值得考慮的方案。

在任何遊戲或其他場景中應用強化學習,首先要做的就是將場景抽象為一個MDP。如圖6所示,我們將所要訓練的Bot或NPC作為智能體,將其所面臨的遊戲作為環境,角色從遊戲中獲取其當前的狀態和獎賞,並作出相應的動作。狀態用來表示當前角色的特徵信息,可以直接是當前遊戲畫面的原始信息,再經過諸如CNN等技術進行編碼提取特徵,也可以是通過遊戲API抽取到的有語義的信息。同樣地,角色的動作可以是和人類玩家一樣的按鍵信息,也可以是直接控制更高一級的動作API。

獎賞部分,不同的獎賞意味著不同的學習目標,需要根據我們想達到的目標進行設計。在比較簡單的遊戲中,可以直接用一段時間的得分甚至是一局遊戲的勝負來作為獎賞,而在比較複雜的遊戲中,這樣簡單的設定則可能無法訓練或者收斂速度很慢。這一部分也被稱為強化學習應用中的獎賞工程(Reward Engineering),在我們前面的一篇文章中也已經對這部分進行過詳細的介紹。



遊戲場景形式化為MDP



在將遊戲抽象為一個MDP後,我們就可以選擇相應的強化學習算法進行訓練,比如DQN算法,PPO算法等。與其他的機器學習方法類似,這些算法裡面的超參數,網絡結構,乃至學習算法等都會影響到學習效果,需要根據訓練效果進行調整,以及獎賞的部分也需要根據效果進行重新的優化設計。

3.3 QQ飛車手游中的應用

QQ飛車手游是一款賽車類的手游,玩家需要綜合應用包括氮氣加速在內的一系列技巧來提高駕駛速度,儘快到達終點。利用深度強化學習技術,我們為QQ飛車手游製作了Bot AI,並且已經灰度上線,我們對此進行簡單介紹。

如前面所說,為了應用深度強化學習,我們首先要定義好MDP。狀態部分,我們選擇通過遊戲的API來獲取包括當前賽車的速度,角度,到兩側牆壁距離,到障礙物的距離等在內的一系列信息,拼成向量,以此來表征賽車當前的狀況。動作部分,我們同樣利用遊戲API,將左轉,右轉,漂移,小噴,大噴等控制進行排列組合,得到我們的動作。獎賞部分,一個簡單版本的設計是:以一段路程內花費的時間的倒數作為正獎賞,即鼓勵駕駛的更快,以發生了碰撞,方向錯誤等負面事件為負獎賞,則一段路程對應的獎賞函數為:




其中,α和β表示不同的加權係數,

則分別表示在一段路程中是否發生了碰撞及方向錯誤。



深度強化學習訓練的QQ飛車AI


在將遊戲場景形式化為一個MDP後,我們選擇使用PPO算法來訓練模型,其具有收斂速度快,效果好的特點。經過參數上的一定調整,訓練得到的模型就已能夠自己駕駛車輛,並取得不錯的成績,圖7就是經過深度強化學習訓練得到的飛車AI。當然,上面所說的仍然只是一個非常基礎的版本,還存在著很多其他的問題需要解決,比如如何能訓練的足夠快以應對遊戲新版本上線的時間安排,比如遊戲里存在著多個地圖,如何能讓模型在多個地圖中有泛化性,比如當模型有一些奇怪的動作時如何消除,比如如何讓模型具有不同級別的能力,覆蓋從入門水平到頂級水平,以適用於多種場景。為了解決這些問題,就需要在算法設計和獎賞工程上做出更多的工作。

4.更高效的遊戲角色動畫

4.1遊戲中的程序化內容生成

程序內容生成(Procedural Content Generation,PCG)是遊戲AI中的一個領域,指的是用於自主生成或僅用有限的人力輸入生成遊戲內容的方法。利用PCG技術,可以生成遊戲內的關卡,地圖地形,遊戲內的多媒體內容等,以減少遊戲開發人員和美術人員的工作量,提高效率,降低遊戲製作成本。實際上,早在1973年的Maze War這款遊戲中,就已經開始使用算法來生成地圖。

如今,一些更先進的技術,包括神經網絡,對抗生成網絡等,也都被嘗試引進到PCG中,以期望進一步的提高遊戲生產效率。比如英偉達(Nvidia)開發的一項技術,可以基於照片主動生成遊戲中的紋理和材質,以及對光線進行追蹤和實時渲染;比如有不少研究人員就在超級馬里奧,憤怒的小鳥等遊戲中嘗試自動關卡生成;又比如在騰訊遊戲歡樂鬥地主2018年推出的殘局新玩法中,大量的鬥地主殘局就是通過深度學習技術自動生成的,如圖8所示就是其中的一個關卡。


歡樂鬥地主殘局



4.2用深度強化學習生成角色動畫

現代遊戲中的角色往往都需要看上去栩栩如生,需要有非常流暢的有機的移動效果,也就是角色動畫。為了實現這個目標,有著多種解決方法,從最早的精靈動畫,剛性階層動畫到如今的蒙皮動畫,呈現的效果也在一步步增強。然而,模擬人類和動物的運動仍然是一個具有挑戰性的問題,目前,很少有方法可以模擬現實世界中表現出的行為的多樣性。手動設計控制邏輯往往會耗費大量的精力,並且又很難適應新的場景和情形。

強化學習為運動合成提供了一種可能的思路,即智能體在反覆的執行各種技能的動作中進行試錯學習,以減少對人力的大量依賴。然而,如果僅僅是讓智能體自由探索,可能會產生一些不會影響技能目標但卻無意義的動作,例如無關的上身運動,彆扭的姿勢等。通過結合更真實的生物工程學模型可以使動作更加自然。但是構建高保真模型難度非常大,而且得到的動作有可能還是不自然。因此,理想的自動生成角色動畫的系統應該是首先為智能體提供一組符合需求的參考動作,然後以此為依據生成符合目標以及物理逼真的行為動作。比如使用深度強化學習方法來模仿運動數據的DeepLoco和用生成對抗模仿學習(GAIL)的方法來生成動作的嘗試都取得了不錯的效果。

來自伯克利的研究人員們則繼續改進,提出了模擬效果更好的DeepMimic。同樣地,首先需要根據要訓練的場景定義好相應的狀態和動作空間,而獎賞部分則略有不同,引入了參考片段作為獎賞的依據。具體來說,需要給智能體一些參考的運動片段,如迴旋踢或後空翻等,這些片段可以是來自人類的動作捕捉數據,也可以是手繪的動畫,然後就可以將智能體的動作與這些給定的參考動作的姿勢的軌跡誤差折算為獎賞,就可以利用深度強化學習來訓練智能體做出合理的動作序列。除此之外,為了提高訓練效率和訓練效果,DeepMimic中還提出了兩個方法,其一稱之為參考狀態初始化,為了提高採樣效率,在每個軌跡開始時,將智能體初始化至從參考動作隨機採樣的狀態;其二稱之為提前終止,為了提高仿真效率,將肯定不可能取得好結果的軌跡提前結束,而不是繼續模擬。經過上述處理,智能體能夠學會如圖9所示的多種高難度的技巧。


DeepMimic訓練得到的動作片段



在此基礎上,還有一些其他的改進工作,比如參考的運動片段可以直接是從視頻中得到(如YouTube上的人類動作的視頻),而不一定需要來自運動捕捉,降低了成本。然而,這些工作仍然還不是直接應用在真實的商業遊戲中,距離真實場景下的落地還有一段距離,比如如何控制好生成的質量達到商業要求,如何控制好生成的效率等都是需要考慮的問題。我們團隊目前在利用深度強化學習生成角色動畫方面也做了一些工作,並得到了一定的成果,相信馬上就會有真正的產品落地。

5.更多其他應用

用深度強化學習來玩遊戲,製作遊戲內的Bot或是NPC是最自然的的一個應用,具有一定的積累。而角色動畫的生成也是目前學術界和遊戲工業界都很關注的問題,將強化學習與一定量的參考動作結合,可以生成具有一定質量的動畫序列,促進遊戲開發的效率。除此之外,深度強化學習也能應用到遊戲的智能化運維,精細化運營中。

遊戲內存在大量的個性化推薦的場景。很多遊戲中,都會存在商城以提供購買道具等增值服務,比如在商城中就可以購買武器,服飾等道具。而遊戲階段的不同,打法風格的不同,以及玩家購買力的不同都會導致玩家對遊戲內道具的需求和偏好有所不同,因此道具內的推薦是需要的。遊戲在推廣過程中,可以通過朋友圈廣告,微信遊戲,QQ遊戲,QQ遊戲大廳、WeGame平台等多種方式來觸達用戶,這也意味著需要給用戶合適的推薦,才能提升用戶體驗,增加轉化率。

實際上,推薦系統是在學術界和工業界都有一定研究歷史和積累的領域,如今已在電商,廣告,資訊,音樂等多個行業內落地應用。這些系統中可能會應用到的算法也是種類繁多,從傳統的協同過濾,關聯規則到邏輯回歸,樹模型,從矩陣分解,知識推薦到排序學習,深度學習等方法都被使用。近年來,也有不少工作將深度強化學習方法應用於個性化推薦中,比如在淘寶的主搜場景中就有相關應用。而以應用深度強化學習來進行遊戲內的道具推薦為例,此時我們的智能體就應當是推薦系統本身,而玩家及相關場景就是我們所面臨的環境,狀態就是由玩家的特徵,最近的遊戲內信息,道具信息等組成,動作就是系統所能採取的推薦決策,獎賞函數同樣需要根據我們的目標進行設計。經過上述處理,使用一定的強化學習算法,我們就可以為用戶進行道具的推薦了。


騰訊知幾人工智慧伴侶



除此之外,遊戲中存在著其他廣泛的場景。有些遊戲中存在智能對話機器人,能夠在遊戲過程中與玩家進行互動,解答玩家疑問,比如騰訊推出的知幾人工智慧伴侶。而實際上,現在有不少工作正是應用深度強化學習來進行對話系統的訓練,並在多輪對話的場景下取得了不錯的效果。另外,遊戲的研發歷程中,往往需要經過多輪測試才能正式上線,而如果在複雜遊戲中用純人工的方式進行測試,則費時費力,代價很大,一些現有的自動化工具也仍然存在很多問題。一種自然的方式是利用深度強化學習的方法來訓練出一個遊戲內機器人,並調整相關目標和參數,使得此機器人在遊戲的場景下進行各種探索和嘗試,以觸發相關異常,從而對遊戲進行測試。

總結

深度強化學習作為近年來火熱的研究方向之一,由於在圍棋和其他電子遊戲上的出色表現而受到廣泛關注。我們主要關注在遊戲產業中如何利用深度強化學習技術,提升效率,改變生產方式。

很多遊戲中都會有NPC和Bot,傳統的研發方法是開發者基於一定的規則來寫行為樹,即人為規定好在某些情況下做出某些動作。由於遊戲世界內的情況非常複雜,這種方法往往非常難實現,開發成本高,且很難達到較高的水平,也造成了玩家體驗的下降。而深度強化學習技術則是通過讓智能體在遊戲世界內探索的方式來訓練模型提升水平,在合適的設計的基礎上,往往能得到比較高水平的模型。

角色動畫是遊戲研發過程中很重要的一項工作,在複雜的場景中,角色可能會出現非常多的行為,為每一種動作去設計和實現相應動作序列是非常繁複的動作,因此有一些工作在探索利用深度強化學習讓智能體探索環境,在給出少量參考動畫下訓練出相應各種動作對應的動畫序列。除此之外,深度強化學習也可能用於遊戲的精細化運營,遊戲測試以及遊戲內對話機器人等場景中。



當然,我們列舉的只是深度強化學習在遊戲產業里較為直接的幾個典型應用,其中有的已經取得了實質性的落地,為產業帶來價值,有的仍然處於探索試驗的階段。其實遊戲產業內有很多複雜的分工,存在著遠遠不止於此的繁雜多樣的場景,包括深度強化學習在內的人工智慧的技術也有著更多的落地的可能性等待著被挖掘。

參考資料Sutton,Richard S.et al.Reinforcement learning:An introduction.MIT press,2018.Mnih,Volodymyr,et al.Human-level control through deep reinforcement learning.Nature 518.7540(2015):529.Silver,David,et al.Mastering the game of Go with deep neural networks and treesearch.nature 529.7587(2016):484.Yannakakis,Georgios N.et al.Artificial intelligence and games.Vol.2.New York:Springer,2018.Schulman,J.,Levine,S.,Abbeel,P.,Jordan,M.,&Moritz,P.(2015,June).Trustregion policy optimization.In International conference on machine learning(pp.1889-1897).Peng,Xue Bin,et al.Deepmimic:Example-guided deep reinforcement learning ofphysics-based character skills.ACM Transactions on Graphics(TOG)37.4(2018):143.Peng,Xue Bin,et al.Deeploco:Dynamic locomotion skills using hierarchical deep reinforcementlearning.ACM Transactions on Graphics(TOG)36.4(2017):41.Shi-YongChen,Yang Yu,Qing Da,Jun Tan,Hai-Kuan Huang and Hai-Hong Tang.Stabilizingreinforcement learning in dynamic environment with application to onlinerecommendation.In:Proceedings of the 24th ACM SIGKDD Conference on KnowledgeDiscovery and Data Mining(KDD'18)(Research Track),London,UK,2018.YangYu,Shi-Yong Chen,Qing Da,Zhi-Hua Zhou.Reusable reinforcement learning viashallow trails.IEEE Transactions on Neural Networks and Learning Systems,2018,29(6):2204-2215.Jing-ChengShi,Yang Yu,Qing Da,Shi-Yong Chen,An-Xiang Zeng.Virtual-Taobao:Virtualizing real-world online retail environment for reinforcement learning.In:Proceedings of the 33nd AAAI Conference on Artificial Intelligence(AAAI』19),Honolulu,Hawaii,2019.2018中國遊戲產業報告

文章來源: https://twgreatdaily.com/zh-sg/0d3v9m0BMH2_cNUgSIUa.html