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