據(jù)悉,斯坦福大學(xué)仿生動(dòng)力學(xué)實(shí)驗(yàn)室連續(xù)三年在NeurIPS上舉辦了關(guān)于仿生人的控制競(jìng)賽—通過(guò)肌肉來(lái)控制仿生人來(lái)靈活運(yùn)動(dòng),目標(biāo)是將強(qiáng)化學(xué)習(xí)這項(xiàng)潛力巨大的技術(shù)應(yīng)用到人體肌肉運(yùn)動(dòng)研究領(lǐng)域中,進(jìn)一步理解對(duì)人體腿部的運(yùn)動(dòng)原理,為該領(lǐng)域研究拓展全新的研究思路。
今年賽事的任務(wù)是通過(guò)強(qiáng)化學(xué)習(xí)訓(xùn)練一個(gè)模型來(lái)控制仿生人進(jìn)行靈活運(yùn)動(dòng),使得其可以朝著任意角度行走,并可以實(shí)時(shí)調(diào)整速度快慢。這一目標(biāo)相比去年階段性地變化行走目標(biāo)而言,主要變化在實(shí)時(shí)變換速度,任意行走角度上,給今年的參賽選手帶來(lái)了極大的挑戰(zhàn)(賽事結(jié)果報(bào)導(dǎo)見(jiàn)上一篇文章)。
如下為百度技術(shù)團(tuán)隊(duì)在頒獎(jiǎng)典禮上的技術(shù)報(bào)告:
歷屆賽事采用的是斯坦福實(shí)驗(yàn)室設(shè)計(jì)的opensim仿生人模型,這一仿真器基于生物動(dòng)力學(xué)原理,盡可能地還原了真實(shí)的物理情況。但是高仿真度意味需要耗費(fèi)更多的計(jì)算資源,這使得它的運(yùn)行速度相比主流強(qiáng)化學(xué)習(xí)仿真環(huán)境慢很多,平均速率只有4幀/秒(主流環(huán)境Mujoco最高可達(dá)到1000幀/秒)。要解決這個(gè)問(wèn)題,最直接了當(dāng)?shù)姆椒ㄊ抢枚鄠€(gè)CPU進(jìn)行并行計(jì)算,同時(shí)進(jìn)行仿真。目前開(kāi)源社區(qū)中已經(jīng)有一部分RL框架支持并行計(jì)算,比如最為流行的baseline(OPENAI開(kāi)源),但是這類框架的并行計(jì)算是基于mpi4py通訊協(xié)議實(shí)現(xiàn)的。用戶不僅需要熟悉mpi的常用接口,還得用特定的命令才能啟動(dòng)多機(jī)訓(xùn)練,相對(duì)于單機(jī)版本的改動(dòng)極大,用戶上手成本很高。
而在飛槳PARL框架下,并行計(jì)算代碼編寫幾乎沒(méi)有額外學(xué)習(xí)成本。PARL鼓勵(lì)用戶寫傳統(tǒng)的python多線程代碼來(lái)達(dá)到并行目的,開(kāi)發(fā)者并不需要關(guān)注網(wǎng)絡(luò)傳輸?shù)膶?shí)現(xiàn),只要增加一個(gè)并行修飾符就可以實(shí)現(xiàn)并行化(盡管python多線程受全局鎖GIL限制而不能實(shí)現(xiàn)真正的并行,但是這個(gè)修飾符的底層實(shí)現(xiàn)是獨(dú)立進(jìn)程級(jí)別的,不受這一限制)。獲勝團(tuán)隊(duì)實(shí)現(xiàn)了并行版本的DDPG/PPO算法,使用了上百個(gè)仿真環(huán)境在CPU集群上進(jìn)行仿真,探索不同的狀態(tài)空間,并且通過(guò)網(wǎng)絡(luò)傳輸把數(shù)據(jù)收集到訓(xùn)練機(jī)器上通過(guò)GPU預(yù)測(cè)以及訓(xùn)練(見(jiàn)圖1),將原先單CPU需要5小時(shí)迭代一輪的單機(jī)PPO算法時(shí)間壓縮到了不到1分鐘。
圖1 課程學(xué)習(xí)機(jī)制
本次比賽的一個(gè)重要挑戰(zhàn)是在高達(dá)117維度的連續(xù)空間上訓(xùn)練一個(gè)可以靈活行走的模型,搜索空間極大,模型在訓(xùn)練的過(guò)程中很容易陷入局部最優(yōu),例如圖2這種螃蟹一樣橫著走的情況。
圖2
如何才能避免這種情況,讓模型學(xué)習(xí)到一個(gè)靈活的走路姿勢(shì),和普通人行走一樣正常呢?
在參賽過(guò)程中,該團(tuán)隊(duì)注意到把強(qiáng)化學(xué)習(xí)的學(xué)習(xí)目標(biāo)直接設(shè)定為低速向前的話,模型會(huì)“抖機(jī)靈”地探索到各種各樣奇怪的姿勢(shì)來(lái)達(dá)到低速行走的目標(biāo),比如拖著腿走,小步跳著走,甚至橫著走。這些奇怪的姿勢(shì)導(dǎo)致模型陷入局部最優(yōu),短期內(nèi)雖然拿到了不錯(cuò)打分,但效果卻無(wú)法進(jìn)一步提升。如何學(xué)習(xí)到更接近于人類的穩(wěn)定姿態(tài)?參賽團(tuán)隊(duì)進(jìn)一步發(fā)現(xiàn),把目標(biāo)設(shè)定為向前奔跑且跑得越快越好,模型學(xué)出來(lái)的姿勢(shì)較自然。仿真環(huán)境中的仿生人先邁出右腿,身體向前傾斜,然后向前沖刺,最后和普通人一樣向前跑起來(lái)(見(jiàn)圖3)!該團(tuán)隊(duì)認(rèn)為出現(xiàn)該情況的原因在于此:低速行走有非常多的姿勢(shì)能夠?qū)崿F(xiàn),也很容易陷入局部最優(yōu);但是目標(biāo)設(shè)定為最快速度奔跑的時(shí)候,模型的可能選擇反倒更少了—-像人類一樣沖刺。在學(xué)會(huì)了向前奔跑之后,參賽選手再逐步把目標(biāo)速度降低,讓模型保持原先的姿勢(shì)的同時(shí),逐步學(xué)會(huì)低速行走。有了這種“課程”式的訓(xùn)練過(guò)程,模型可以學(xué)習(xí)到真正與人類一樣的行走姿勢(shì),這也為后續(xù)的靈活變換方向奠定了基礎(chǔ)。
圖3 RAVE:提升魯棒性的新算法
RAVE的全稱是Risk-averse Value Expansion,是該團(tuán)隊(duì)提出的基于模型的強(qiáng)化學(xué)習(xí)算法(model-based RL),這個(gè)算法在本次奪冠過(guò)程中起到了極為關(guān)鍵的作用,最終也獲得了賽事的Best Machine Learning Paper榮譽(yù)。這次賽事的最為重要的一個(gè)挑戰(zhàn)是仿生人需要實(shí)時(shí)變換速度,reward是取決于仿生人的實(shí)時(shí)速度與指定速度之間的差值,但是未來(lái)的目標(biāo)速度是無(wú)法提前得知的(賽事規(guī)則限制)。這一個(gè)問(wèn)題給強(qiáng)化學(xué)習(xí)的學(xué)習(xí)機(jī)制帶來(lái)了很大的干擾:由于未來(lái)的目標(biāo)速度無(wú)法預(yù)估,會(huì)使得在當(dāng)前狀態(tài)下,模型錯(cuò)誤地估計(jì)了未來(lái)風(fēng)險(xiǎn),從而采取一些風(fēng)險(xiǎn)偏高的行為而很容易摔倒。針對(duì)這一個(gè)問(wèn)題,PARL團(tuán)隊(duì)從對(duì)環(huán)境的建模入手,在借鑒了發(fā)表在18年NeurIPS的Ensemble of Probabilistic Models(PE)工作后,他們采用了多個(gè)高斯模型對(duì)環(huán)境進(jìn)行建模,同時(shí)捕捉建模的誤差以及環(huán)境的隨機(jī)性,并通過(guò)取多個(gè)預(yù)估值的置信度下界的方式,來(lái)解決值函數(shù)在計(jì)算過(guò)程中過(guò)于“樂(lè)觀”的情況。憑借著這個(gè)算法,百度參賽團(tuán)隊(duì)最終訓(xùn)練出了圖4這樣靈活的控制模型,連續(xù)兩年拿下該賽事的冠軍名次。
圖4
最后參賽團(tuán)隊(duì)表示已經(jīng)把相關(guān)訓(xùn)練代碼開(kāi)源到PARL倉(cāng)庫(kù)中,方便大家了解強(qiáng)化學(xué)習(xí)競(jìng)賽的訓(xùn)練流程,具體可以參閱如下路徑(https://github.com/PaddlePaddle/PARL/tree/develop/examples/NeurIPS2019-Learn-to-Move-Challenge)。