最前沿 之 谷歌的協作機械臂

本文由我和李藝穎共同撰寫。

1 前言

前幾天也就是2016年10月3號,Google Research Blog上發表了最新的Blog,介紹他們在機器人上的工作:research.googleblog.com

現在Google們都喜歡發文章+寫博客的套路,似乎不太需要我們做面向大眾的解讀了。因此,本文決定不介紹他們基本的工作了,我們來研究一下他們的具體工作,來點乾貨。

這次Google聯合了Google Brain和DeepMind一起搞,一次發了四篇文章(夠狠,鏈接轉自官方博客):

【1】Deep Reinforcement Learning for Robotic Manipulation. Shixiang Gu, Ethan Holly, Timothy Lillicrap, Sergey Levine.

【2】Deep Visual Foresight for Planning Robot Motion. Chelsea Finn, Sergey Levine. [data]

【3】Collective Robot Reinforcement Learning with Distributed Asynchronous Guided Policy Search.

Ali Yahya, Adrian Li, Mrinal Kalakrishnan, Yevgen Chebotar, Sergey Levine.

【4】Path Integral Guided Policy Search. Yevgen Chebotar, Mrinal Kalakrishnan, Ali Yahya, Adrian Li, Stefan Schaal, Sergey Levine.

所以,今天我們來以快速的分析一下這四篇文章。

2 Deep Reinforcement Learning for Robotic Manipulation

這篇文章的題目弄得很大,用深度增強學習來解決機器人的操縱問題。具體一點就是讓機器人從零開始學會開門。

文章中表示實現讓機械臂自己學會開門就是他們的貢獻,他們是第一個做出這個demonstration的。當然,這麼說也是ok的。

對於理論上的創新,他們表示他們拓展了NAF演算法,變成非同步NAF。我表示非同步的思想早就有了,而且他們的非同步NAF的實現方式實在是太太太簡單了。就是

用多個線程收集不同機器人的數據,然後用一個線程去訓練,並且訓練線程在伺服器上,訓練後不斷把最新的神經網路參數傳遞給每一個機器人用於新的採樣

可能讓機器人自己開門這個任務在我看來是本來就能實現的,所以其實並沒有太多震撼的地方。而且,在這篇文章中,並不使用視覺輸入!

不使用視覺輸入,聲稱能讓機器人學會開門有多大意義呢?

從文章中可以看到,對於開門這個任務,門把手的位置的給定的:

In addition, we append a target position to thestate, which depends on the task: for the dooropening, this is the handle position when the door is closed and the quaternion measurement of the sensor attached tothe door frame.

大家看到了吧,不但門把手的位置,連門的姿態也就是四元數quaternion也是有感測器來測量的。那麼,這樣號稱做了一個很屌的Demonstration真的有意思嗎?比較質疑這篇文章的貢獻。這裡使用的神經網路也只是兩個200的全連接神經網路。某種程度上講,其實這個任務的狀態輸入是低維而不是高維的。我覺得如果這篇文章能夠完全使用圖像輸入來實現端到端自學習的話,那麼就很厲害!雖然該團隊之前有一篇文章就是用視覺輸入,但是用了十幾台機器人,並且訓練幾個月來收集數據。現在這個任務只要幾小時,不過沒有視覺,意義不夠大。

關於NAF演算法,可以參考本專欄的:DQN從入門到放棄7 連續控制DQN演算法-NAF - 智能單元 - 知乎專欄

關於DDPG演算法,可以參考本人的CSDN blog:Paper Reading 3:Continuous control with Deep Reinforcement Learning

關於DDPG的源碼復現,可以參考本人的github:GitHub - songrotek/DDPG: Reimplementation of DDPG(Continuous Control with Deep Reinforcement Learning) based on OpenAI Gym + Tensorflow

3 Deep Visual Foresight for Planning Robot Motion

這篇文章和深度增強學習沒有直接關係,完全另外一個思路。為什麼研究這個,我們先來說說機器人學習之難難在哪?

