機(jī)器人仿真開源軟件Roboschool首發(fā),與OpenAI Gym高度整合。
以三種策略控制三個(gè)不同的機(jī)器人在Roboschool中賽跑??梢酝ㄟ^運(yùn)行agent_zoo /demo_race1.py重新建立此場景。每次運(yùn)行腳本時(shí),會出現(xiàn)隨機(jī)的一組機(jī)器人。
Roboschool作為新的OpenAI 訓(xùn)練場(OpenAI Gym)開發(fā)環(huán)境為機(jī)器人仿真控制提供了可能。其中八個(gè)開發(fā)環(huán)境可以免費(fèi)替代現(xiàn)有預(yù)設(shè)的MuJoCo環(huán)境,它們可以重新調(diào)整以產(chǎn)生更逼真的運(yùn)動。此外,我們還包括幾個(gè)全新的更具有挑戰(zhàn)性的環(huán)境。
Roboschool的發(fā)布也使得在同一個(gè)環(huán)境中同時(shí)訓(xùn)練多個(gè)機(jī)器人變得容易。在我們推出OpenAI訓(xùn)練場后,許多用戶向我們反饋,MuJoCo組件需要付費(fèi)許可證(盡管MuJoCo最近為個(gè)人和高校增加了免費(fèi)學(xué)生許可證)。現(xiàn)在,開源的Roboschool取消了這一限制,讓每個(gè)人都在無需擔(dān)心預(yù)算的情況下進(jìn)行他的研究。 Roboschool基于Bullet物理引擎,這是一個(gè)開放源代碼許可的物理庫,已被其他仿真軟件(如Gazebo和V-REP)使用。
開發(fā)環(huán)境
Roboschool發(fā)布時(shí)帶有十二個(gè)設(shè)定環(huán)境,其中不僅包括Mujoco用戶熟悉的任務(wù),還包括了一些更新,更具挑戰(zhàn)性的任務(wù),如更高難度的人型機(jī)器人步行任務(wù),以及多玩家乒乓球游戲任務(wù)。我們在今后會不斷豐富我們的環(huán)境任務(wù)集,同時(shí)也對開源社區(qū)的貢獻(xiàn)充滿期待。
對于現(xiàn)有的MuJoCo環(huán)境,除了將其移植到Bullet之外,我們也對其進(jìn)行了更貼近現(xiàn)實(shí)的改進(jìn)。以下是經(jīng)過我們移植的三種環(huán)境,并通過比較說明了它們與現(xiàn)有環(huán)境的不同之處。

您可以在GitHub中agent_zoo文件夾中找到針對所有這些環(huán)境的訓(xùn)練策略。此外,你還可以通過demo_race腳本來運(yùn)行三個(gè)機(jī)器人之間的比賽。
交互性和魯棒性控制
在之前的幾個(gè)OpenAI訓(xùn)練場環(huán)境中,任務(wù)目標(biāo)是學(xué)習(xí)一個(gè)步行控制器。然而,在該環(huán)境任務(wù)只是涉及到簡單的向前推進(jìn)。在實(shí)際應(yīng)用中,機(jī)器人的步行策略只是簡單學(xué)習(xí)到一個(gè)循環(huán)軌跡,并沒有訪問到其余大部分狀態(tài)空間。因此,最終學(xué)習(xí)到的策略往往是非常脆弱的:一個(gè)小小的推動通常會導(dǎo)致機(jī)器人失敗摔倒。
在發(fā)布的Roboschool中我們已經(jīng)添加了兩個(gè)包含3D人形機(jī)器人的環(huán)境,這使得機(jī)器人運(yùn)動問題變得更加有趣和具有挑戰(zhàn)性。這些環(huán)境需要交互式控制 - 機(jī)器人必須朝向一個(gè)標(biāo)志運(yùn)行,而標(biāo)志的位置會隨時(shí)間隨機(jī)變化。
機(jī)器人的任務(wù)目標(biāo)是不斷朝著位置隨機(jī)變化的標(biāo)志奔跑。HumanoidFlagrun環(huán)境用來展示如何讓機(jī)器人學(xué)習(xí)減速和轉(zhuǎn)彎。此外,HumanoidFlagrunHarder環(huán)境還允許機(jī)器人跌倒,并給予其時(shí)間重新站起來回到步行狀態(tài)。在每次運(yùn)行開始時(shí),機(jī)器人處于直立或平躺在地面上的狀態(tài),同時(shí)它會不斷被白色的立方體轟炸,來將機(jī)器人推離原有的軌跡。
我們?yōu)镠umanoidFlagrun和HumanoidFlagrunHarder環(huán)境提供成熟的訓(xùn)練策略。在這些訓(xùn)練策略中,機(jī)器人的不行并不像我們普通人那樣快速和自然,但這些訓(xùn)練策略可以允許機(jī)器人從許多復(fù)雜情況中恢復(fù),他們知道如何動作。這個(gè)訓(xùn)練策略本身是一個(gè)沒有內(nèi)部狀態(tài)的多層感知器,所以我們推斷,在某些情況下,機(jī)器人通過其手臂的姿態(tài)來存儲運(yùn)動信息。
兩位機(jī)器人通過彼此對抗學(xué)習(xí)玩RoboschoolPong
Roboschool允許您在同一環(huán)境中運(yùn)行和訓(xùn)練多個(gè)機(jī)器人。我們接下來通過RoboschoolPong來展示這一特性,同時(shí)它也可以應(yīng)用到其余很多環(huán)境中。通過多人訓(xùn)練,您可以訓(xùn)練同一機(jī)器人(它可以自己和自己玩),也可以使用相同的算法訓(xùn)練兩個(gè)不同的機(jī)器人,甚至可以設(shè)置兩種不同的算法相互對抗。
多人訓(xùn)練的設(shè)置也提出了一些有意思的挑戰(zhàn)。如果你同時(shí)訓(xùn)練兩個(gè)機(jī)器人,您可能會看到它們的學(xué)習(xí)曲線,從梯度控制算法中所得學(xué)習(xí)曲線如下圖所示。
乒乓球控制游戲?qū)W習(xí)曲線,其中策略更新與策略梯度控制算法同時(shí)運(yùn)行。

乒乓球控制游戲?qū)W習(xí)曲線,其中策略更新與策略梯度控制算法同時(shí)運(yùn)行。
在算法運(yùn)行的過程中,發(fā)生了以下的情況:
機(jī)器人2(紫色)發(fā)現(xiàn)它的對手處于頂端,所以它將球發(fā)送到底部。
機(jī)器人1最終發(fā)現(xiàn)它可以通過移動到底部來保衛(wèi)自己,但現(xiàn)在總是保持在底部,因?yàn)闄C(jī)器人2總是將球發(fā)送到底部。
這樣,生成的控制策略就會不斷迭代變化,經(jīng)過幾個(gè)小時(shí)的訓(xùn)練,兩個(gè)機(jī)器人都沒有學(xué)到任何有用的東西。在生成對抗網(wǎng)絡(luò)中,在對抗環(huán)境中學(xué)習(xí)是比較復(fù)雜的,但卻是一個(gè)有趣的值得研究的問題,因?yàn)榧词乖诤唵蔚沫h(huán)境中,這種相互作用也可以生成復(fù)雜的策略,并且可以提供非常自然的解決方案。