太像人手了!OpenAI用打DOTA的演算法,教會了機械手「盤核桃」
栗子 夏乙 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
五根手指、24個關節,這隻機械手從結構到大小,方方面面都像極了人類的手。
在OpenAI的實驗室里,它緩緩盤著核桃轉動著一個木塊。沒有人告訴它該動哪根指頭,驅使它的,是在模擬器里訓練出來的強化學習演算法。
這套靈巧的系統,叫做Dactyl。
它可以把一個正方體,轉到指定的方向。
沒有人指揮它,哪根手指往哪個方向用力,收到的指令只是木塊的朝向(I在前,E在左,N在上) 而已。
當然,動作並不像人類盤核桃那樣一氣呵成,機器人要一步一步來。
神經網路訓練的過程中,自學了許多不同的分解動作。比如上圖,用兩個手指輕輕夾住方塊,再用其他手指撥一撥,方塊就轉起來了。
再比如,推著方塊在掌心滑動 (Sliding) 。還有,底面用不離開手心,但方塊依然水平轉動 (Finger Gaiting) ,堪稱盤核桃的核心技巧。
這些技能,Dactyl都是在模擬器里學會的。不過,它能順利地把技能遷到現實世界,就算物體不是方塊,也能隨機應變。
從二指夾具到五指機械手
如果你關注機器人技能的進展,大概會發現這樣的機械手,遠不如兩根指頭的夾子常見。
各大門派都在用二指夾具,通過各種方法學習著抓取、放置、橫掃等動作。
比如OpenAI自己,就展示過二指夾具的抓東西扔東西技能:
Google,曾經出動了大量的二指夾具來學習抓取:
在李飛飛夫婦實驗室學習抓鎚子的機器人,也同樣是兩根手指:
控制相對簡單,成本相對低廉,對於那些靠抓住、放開就能解決的問題來說,機械臂的確是個好選擇。
但面對文章開頭展示的那些複雜動作,兩根指頭就先天不足了。
更何況,人類對於和自己相似的物體,有著迷之熱情的追求。
像人手一樣的機械手發展得如何呢?雖說已經出現了幾十年,但它們操縱物體的能力一直很有限。
OpenAI說,要靠傳統的機器人學方法來解決靈巧操控問題,太慢了。
《紐約時報》說,按傳統的方法,機械手只能做大量工程師編了程的事情。
現在,OpenAI展示了機械手自己學習更複雜的操作的能力。
他們所用的這隻結構上高度模擬的手,來自英國Shadow Robot公司。
在這隻手上,OpenAI花了大價錢。Shadow官方網站沒有明碼標價,而根據機器人網站Android World顯示,買這樣一隻機械手要花掉119700美元,差一點點就到了12萬。
不讓它多掌握點技能,哪對得起這12萬刀。OpenAI要教這隻機械手來轉動各種各樣的物體,每一種形狀都重新編程當然不行。
另外,這隻手有24個自由度,要控制的維度就比傳統7自由度機械臂多了兩倍。
OpenAI還想讓它在真正的現實世界中工作,於是,感測器獲取的信息又嘈雜又有延遲,有時候,當一個指尖的感測器被其他指頭擋住,演算法還得靠不完整的信息來運轉。
面對種種困難和5根「手指」,他們祭出了前不久訓練AI打DotA2所用的演算法。
OpenAI Five,跨界了。
盤核桃技能習得之路
Dactyl模型里,有兩個神經網路各司其職:一是視覺網路,二是控制網路。
簡單來說,要了解物體的情況,再把它轉到對的方向。
兩個網路,都是為了隨機應變而生,用的方法叫做「域隨機化 (Domain Randomization) 」。
控制網路
先來說控制網路,這個網路是在MoJoCo物理引擎裡面,搭了個模擬器來訓練的。
不過,研究人員並不希望AI過度依賴物理原理。因為,感測器的測量數據可能嘈雜,也可能有延時,且隨著時間的推移,機器人會受傷會老化,物理性質也會發生變化。
而要把技能推廣到真實環境,就更加需要應付多變的環境。
所以,這個模擬器只是對物理世界的一個「粗略近似 (Coarse Approximation) 」。
除此之外,為了培養AI的應變能力,模擬器提供了各種各樣的場景,物體的物理性質和外觀都可以發生非常豐富的變化。
如果,一個強化學習策略,在所有的模擬場景里,都能完成任務,那麼它到了真實世界,也更容易來者不拒。
這也不是全部,團隊希望機器人可以在不同環境下,選擇不同的動作來執行任務,於是用了LSTM來賦予AI一些記憶。沒有這些記憶的話,機械手需要兩倍的轉動次數,才能把物體捧在正確的方向。
成就了刀塔AI戰隊的Rapid,是一個規模化的近端策略優化系統。在這裡,Dactyl用6144個CPU核加上8個GPU,訓練了50小時,相當於塵世的一百年。
視覺網路
訓練之初,Dactyl就是朝著「轉動隨機物體」的目標去的,因為世界也不是只有正方體那樣單調。
所以,視覺的部分,用了很普通的RGB攝像頭,數據用來估計物體的位置和朝向,不需要太精確。
三枚攝像頭圍在機器人身邊,解決了模糊和遮擋的問題,足矣。
一個卷積神經網路(CNN) ,會把攝像頭拍到的視頻吃下去,估算物體的位置和方向,再用這些信息來指揮控制網路選取合適的操作。
這個網路的訓練,不是在MUJOCO里,而是Unity遊戲引擎,後者的視覺場景更為豐富,給了Dactyl千錘百鍊的機會。
兩個網路是分開訓練的,但合體之後便能直接走進真實世界,微調都不需要。
OpenAI踩過的坑
除了展示成果,OpenAI的科學家們還熱情地公開了採過的坑:這些方法我們試了,沒用。
坑有兩個:
一是降低反應時間。OpenAI目前設置的反應時間是80毫秒,比人類的150-250毫秒要低,但高於神經網路25毫秒的計算時間。他們也試過把反應時間降低到40毫秒,結果發現,消耗的訓練時間更長了,性能沒什麼明顯提升。
二是用真實數據來訓練視覺策略。從嘗試的結果來看,用真實數據和模型數據混合訓練,與只用模擬數據相比成績相當,於是,他們訓練最終的模型時就只用了模擬數據。
除此之外,在實驗過程中,OpenAI科學家們的認知還被顛覆了幾次:
操縱真實世界物體不是非得用觸覺感測不可。他們發現,用多種多樣的感測器數據,如果模擬器不能有效地對這些數據建模,還不如用少量好建模的感測器。
為一個物體設置的隨機化,會泛化到與它性質類似的其他物體。他們在教會系統操控方塊之後,又弄了個八稜柱用來訓練新演算法,在這個過程中他們發現,為方塊設計的隨機化用起來完全沒問題。但是,換成一個球體來訓練,就不太行了。
對於實體機器人來說,系統工程和演算法同樣重要。他們發現,運行的都是一樣的策略,有一個工程師成績總是比別人好……後來,經過對這位別人家孩子的仔細檢查,發現他的電腦比大家都快,掩蓋了一個bug。
傳送門
讀Paper:
https://d4mucfpksywv.cloudfront.net/research-covers/learning-dexterity/learning-dexterity-paper.pdf
博客原文:
https://blog.openai.com/learning-dexterity/#results
—完—
※眼擎科技CEO朱繼志:自動駕駛視覺成像系統解析
※康奈爾機器人的肌肉是爆米花做的,果然很有爆發力
TAG:量子位 |