機器人學習之難難在環境不完全可見,難在沒有Model!

在控制領域,有一種任務相對比較好做,比如火箭發射!(當然也是很難的大工程),但是火箭發射上個世紀就解決了,人類甚至可以發射探測器到很遠的地方,火星探測器也上了好幾次了。Elon Musk前不久才提出他的火星登陸計劃:

為什麼人類早早就能把探測器發送到那麼遠的地方,卻連「簡單」的讓機器人開個門都那麼難?

因為對於航天工程,我們可以精確的計算探測器,火箭的運動模型(運動方程),我們可以精確的計算出火箭在怎樣的推力下會達到的軌跡,因此我們可以精確的控制。我們有足夠的人力,足夠的資源來進行數學計算,我們也就能夠實現很好的控制。但是對於機器人開門這種事,我們沒法算

為什麼?

  1. 每個門都可能不一樣,門把手也不一樣
  2. 機器人的位置不固定,門的位置也不固定。

我們可以針對某個特定的門精確計算來實現控制,但是我們不可能遍歷所有的門,更何況對於一個新的門怎麼辦?大家看到了,這裡沒有所謂的Model模型,我們無法建立模型,特別是如果我們只使用攝像頭,類似人的第一視角,那麼我們得到的信息更是有限。每時每刻的控制都將不一樣。這就是機器人學習難的原因。

所以,深度增強學習的很多方式都是所謂的Model-Free的方法,也就是不需要模型,通過trial-and-error來學會整個過程。

可是,人類並不僅僅是通過trial-and-error來學習的。我們人類其實在大腦里能夠構建一些基本的模型的,也就是比如門把手的位置,很多東西的位置,在我們大腦中是有概念的,我們也能夠預測他們的位移。特別是足球的守門員,就需要掌握一項技能,那就是預判球的位置。

所以,問題就這麼來了:我們能不能來預測一下物體的位置,從而幫助機器人抓取物品?

這篇文章也就做了這個事,弄了一個物體預測模型來預測物體的位置。本質上是未來研究model-based的方法。

個人看法:model-based和model-free方法結合起來用能使機器人學習發揮出更大威力。

關於預測模型,其實這篇文章也不新鮮了,之前就有文章研究預測atari遊戲的畫面的,也有文章預測汽車的運行軌跡的。只是這篇文章比較具體,面向機器人控制的具體問題,把預測模型和機器人控制MPC直接結合在一起,從而形成了一個確實的demo。

所以,重複一下,這篇文章的關鍵不是弄成一個預測模型,而是真正把模型給用在機器人控制上。在文章中,作者也是說的很明確,沒有誇大的成分:

The primary contribution of our paper is to demonstratethat deep predictive models of video can be used by realphysical robotic systems to manipulate previously unseenobjects.

我們稍微來說一下這個深度預測模型:

結構上搞的比較複雜。先說輸入輸出。輸入有三個,一個是當前幀,當前的狀態state和動作action,然後輸出下一幀圖像(預測)。

中間的結構大致可以分成三部分:

  1. CNN+LSTM部分,用於提取圖像特徵信息,不過這裡的輸出很特別,並沒有使用反卷積直接生成圖像,而是輸出一個圖像的mask蒙版。這個蒙版可以認為是計算出裡面的物體的移動流也就是pixel flow。
  2. 狀態和動作輸入部分,將狀態和動作從卷積層的中間插入。
  3. 圖像生成部分。首先是利用中間的卷積層抽取多個卷積核然後與原始圖像做卷積,得到變化後的圖像transformed images,然後和mask一起生成pixel flow map F,然後F與原始圖像一起生成下一幀的圖像。

