本文主要介紹如何讓AI在24分鐘內學會玩飛車類遊戲。我們使用Distributed PPO訓練AI,在短時間內可以取得不錯的訓練效果。
本方法的特點:
1. 純遊戲影像作為輸入
2. 不使用遊戲內部介面
3. 可靠的強化學習方法
4. 簡單易行的並行訓練
1. PPO簡介
PPO(Proximal Policy Optimization)是OpenAI在2016年NIPS上提出的一個基於Actor-Critic框架的強化學習方法。該方法主要的創新點是在更新Actor時借鑑了TRPO,確保在每次優化策略時,在一個可信任的範圍內進行,從而保證策略可以單調改進。在2017年,DeepMind提出了Distributed PPO,將PPO進行類似於A3C的分散式部署,提高了訓練速度。之後,OpenAI又優化了PPO中的代理損失函式,提高了PPO的訓練效果。
本文不介紹PPO的演算法細節,想學習的同學可以參考以下三篇論文:
【1】Schulman J, Levine S, Abbeel P, et al. Trust region policy optimization[C]//International Conference on Machine Learning. 2015: 1889-1897.
【2】Heess N, Sriram S, Lemmon J, et al. Emergence of locomotion behaviours in rich environments[J]. arXiv preprint arXiv:1707.02286, 2017.
【3】Schulman J, Wolski F, Dhariwal P, et al. Proximal policy optimization algorithms[J]. arXiv preprint arXiv:1707.06347, 2017.
2. 影像識別
2.1 遊戲狀態識別
遊戲狀態識別是識別每一局遊戲關卡的開始狀態和結束狀態。在飛車類遊戲中,開始狀態和結束狀態的標誌如圖1所示。因為紅色框中的標誌位置都固定,因此我們使用模板匹配的方法來識別這些遊戲狀態。
圖1 遊戲狀態標誌
從開始狀態到結束狀態之間的影像是遊戲關卡內的影像,此時進行強化學習的訓練過程。當識別到結束狀態後,暫停訓練過程。結束狀態之後的影像都是UI影像,我們使用UI自動化的方案,識別不同的UI,點選相應的按鈕再次進入遊戲關卡,開始下一輪的訓練過程,如圖2所示。
圖2 遊戲流程
2.3 遊戲影像識別
我們對遊戲關卡中的影像識別了速度的數值,作為強化學習中計算激勵(Reward)的依據,如圖3所示。速度識別包括三個步驟:
第一步,影像分割,將每一位數字從識別區域中分割出來。
第二步,數字識別,用卷積神經網路或者模板匹配識別每一點陣圖像中的數字類別。
第三步,數字拼接,根據影像分割的位置,將識別的數字拼接起來。
圖3 影像各個區域示意圖
3. AI設計
3.1 網路結構
我們使用的網路結構如圖4所示。輸入為遊戲影像中小地圖的影像,Actor輸出當前時刻需要執行的動作,Critic輸出當前時刻執行狀態的評價。AlexNet使用從輸入層到全連線層之前的結構,包含5個卷積層和3個池化層。Actor和Critic都有兩個全連線層,神經元數量分別為1024和512。Actor輸出層使用softmax啟用函式,有三個神經元,輸出動作策略。Critic輸出層不使用啟用函式,只有一個神經元,輸出評價數值。
圖4 網路結構示意圖
3.2 輸入處理
我們將小地圖影像的尺寸變為121X121,輸入到AlexNet網路後,在第三個池化層可以獲得2304維的特徵向量(576*2*2=2304)。將這個特徵向量作為Actor和Critic的輸入。我們使用在ImageNet上訓練後的AlexNet提取影像特徵,並且在強化學習的過程中沒有更新AlexNet的網路引數。
3.3 動作設計
我們目前在設計飛車類遊戲動作時,使用離散的動作,包括三種動作:左轉、右轉和NO Action。每種動作的持續時間為80ms,即模擬觸屏的點選時間為80ms。這樣的動作設計方式比較簡單,便於AI快速地訓練出效果。如果將動作修改為連續的動作,就可以將漂移新增到動作中,讓AI學習左轉、右轉、漂移和NO Action的執行時刻和執行時長。
3.4 激勵計算
如果將遊戲的勝負作為激勵來訓練AI,勢必會花費相當長的時間。在本文中,我們根據遊戲影像中的速度數值,計算當前時刻的激勵。假定當前時刻的速度為Vp,前一時刻的速度為Vq,那麼激勵R按照以下方式計算:
If Vp ≥ Vq , R = 0.25X(Vp – Vq)
If Vp <
Vq , R = -0.25X(Vq – Vp)
If Vp >
250 , R = R + 5.0
If Vp <
50 , R = R – 5.0
這樣的激勵計算方式可以使AI減少撞牆的概率,並且鼓勵AI尋找加速點。
4. 訓練環境
4.1 硬體
我們搭建了一個簡單的分散式強化學習環境,可以提高取樣效率和訓練速度,硬體部署方式如圖5所示。
圖5 硬體部署方式
主要包含以下硬體:
1)3部相同解析度的手機,用於生成資料和執行動作。
2)2臺帶有顯示卡的電腦,一臺電腦Proxy用於收集資料、影像識別以及特徵提取,另一臺電腦Server用於訓練AI。
3)1個交換機,連線兩臺電腦,用於交換資料。
4.2 軟體
Ubuntu 14.04 + TensorFlow 1.2 + Cuda 7.0
5. 分散式部署
我們使用的分散式部署方式如圖6所示。
圖6 分散式部署方式
在Proxy端設定三個proxy程式,分別與三部手機相連線。
在Server端設定一個master程式和三個worker執行緒。master程式和三個worker執行緒通過記憶體交換網路引數。master程式主要用於儲存最新的網路引數。三個proxy程式分別和三個worker執行緒通過交換機傳輸資料。
proxy程式有6個功能:
1)從手機接收影像資料;
2)識別當前遊戲狀態;
3)識別速度計算激勵;
4)利用AlexNet提取影像特徵;
5)傳送影像特徵和激勵到worker執行緒,等待worker執行緒返回動作;
6)傳送動作到手機;
worker執行緒有5個功能:
1)從proxy程式接收影像特徵和激勵;
2)從master程式拷貝最新的網路引數;
3)將Actor輸出的動作傳送到proxy程式;
4)利用PPO更新網路引數;
5)將更新後的網路引數傳輸到master程式;
6. 實驗
6.1 引數設定
PPO的訓練引數很多,這裡介紹幾個重要引數的設定:
1)學習速率:Actor和Critic的學習率都設定為1e-5
2)優化器:Adam優化器
3)Batch Size: 20
4)取樣幀率:10幀/秒
5)更新次數:15次
6)激勵折扣率:0.9
6.2 AI效果
6.3 資料分析
表1和表2分別對比了不同並行數量和不同輸入資料情況下AI跑完賽道和取得名次的訓練資料。最快的訓練過程是在並行數量為3和輸入資料為小地圖的情況下,利用PPO訓練24分鐘就可以讓AI跑完賽道,訓練7.5小時就可以讓AI取得第一名(和內建AI比賽)。並且在減少一部手機取樣的情況下,也可以達到相同的訓練效果,只是訓練過程耗時更長一點。另外,如果將輸入資料從小地圖換成全圖,AI的訓練難度會有一定程度的增加,不一定能達到相同的訓練效果。
表1 AI跑完賽道的資料對比
輸入資料 |
並行數量 |
訓練時間 |
訓練次數 |
訓練局數 |
全圖 |
2 |
100分鐘 |
4200次 |
78局 |
小地圖 |
2 |
40分鐘 |
1700次 |
32局 |
全圖 |
3 |
78分鐘 |
3900次 |
72局 |
小地圖 |
3 |
24分鐘 |
1400次 |
25局 |
表2 AI取得名次的資料對比
輸入資料 |
並行數量 |
訓練時間 |
訓練次數 |
訓練局數 |
名次 |
小地圖 |
2 |
9小時 |
19000次 |
354局 |
1 |
全圖 |
3 |
60小時 |
98000次 |
1800局 |
4-6 |
小地圖 |
3 |
7.5小時 |
17800次 |
343局 |
1 |
如7展示了利用PPO訓練AI過程中激勵的趨勢圖,曲線上每一個點表示一局累計的總激勵。訓練開始時,AI經常撞牆,總激勵為負值。隨著訓練次數的增加,總激勵快速增長,AI撞牆的機率很快降低。當訓練到1400多次時,總激勵值超過400,此時AI剛好可以跑完賽道。之後的訓練過程,總激勵的趨勢是緩慢增長,AI開始尋找更好的動作策略。
圖7 AI訓練過程中激勵的趨勢圖
7. 總結
本文介紹瞭如何使用Distributed PPO在24分鐘內讓AI玩飛車類遊戲。當前的方法有一定訓練效果,但是也存在很多不足。
目前,我們想到以下幾個改進點,以後會逐一驗證:
1)將AlexNet替換為其他卷積神經網路,如VGG、Inception-V3等等,提高特徵提取的表達能力。
2)提高並行數量,新增更多手機和電腦,提高取樣速度和計算速度。
3)增加Batch Size,使用較長的時間序列資料訓練AI。
4)將離散動作替換為連續動作,增加漂移的學習。
5)多個關卡同時訓練,提高AI的泛化能力。
參考文獻:
【1】Schulman J, Levine S, Abbeel P, et al. Trust region policy optimization[C]//International Conference on Machine Learning. 2015: 1889-1897.
【2】Heess N, Sriram S, Lemmon J, et al. Emergence of locomotion behaviours in rich environments[J]. arXiv preprint arXiv:1707.02286, 2017.
【3】Schulman J, Wolski F, Dhariwal P, et al. Proximal policy optimization algorithms[J]. arXiv preprint arXiv:1707.06347, 2017.
【4】https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/6-4-DPPO/
“深度相容測試”現已對外,騰訊專家為您定製自動化測試指令碼,覆蓋應用核心場景,對上百款主流機型進行適配相容測試,提供詳細測試報告,並且首度使用AI能力助力測試。
點選wetest.qq.com/cloud/deepc… 即可體驗。
如果使用當中有任何疑問,歡迎聯絡騰訊WeTest企業QQ:2852350015