摘要:在飛車類游戲中,開始狀態(tài)和結(jié)束狀態(tài)的標(biāo)志如圖所示。動作設(shè)計(jì)我們目前在設(shè)計(jì)飛車類游戲動作時,使用離散的動作,包括三種動作左轉(zhuǎn)右轉(zhuǎn)和。圖訓(xùn)練過程中激勵的趨勢圖總結(jié)本文介紹了如何使用在分鐘內(nèi)讓玩飛車類游戲。
作者:WeTest小編
商業(yè)轉(zhuǎn)載請聯(lián)系騰訊WeTest獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
原文鏈接:https://wetest.qq.com/lab/view/440.html
本文主要介紹如何讓AI在24分鐘內(nèi)學(xué)會玩飛車類游戲。我們使用Distributed PPO訓(xùn)練AI,在短時間內(nèi)可以取得不錯的訓(xùn)練效果。
_
本方法的特點(diǎn):
純游戲圖像作為輸入
不使用游戲內(nèi)部接口
可靠的強(qiáng)化學(xué)習(xí)方法
簡單易行的并行訓(xùn)練
1. PPO簡介PPO(Proximal Policy Optimization)是OpenAI在2016年NIPS上提出的一個基于Actor-Critic框架的強(qiáng)化學(xué)習(xí)方法。該方法主要的創(chuàng)新點(diǎn)是在更新Actor時借鑒了TRPO,確保在每次優(yōu)化策略時,在一個可信任的范圍內(nèi)進(jìn)行,從而保證策略可以單調(diào)改進(jìn)。在2017年,DeepMind提出了Distributed PPO,將PPO進(jìn)行類似于A3C的分布式部署,提高了訓(xùn)練速度。之后,OpenAI又優(yōu)化了PPO中的代理損失函數(shù),提高了PPO的訓(xùn)練效果。
本文不介紹PPO的算法細(xì)節(jié),想學(xué)習(xí)的同學(xué)可以參考以下三篇論文:
【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 游戲狀態(tài)識別游戲狀態(tài)識別是識別每一局游戲關(guān)卡的開始狀態(tài)和結(jié)束狀態(tài)。在飛車類游戲中,開始狀態(tài)和結(jié)束狀態(tài)的標(biāo)志如圖1所示。因?yàn)榧t色框中的標(biāo)志位置都固定,因此我們使用模板匹配的方法來識別這些游戲狀態(tài)。
圖1 游戲狀態(tài)標(biāo)志
從開始狀態(tài)到結(jié)束狀態(tài)之間的圖像是游戲關(guān)卡內(nèi)的圖像,此時進(jìn)行強(qiáng)化學(xué)習(xí)的訓(xùn)練過程。當(dāng)識別到結(jié)束狀態(tài)后,暫停訓(xùn)練過程。結(jié)束狀態(tài)之后的圖像都是UI圖像,我們使用UI自動化的方案,識別不同的UI,點(diǎn)擊相應(yīng)的按鈕再次進(jìn)入游戲關(guān)卡,開始下一輪的訓(xùn)練過程,如圖2所示。
圖2 游戲流程
我們對游戲關(guān)卡中的圖像識別了速度的數(shù)值,作為強(qiáng)化學(xué)習(xí)中計(jì)算激勵(Reward)的依據(jù),如圖3所示。速度識別包括三個步驟:
第一步,圖像分割,將每一位數(shù)字從識別區(qū)域中分割出來。
第二步,數(shù)字識別,用卷積神經(jīng)網(wǎng)絡(luò)或者模板匹配識別每一位圖像中的數(shù)字類別。
第三步,數(shù)字拼接,根據(jù)圖像分割的位置,將識別的數(shù)字拼接起來。
圖3 圖像各個區(qū)域示意圖
我們使用的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。輸入為游戲圖像中小地圖的圖像,Actor輸出當(dāng)前時刻需要執(zhí)行的動作,Critic輸出當(dāng)前時刻運(yùn)行狀態(tài)的評價(jià)。AlexNet使用從輸入層到全連接層之前的結(jié)構(gòu),包含5個卷積層和3個池化層。Actor和Critic都有兩個全連接層,神經(jīng)元數(shù)量分別為1024和512。Actor輸出層使用softmax激活函數(shù),有三個神經(jīng)元,輸出動作策略。Critic輸出層不使用激活函數(shù),只有一個神經(jīng)元,輸出評價(jià)數(shù)值。
圖4 網(wǎng)絡(luò)結(jié)構(gòu)示意圖
我們將小地圖圖像的尺寸變?yōu)?21X121,輸入到AlexNet網(wǎng)絡(luò)后,在第三個池化層可以獲得2304維的特征向量(57622=2304)。將這個特征向量作為Actor和Critic的輸入。我們使用在ImageNet上訓(xùn)練后的AlexNet提取圖像特征,并且在強(qiáng)化學(xué)習(xí)的過程中沒有更新AlexNet的網(wǎng)絡(luò)參數(shù)。
3.3 動作設(shè)計(jì)我們目前在設(shè)計(jì)飛車類游戲動作時,使用離散的動作,包括三種動作:左轉(zhuǎn)、右轉(zhuǎn)和NO Action。每種動作的持續(xù)時間為80ms,即模擬觸屏的點(diǎn)擊時間為80ms。這樣的動作設(shè)計(jì)方式比較簡單,便于AI快速地訓(xùn)練出效果。如果將動作修改為連續(xù)的動作,就可以將漂移添加到動作中,讓AI學(xué)習(xí)左轉(zhuǎn)、右轉(zhuǎn)、漂移和NO Action的執(zhí)行時刻和執(zhí)行時長。
3.4 激勵計(jì)算如果將游戲的勝負(fù)作為激勵來訓(xùn)練AI,勢必會花費(fèi)相當(dāng)長的時間。在本文中,我們根據(jù)游戲圖像中的速度數(shù)值,計(jì)算當(dāng)前時刻的激勵。假定當(dāng)前時刻的速度為Vp,前一時刻的速度為Vq,那么激勵R按照以下方式計(jì)算:
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
這樣的激勵計(jì)算方式可以使AI減少撞墻的概率,并且鼓勵A(yù)I尋找加速點(diǎn)。
4. 訓(xùn)練環(huán)境 4.1 硬件我們搭建了一個簡單的分布式強(qiáng)化學(xué)習(xí)環(huán)境,可以提高采樣效率和訓(xùn)練速度,硬件部署方式如圖5所示。
圖5 硬件部署方式
主要包含以下硬件:
1)3部相同分辨率的手機(jī),用于生成數(shù)據(jù)和執(zhí)行動作。
2)2臺帶有顯卡的電腦,一臺電腦Proxy用于收集數(shù)據(jù)、圖像識別以及特征提取,另一臺電腦Server用于訓(xùn)練AI。
3)1個交換機(jī),連接兩臺電腦,用于交換數(shù)據(jù)。
4.2 軟件Ubuntu 14.04 + TensorFlow 1.2 + Cuda 7.0
5. 分布式部署我們使用的分布式部署方式如圖6所示。
圖6 分布式部署方式
在Proxy端設(shè)置三個proxy進(jìn)程,分別與三部手機(jī)相連接。
在Server端設(shè)置一個master進(jìn)程和三個worker線程。master進(jìn)程和三個worker線程通過內(nèi)存交換網(wǎng)絡(luò)參數(shù)。master進(jìn)程主要用于保存最新的網(wǎng)絡(luò)參數(shù)。三個proxy進(jìn)程分別和三個worker線程通過交換機(jī)傳輸數(shù)據(jù)。
proxy進(jìn)程有6個功能:
1)從手機(jī)接收圖像數(shù)據(jù);
2)識別當(dāng)前游戲狀態(tài);
3)識別速度計(jì)算激勵;
4)利用AlexNet提取圖像特征;
5)發(fā)送圖像特征和激勵到worker線程,等待worker線程返回動作;
6)發(fā)送動作到手機(jī);
worker線程有5個功能:
1)從proxy進(jìn)程接收圖像特征和激勵;
2)從master進(jìn)程拷貝最新的網(wǎng)絡(luò)參數(shù);
3)將Actor輸出的動作發(fā)送到proxy進(jìn)程;
4)利用PPO更新網(wǎng)絡(luò)參數(shù);
5)將更新后的網(wǎng)絡(luò)參數(shù)傳輸?shù)絤aster進(jìn)程;
6. 實(shí)驗(yàn) 6.1 參數(shù)設(shè)置PPO的訓(xùn)練參數(shù)很多,這里介紹幾個重要參數(shù)的設(shè)置:
1)學(xué)習(xí)速率:Actor和Critic的學(xué)習(xí)率都設(shè)置為1e-5
2)優(yōu)化器:Adam優(yōu)化器
3)Batch Size: 20
4)采樣幀率:10幀/秒
5)更新次數(shù):15次
6)激勵折扣率:0.9
6.2 AI效果視頻鏈接:https://v.qq.com/x/page/q1356...
6.3 數(shù)據(jù)分析表1和表2分別對比了不同并行數(shù)量和不同輸入數(shù)據(jù)情況下AI跑完賽道和取得名次的訓(xùn)練數(shù)據(jù)。最快的訓(xùn)練過程是在并行數(shù)量為3和輸入數(shù)據(jù)為小地圖的情況下,利用PPO訓(xùn)練24分鐘就可以讓AI跑完賽道,訓(xùn)練7.5小時就可以讓AI取得第一名(和內(nèi)置AI比賽)。并且在減少一部手機(jī)采樣的情況下,也可以達(dá)到相同的訓(xùn)練效果,只是訓(xùn)練過程耗時更長一點(diǎn)。另外,如果將輸入數(shù)據(jù)從小地圖換成全圖,AI的訓(xùn)練難度會有一定程度的增加,不一定能達(dá)到相同的訓(xùn)練效果。
表1 AI跑完賽道的數(shù)據(jù)對比
輸入數(shù)據(jù) 并行數(shù)量 訓(xùn)練時間 訓(xùn)練次數(shù) 訓(xùn)練局?jǐn)?shù)
全圖 2 100分鐘 4200次 78局
小地圖 2 40分鐘 1700次 32局
全圖 3 78分鐘 3900次 72局
小地圖 3 24分鐘 1400次 25局
表2 AI取得名次的數(shù)據(jù)對比
輸入數(shù)據(jù) 并行數(shù)量 訓(xùn)練時間 訓(xùn)練次數(shù) 訓(xùn)練局?jǐn)?shù) 名次
小地圖 2 9小時 19000次 354局 1
全圖 3 60小時 98000次 180局 4-6
小地圖 3 7.5小時 17800次 343局 1
如7展示了利用PPO訓(xùn)練AI過程中激勵的趨勢圖,曲線上每一個點(diǎn)表示一局累計(jì)的總激勵。訓(xùn)練開始時,AI經(jīng)常撞墻,總激勵為負(fù)值。隨著訓(xùn)練次數(shù)的增加,總激勵快速增長,AI撞墻的幾率很快降低。當(dāng)訓(xùn)練到1400多次時,總激勵值超過400,此時AI剛好可以跑完賽道。之后的訓(xùn)練過程,總激勵的趨勢是緩慢增長,AI開始尋找更好的動作策略。
圖7 AI訓(xùn)練過程中激勵的趨勢圖
本文介紹了如何使用Distributed PPO在24分鐘內(nèi)讓AI玩飛車類游戲。當(dāng)前的方法有一定訓(xùn)練效果,但是也存在很多不足。
目前,我們想到以下幾個改進(jìn)點(diǎn),以后會逐一驗(yàn)證:
1)將AlexNet替換為其他卷積神經(jīng)網(wǎng)絡(luò),如VGG、Inception-V3等等,提高特征提取的表達(dá)能力。
2)提高并行數(shù)量,添加更多手機(jī)和電腦,提高采樣速度和計(jì)算速度。
3)增加Batch Size,使用較長的時間序列數(shù)據(jù)訓(xùn)練AI。
4)將離散動作替換為連續(xù)動作,增加漂移的學(xué)習(xí)。
5)多個關(guān)卡同時訓(xùn)練,提高AI的泛化能力。
參考文獻(xiàn):
【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/...
_
**“深度兼容測試”現(xiàn)已對外,騰訊專家為您定制自動化測試腳本,覆蓋應(yīng)用核心場景,對上百款主流機(jī)型進(jìn)行適配兼容測試,提供詳細(xì)測試報(bào)告,并且首度使用AI能力助力測試。
點(diǎn)擊http://wetest.qq.com/cloud/deepcompatibilitytesting#/ 即可體驗(yàn)。**
如果使用當(dāng)中有任何疑問,歡迎聯(lián)系騰訊WeTest企業(yè)QQ:2852350015
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/19925.html
摘要:為什么未來可能是我們最糟糕的噩夢我想要了解人工智能的原因之一是壞機(jī)器人的主題總是讓我感到困惑。沒有那個人工智能系統(tǒng)會像電影描述的那樣變的邪惡。意識盒子他還觸及了另一個與人工智能意識相關(guān)的大話題。這并不是說人工智能不可能發(fā)生。 為什么未來可能是我們最糟糕的噩夢 我想要了解人工智能的原因之一是壞機(jī)器人的主題總是讓我感到困惑。關(guān)于邪惡機(jī)器人的所有電影看起來都是不切實(shí)際的,我無法真正理解人工智...
摘要:今天我們來說一個非常實(shí)用的例子,小菜接到組長老王的一個任務(wù),安排一個新的活,這個活是這樣的老王小菜啊,你幫我寫一個登入腳本,跑十幾條命令到服務(wù)器上,然后存一下日志。這個時候,小菜偷偷的瞄了一眼組長老王,常舒一口氣,總于寫完了。 Python學(xué)了好幾年,發(fā)現(xiàn)功力還是那樣,很多同學(xué)經(jīng)常這樣抱...
摘要:對此,聶頌首先表示,在游戲解決方案上,華為云不做游戲產(chǎn)品,不與游戲企業(yè)爭利,堅(jiān)持做游戲企業(yè)的發(fā)動機(jī)和生產(chǎn)力。華為云游戲解決方案目前已經(jīng)構(gòu)建了游戲研發(fā)游戲部署游戲運(yùn)營游戲創(chuàng)新等全產(chǎn)業(yè)鏈條的能力。2018年4月2日,在GMGC北京2018第七屆全球游戲大會現(xiàn)場,賽迪網(wǎng)記者有幸采訪到了華為消費(fèi)互聯(lián)網(wǎng)解決方案總經(jīng)理聶頌,他分享了游戲行業(yè)創(chuàng)新發(fā)展的技術(shù)基石,以及作為游戲創(chuàng)新要素的AI、5G、區(qū)塊鏈等技...
摘要:為啥你天天刷抖音一點(diǎn)都不煩,因?yàn)槟阌X得視頻好看你有興趣啊。比如我們說你玩是不是要開始搭建一個自己的網(wǎng)站,是不是可以自己寫一個小的腳本來自動發(fā)消息給你的女朋友等等,通過這樣的小例子來慢慢的培養(yǎng)自己的學(xué)習(xí)的興趣。學(xué)習(xí),切勿貪快貪多。 大家好,我是菜鳥哥! 周末啦,跟大家聊一下我們粉絲團(tuán)的情況...
閱讀 3081·2023-04-25 18:00
閱讀 2314·2021-11-23 10:07
閱讀 4201·2021-11-22 09:34
閱讀 1315·2021-10-08 10:05
閱讀 1624·2019-08-30 15:55
閱讀 3514·2019-08-30 11:21
閱讀 3424·2019-08-29 13:01
閱讀 1449·2019-08-26 18:26