所以這個神經網路本質上是要學習出物體移動的像素流pixel flow,類似光流,從而計算出下一幀的圖像。作者雖然限定了神經網路的結構,但是在學習訓練時只使用視頻,動作,狀態數據做監督學習,也就是端到端的學習,中間的mask蒙版和像素流並沒有單獨的監督學習。然而文章中並沒有對mask和flow的具體表現形式做分析,是否就是產生出對物體運動的捕捉我比較懷疑。只能說通過訓練,神經網路確實學習了捕捉物體的運動並能夠根據輸入加以預測。

接下來是這篇文章的區別其他文章的工作,直接使用這個預測模型與經典的MPC控制結合,來實現機械臂的控制。基本是思路就是利用預測模型預測不同動作未來的移動情況,從而選擇最優的移動方式。這種方式取得成功說明利用預測模型進行機器人控制的可行性。下一步進一步拓展深度預測模型將成為可能,這也是這篇文章最大的意義。

4 Path Integral Guided Policy Search

這篇文章以及下一篇文章是對Sergey Levine提出的GPS演算法的拓展和改進。關於GPS(Guided Policy Search)這個演算法,我一直覺得不是一個好的演算法,至少未來這個演算法我認為沒有必要(為什麼之後說),但是這個演算法展示性比深度增強學習演算法強,能夠直接應用到真實的機器人上。先說一下深度增強學習應用到機器人上最大的困難,就是採樣!我們可以在模擬環境中千百萬次的訓練機器人,但是我們沒辦法在真實環境中這麼做。時間不允許,機器人也不允許。以此同時,完全的高維輸入,高維輸出做機器人控制目前仍是困難很大的。

那麼GPS是什麼呢?

它的想法非常簡單,就是把問題先分解成不同的初始條件,比如開門,有的是這個角度,有的是那個角度。然後,針對不同的條件單獨訓練一個局部策略Local Policy。那麼這個訓練方式他這裡不管了!!!也就是你想用什麼傳統的控制演算法都可以!然後有了這些可以用的策略之後,就利用策略採集樣本,只是把輸入變了,比如變成視覺輸入,然後利用樣本訓練一個網路來代替這些局部策略,也就是模仿學習Imitation Learning,通過這種方式實現視覺伺服。我表示GPS很沒意思。

為什麼沒意思?

就說機器人開門這件事吧。我們要實現視覺控制,也就是讓機器人看著打開門,和人一樣。我們希望即使門放在不同的角度位置機器人也可以開。按照深度增強學習做法,那必須是End-to-End啊,輸入視覺信息,輸出控制,然後訓練。從Deep Reinforcement Learning for Robot Manipulation這篇我們大概可以猜測出,這樣做失敗了,所以那篇文章並沒有使用視覺輸入。但我現在就要視覺輸入這麼辦?

Imitation Learning!模仿學習

神經網路啥都能學習,因此只要我們能夠收集到好的輸入輸出樣本,我們就可以訓練。模仿學習就是這麼干。我們可以利用人類獲取樣本。比如人拿著機械臂做幾百次開門動作,然後記錄這些動作作為樣本進行訓練。但是只是用人比較麻煩,不用人就用機器人控制的演算法,比如LQR,我們就有model怎麼啦。我們先利用機械臂的model信息和門的精確信息來優化出一條最優軌跡,然後這不就是樣本了嗎?為了實現神經網路的通用性,我們面對不同的門的角度位置弄多條對應的最優軌跡,然後收集所有樣本進行訓練。在拓展一下,就是反過來利用訓練的神經網路生成樣本,然後反過來讓控制演算法進行優化。

所以,雖然GPS能夠實現視覺伺服控制,但是其中間過程一點也不單純。使用了太多額外的信息來做訓練。

在我看來,訓練時也只使用視覺信息,不使用額外信息才是有用的演算法。GPS最致命的地方也在這裡,這個開門可以精確建模,可以有額外數據,但是很多其他任務可沒有那麼多額外數據可以弄。GPS本質上不具備自學習能力,而只是傳統方法的神經網路化。監督學習無法使機器人超越傳統方法。

