這個(gè)賽車AI不再只圖一時(shí)爽,學(xué)會(huì)了考慮長(zhǎng)遠(yuǎn)策略
甚至變成了只擅長(zhǎng)彎道的“偏科”選手
博雯 發(fā)自 凹非寺
量子位 | 公眾號(hào) QbitAI
玩賽車游戲的AI們現(xiàn)在已經(jīng)不僅僅是圖快圖爽了。
他們開(kāi)始考慮戰(zhàn)術(shù)規(guī)劃,甚至有了自己的行車風(fēng)格和“偏科”項(xiàng)目。
比如這位只擅長(zhǎng)轉(zhuǎn)彎的“偏科”選手,面對(duì)急彎我重拳出擊,驚險(xiǎn)漂移,面對(duì)直線我唯唯諾諾,搖晃不停:
還有具備長(zhǎng)遠(yuǎn)目光,學(xué)會(huì)了戰(zhàn)術(shù)規(guī)劃的AI,也就是這兩位正在競(jìng)速的中的綠色賽車,看似在轉(zhuǎn)彎處減緩了速度,卻得以順利通過(guò)急彎,免于直接GG的下場(chǎng)。
還有面對(duì)不管是多新的地圖,都能舉一反三,跑完全程的AI。
看起來(lái)就像是真的在賽車道上學(xué)會(huì)了思考一樣。
(甚至上面所說(shuō)的那位偏科選手還在不懈努力后成功逆襲了)
這項(xiàng)訓(xùn)練結(jié)果一經(jīng)公布,便吸引了大批網(wǎng)友的圍觀:
強(qiáng)化學(xué)習(xí)讓AI學(xué)會(huì)“長(zhǎng)遠(yuǎn)考慮”
訓(xùn)練賽道來(lái)自一款叫做《賽道狂飆》(Trackmania)的游戲,以可深度定制的賽道編輯器聞名于玩家群體。
為了更大程度上激發(fā)賽車AI的潛力,開(kāi)發(fā)者自制了這樣一張九曲十八彎的魔鬼地圖:
這位開(kāi)發(fā)者名叫yoshtm,之間就已經(jīng)用AI玩過(guò)這款游戲,一度引發(fā)熱議:
一開(kāi)始,yoshtm采用的是一種監(jiān)督學(xué)習(xí)模型,擁有2個(gè)隱藏層。
模型包含了16個(gè)輸入,包括如汽車當(dāng)前速度、加速度、路段位置等等,再通過(guò)神經(jīng)網(wǎng)絡(luò)對(duì)輸入?yún)?shù)進(jìn)行分析,最終輸出6種動(dòng)作中的一種:
基于這一模型架構(gòu),開(kāi)發(fā)者讓多只AI在同一張地圖上競(jìng)爭(zhēng)。
通過(guò)多次迭代,不同AI的神經(jīng)網(wǎng)絡(luò)會(huì)出現(xiàn)細(xì)微的差別,結(jié)果最好的AI將最終脫穎而出。
這種方法確實(shí)能讓AI學(xué)會(huì)駕駛,不過(guò)也帶來(lái)了一個(gè)問(wèn)題:
AI常常只能以速度或最終沖線的時(shí)間等單一指標(biāo)來(lái)評(píng)估自己,難以更進(jìn)一步。
這次,時(shí)隔兩年后的賽車AI,不僅學(xué)會(huì)了從長(zhǎng)遠(yuǎn)出發(fā)制定策略(比如在急彎時(shí)對(duì)速度作出調(diào)整),還大幅提高了對(duì)新地圖的適應(yīng)性。
主要原因就來(lái)自于開(kāi)發(fā)者這次引入的新方法,強(qiáng)化學(xué)習(xí)。
這種方法的核心概念是“獎(jiǎng)勵(lì)”,即通過(guò)選擇帶來(lái)更多獎(jiǎng)勵(lì)的行為,來(lái)不斷優(yōu)化最終效果。
在訓(xùn)練賽車游戲中的AI時(shí),yoshtm定義的獎(jiǎng)勵(lì)很常規(guī):速度越快獎(jiǎng)勵(lì)越多,走錯(cuò)路或掉下賽道就會(huì)懲罰。
但問(wèn)題是,一些行動(dòng),比如在臨近轉(zhuǎn)彎時(shí)的加速或許能導(dǎo)致短期的正面獎(jiǎng)勵(lì),但從長(zhǎng)遠(yuǎn)來(lái)看卻可能會(huì)產(chǎn)生負(fù)面的后果。
于是,yoshtm采用了一種叫做Deep Q Learning的方法。
這是一種無(wú)模型的強(qiáng)化學(xué)習(xí)技術(shù),對(duì)于給定狀態(tài),它能夠比較可用操作的預(yù)期效用,同時(shí)還不需要環(huán)境模型。
Deep Q Learning會(huì)通過(guò)深度網(wǎng)絡(luò)參數(shù) 的學(xué)習(xí)不斷提高Q值預(yù)測(cè)的準(zhǔn)確性,也就是說(shuō),能夠使AI在賽車游戲中預(yù)測(cè)每個(gè)可能的行動(dòng)的預(yù)期累積獎(jiǎng)勵(lì),從而“具備一種長(zhǎng)遠(yuǎn)的策略目光”。
隨機(jī)出生點(diǎn)幫AI改正“偏科”
接下來(lái)開(kāi)始進(jìn)行正式訓(xùn)練。
yoshtm的思路是,AI會(huì)先通過(guò)隨機(jī)探索來(lái)盡可能多地收集地圖數(shù)據(jù),他將這一行為稱之為探索。
探索的比例越高,隨機(jī)性也就越強(qiáng),而隨著比例降低,AI則會(huì)更加專注于贏取上述設(shè)置的獎(jiǎng)勵(lì),也即專注于跑圖。
不過(guò),在訓(xùn)練了近3萬(wàn)次,探索比例降低到5%時(shí),AI“卡關(guān)”了:
核心問(wèn)題是AI出現(xiàn)了“偏科”。
由于前期經(jīng)歷了多個(gè)彎道的跑圖,所以AI出現(xiàn)了過(guò)擬合現(xiàn)象,面對(duì)長(zhǎng)直線跑道這種新的賽道類型,一度車身不穩(wěn),搖搖晃晃,最終甚至選擇了“自殺”:
要如何解決這個(gè)問(wèn)題呢?
yoshtm并沒(méi)有選擇重新制作地圖,而是選擇修改AI的出生點(diǎn):
每次開(kāi)始訓(xùn)練時(shí),AI的出發(fā)點(diǎn)都將在地圖上的一個(gè)隨機(jī)位置生成,同時(shí)速度和方向也會(huì)隨機(jī)。
這一辦法立竿見(jiàn)影,AI終于開(kāi)始能夠完整跑完一條賽道了。
接下來(lái)就是進(jìn)行不斷訓(xùn)練,最終,開(kāi)發(fā)者yoshtm和AI比了一場(chǎng),AI在這次跑到了最好成績(jī):6分20秒。
雖然還是沒(méi)有真人操控的賽車跑得快,不過(guò)AI表現(xiàn)出了較強(qiáng)的場(chǎng)地適應(yīng)性,對(duì)草地還是泥地都能立馬舉一反三。
yoshtm最后這樣說(shuō)道:
《賽車狂飆》本來(lái)就是一個(gè)需要大量訓(xùn)練的游戲,AI當(dāng)然也如此。
至少我現(xiàn)在很確定,這個(gè)AI可以打敗大量的初學(xué)者。
參考鏈接:
[1]https://www.youtube.com/watch?v=SX08NT55YhA
[2]https://www.reddit.com/r/Games/comments/tcj32m/ai_learns_to_drive_from_scratch_in_trackmania/