那麼這篇文章又做了什麼事呢?將LQR用一個model free的RL演算法替代。PI2這個演算法之前不是很了解,看了文章感覺就是一種進化演算法。基本思想就是採用多種路徑,然後讓路徑概率向著損失較小的方向靠。和CEM(交叉熵方法)也差不多。就是對於Cost,採樣概率還有參數更新方式不一樣。

有了PI2演算法,GPS就可以做到model free了。但是訓練過程還是一樣。PI2演算法的使用過程中並不使用視覺信息。只是因此採用的方法不一樣(比起LQR),能夠通過訓練來解決開門這種間斷連續控制問題(要先讓機械臂移動到門把手那裡,然後抓住,旋轉,打開)。在我看來,直接用深度增強學習演算法比如DDPG甚至REINFORCE來訓練local policy不就完了,最後再綜合所有樣本監督學習一個,效果肯定好。

總的來說,GPS看似有用,實則雞肋,改進它意義不大,還不如研究如何實現少樣本學習。

5 Collective Robot Reinforcement Learning with Distributed Asynchronous Guided Policy Search

這篇文章其實和Deep Reinforcement Learning for Robot Manipulation很類似,只是針對的演算法不一樣,說白了就將Guided Policy Search拓展成並行非同步的版本,從而可以實現多機器人協同訓練。

----------------------

下面的分析來自李藝穎:

從架構方面,這十分契合雲機器人的主旨,機器人可以將它們各自的經驗通過網路傳遞給其它機器人。斯坦福人工智慧百年報告之《人工智慧與2030年的生活》中也指出以家用機器人為例,多機器人協同能夠使機器人「共享更多家庭內收集的數據集,反過來能提供給雲端進行機器學習,進一步改進已經部署的機器人。」本文就是鑒於考慮到真實世界中環境具有多樣性和複雜性,所以想到讓機器人將自身經歷傳遞給彼此,使它們在環境中相互配合來學習技能,同時機器人也基於自身任務的特定樣本改進局部的策略。實驗採用4個機器人,任務是基於視覺學習開門,4個機器人對應的門的姿態和外觀也都有所不同,採用的演算法是GPS,在它們反覆嘗試和共享經歷中不斷提高任務執行水平。多機器人提高了樣本的多樣性,提高了學習的泛化能力和可使用能力。

-----------------------

演算法的做法依然是很簡單。一句話就可以概括。就是幾個機器人分別有一個local policy來優化,每個機器人面對的場景都不一樣。然後訓練,將樣本上傳伺服器,在伺服器上監督學習一個神經網路,然後用這個神經網路Global Policy來輔助採樣優化local policy。

只能說多機器人協助必然能夠提升學習訓練速度,但是這種idea非常簡單,演算法的改進也是非常簡單。當然,我們也不得不承認,Google的整個實驗難度很大,要訓練好很難,甚至這個訓練用的機械臂都是Google自己造的(話說Google高層不讓賣)。

6 小結

Google似乎想驚艷一下大家,一次發四篇文章說他們的機器人進展。但是很可惜,從具體文章的內容和貢獻來看,並沒有太多驚艷的思想和效果。多機器人協作是必然,核心還在於演算法的改進。當然,我們也必須承認,Google能夠實現讓機器人完全使用視覺來開門是一個不錯的Demo,只是這個Demo是在當前演算法框架下必然可以實現的,不過也只有土豪的Google能這麼做。

最後,大家也看到了,讓機器人學會開門竟然是21世紀的今天人類最前沿科技都還沒很好解決的問題,可見人類的文明程度是有多低。但,這也就是我們研究機器人實現機器人革命的機會!

聲明:本文為原創文章,未經允許不得轉載。另外本文的圖片都來自於本文介紹的四篇paper和網路。

推薦閱讀:

麥克納姆輪和全向輪他們的優缺點分別是什麼?
此問題已由題主刪除了?

TAG:深度学习DeepLearning | 机器人 | 科技 |