有沒有將深度學習融入機器人領域的嘗試?有哪些難點?
目前在機器學習領域,深度學習發展非常迅速。有很多介紹說,深度學習與人類的認知有所類似,那直觀的感覺,就是深度學習也許可以融合到機器人行業中去。不知現在的學術界有沒有類似的嘗試?題主比較小白,希望大家能解答的細緻點^_^
本題已收錄至知乎圓桌:人工智慧 · 機器感知,更多「人工智慧」相關話題歡迎關注討論
忘記吃晚飯了,正在等外賣,所以簡單回答一下,就當拋磚引玉。
現在深度學習這麼火,大家都會想著看看能不能用到自己的研究領域裡。所以,題目中的這方面嘗試也是有的。我就我了解的兩個方面(視覺與規劃)來簡單介紹一下吧。
- 物體識別
這個其實是最容易想到的方向了,比較DL就是因為圖像識別上的成果而開始火起來的。
這裡可以直接把原來 CNN 的那幾套網路搬過來用,具體工作就不說了,我之前在另一個回答amazon picking challenge(APC)2016中識別和運動規劃的主流演算法是什麼?下有提到,2016年的『亞馬遜抓取大賽』中,很多隊伍都採用了DL作為物體識別演算法。
- 物體定位
當然,機器視覺跟計算機視覺有點區別。機器人領域的視覺除了物體識別還包括物體定位(為了要操作物體,需要知道物體的位姿)。
2016年APC中,雖然很多人採用DL進行物體識別,但在物體定位方面都還是使用比較簡單、或者傳統的演算法。似乎並未廣泛採用DL。
當然,這一塊也不是沒人在做。我們實驗室的張博士 @HR-Zhang也是在做這方面嘗試。我這裡簡單介紹一下張博士之前調研的一偏論文的工作。
Doumanoglou, Andreas, et al. "Recovering 6d object pose and predicting next-best-view in the crowd." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.
這個工作大概是這樣的:對於一個物體,取很多小塊RGB-D數據;每小塊有一個坐標(相對於物體坐標系);然後,首先用一個自編碼器對數據進行降維;之後,用將降維後的特徵用於訓練Hough Forest。
這樣,在實際物體檢測的時候,我就可以通過在物體表面採樣RGB-D數據,之後,估計出一個位姿。
- 抓取姿態生成
這個之前在另一個問題(傳統的RCNN可以大致框出定位物體在圖片中的位置,但是如何將這個圖片中的位置轉化為物理世界的位置? - 知乎)下有介紹過,這裡就不具體說了。放兩個圖
Using Geometry to Detect Grasp Poses in 3DPoint Clouds
High precision grasp pose detection in dense clutter
- 控制/規劃
這一塊是我現在感興趣的地方。
簡單地說,我們知道強化學習可以用來做移動機器人的路徑規劃。所以,理論上將,結合DL的Function Approximation 與 Policy Gradient,是有可能用來做控制或規劃的。當然,現在的幾個工作離取代原來的傳統方法還有很長的距離要走,但是也是很有趣的嘗試。
外賣快到了,我就不多評論了,只放幾個工作,具體可以看他們的paper。
1.Learning monocular reactive uav control in cluttered natural environments
CMU 無人機穿越森林
2. From Perception to Decision: A Data-driven Approach to End-to-end Motion Planning for Autonomous Ground Robots
ETH 室內導航
3.Learning Hand-Eye Coordination for Robotic Grasping with Deep Learning and Large-Scale Data Collection
DeepMind 物體抓取
4. End-to-end training of deep visuomotor policies
Berkeley 擰瓶蓋等任務。
=========2017/03/23 補充=========
原來題目里還有一個問題『有哪些難點』,我這裡簡單補充一下:
1、在視覺領域,除了物體識別、還需要進行物體定位。這是一個 regression 問題,但是目前來看, regression 的精度還沒辦法直接用於物體操作,(可能是數據量還不夠,或者說現在還沒找到合適的網路結構),所以一般還需要採用ICP等演算法進行最後一步匹配迭代。
2、機器人規劃/控制等方面,可能存在的問題就比較多了。我之前在雷鋒網『硬創公開課』直播(運動規劃 | 視頻篇)的時候有提到我碰到的一些問題,這裡簡單列在下面:
- 可觀性問題
簡單地說,我們這些不做DL理論的人,都是先默認DL的收斂、泛化能力是足夠的。我們應該關心的是,要給DL喂什麼數據。也就是說,在DL能力足夠強的前提下,哪些數據才能讓我需要解決的問題變得可觀。
當然,目前的幾個工作都沒有提到這點,Berkeley的那個論文里是直接做了一個強假設:在給定數據(當前圖像、機器人關節狀態)下,狀態是可觀的。
實際機器人操作中,系統狀態可能跟環境有關(例如物體性質),所以這一個問題應該是未來DL用在機器人上所不能繞過的一個問題。
- 數據量
一方面,我們不了解需要多少數據才能讓問題收斂。另一方面,實際機器人進行一次操作需要耗費時間、可能會造成損害、會破壞實驗條件(需要人工恢復)等,採集數據會比圖像識別、語音識別難度大很多。
- 是否可解決
直播的時候我舉了個例子,黑色障礙物位置從左到右連續變化的時候,規劃演算法輸出的最短路徑會發生突變。(具體看視頻可能會比較清楚)
這對應於DL中,就是網路輸入連續變化、但輸出則會在某一瞬間突變。而且,最短路徑可能存在多解等問題。
DL的 Function Approximattion 是否能很好地處理這一狀況?
是吧,這幾件事想想都很有趣,大家跟我一起入坑吧~
我們最近在ICRA上發表了一些相關嘗試,試圖用深度學習來幫助pose recognition。。但是。。我是來搗亂的!
腦殘也是殘,微信機器人也是機器人啊!深度學習可以很容易擼一個斗圖機器人出來啊!大家調戲得很開心啊!(那個鴨子頭像是機器人)
但因為直接用的是imagenet的模型,對貓和狗神特碼准,碰到二次元套圖直接懵逼。。
推薦一本書:
ディープラーニングがロボットを変える
鏈接:Amazon | ディープラーニングがロボットを変える (BTブックス) | 尾形 哲也 通販
基友昨天的推送,安利一發~
AAAI 2016篇一: 深度學習幫助無人機穿越森林
綜合現有的兩個答案,首先因為深度學習在視覺的廣泛應用,機器人視覺中也開始採用深度學習。再就是結合deep learning和reinforcement learning的deep reinforcement learning, 以Pieter Abbeel組為代表。
正在看移動機器人與深度學習相關的一些論文。
傳統方法進行機器人導航用基於slam的方法(理解的並不一定對,畢竟剛入坑,如果不對請糾正):先把室內的cost map給重構出來,再通過路徑規劃來進行避開障礙物和到達指定目標位置。這種方法有幾個缺陷,第一個是我們需要有一個global map,需要人操控機器人來構建。第二個是如果有動態或者在global map新出現的障礙物,用slam就很難避開。
利用深度學習來進行避障和導航有兩種,都是把原始感測器數據(圖像,LIDAR)通過深度神經網路來映射到輸出動作:第一個是用深度強化學習。強化學習是通過trail and error來進行最大化future reward(比如說碰到障礙物就扣一分,到達target就獎勵一分)。可是,深度強化學習需要數據量很大來進行探索state action space而且在訓練初期經常導致機器人進入危險的狀態下,所以基本都是在模擬器里訓練完之後經過fine-tune到實際應用場景。
再一個就是模仿學習imitation learning或者learn from demonstration。這就是利用監督學習人類或者expert policy(數據就是圖像,標籤就是expert polocy的動作)。這種方法很簡單,也不會像deep rl那樣需要大量的trail and error,但是問題就是這樣做會破壞數據的分布導致機器人遇到新的環境之後就會大量的出錯。有一個前幾年的論文DAgger試圖解決這個問題。但是DAgger又需要去讓人類在沒有反饋的情況下進行標籤的更正,這樣做是非常困難的。
所以現在如果是做機器人導航的話看看可不可以用dagger的思想,但是又不讓人來進行標籤更正(當然,這裡僅僅指的不再模擬環境下。如果在模擬環境下可以通過low dimension的感測器來學習到一個expert policy,這就又需要把神經網路fine-tune)。
其實還有一些其他的方法inverse reinforcement learning還有最近才出的generative adversarial imitatin learning。
僅僅是一些最近瀏覽論文的一些想法。如果有錯誤希望大家指出!舉一個栗子:
機器人的室內定位導航往往用slam解決建圖的問題,常用的有視覺slam與激光slam。激光slam需要用到激光雷達,在一些對精度和可靠性要求高的場合,一般都用德國西克或日本北陽的產品,價格動輒上萬,限制了機器人整機成本的降低。所以國內外很多創業公司或研究團隊都在探索視覺slam的道路。然而視覺slam有一些局限性,比如計算量大、對環境變化敏感、對特徵缺失敏感等,這些綜合導致了視覺slam目前難以用在對精度要求較高的移動機器人上。
比如工廠里的AGV、無人叉車等,對精度要求很高;以前常常用磁條、二維碼或RFID進行導航,由於工廠越來越講究柔性與低實施,目前也出現採用激光進行導航的(用視覺slam的思路做導航精度難以達到),一般用瑞典NDC的方案,價格動輒數十萬,限制了他們的大規模應用。
然而這些AGV或叉車有個特點,就是行走路線相對固定,所以有人想了一個的辦法:讓AGV在使用以前在要求的線路上跑一遍,邊跑邊拍環境圖片,然後真正作業的時候,也隨時拍攝環境圖片並於之前拍的圖片做比對,從而實現定位。在圖片比對時,就會嘗試機器學習的方法(當然也有其他方法)。
Sergey Levine
Pieter Abbeel
Ashutosh Saxena
Martin Riedmiller
Emo Todorov
Igor Mordatch
當前在深度學習融入機器人領域的嘗試中,其主要難點體現在機器人間的協同合作與數據共享上。
以Google Blog的一篇論文合集為例。在基於深度學習的機器人控制中,數據量是保證機器人能夠完成複雜任務的關鍵因素。比如Google去年那個舉世矚目的端到端抓取學習測試,僅僅是為了同一款機器人的機械手平面抓取問題就收集了多達八十萬次的抓取動作數據。
如果一台機器人單單憑藉自己的經驗來學習複雜技能,其需要花費的時間是無法估量的。因此,讓不同的機器人之間能夠共享數據和成功經驗就顯得非常重要了。
在Google的抓取學習項目里,共享數據的主要難點體現在每一台機器人所用的攝像頭是獨立校準的,其拍攝角度、光照條件不可能完全一樣。
在學術界,基於增強學習所進行的機器人運動規劃和衍生控制有三類基本思路,Google用多個例子演示了在這三類方法里,如何讓多個機器人分享數據、建立同一個技能的經驗模型。
雖然在這些例子里機器人仍然學習的是非常簡單的動作,比如開門和推動物體,但Google的學習方法有在未來逐步打造成更為豐富的行為經驗庫的潛力。
這三類增強學習的方法分別是:無模型學習、基於模型的學習和人工輔助實現的學習。
先來說說無模型學習。
無模型學習的關鍵是在分享原始數據上。「無模型」是指演算法並沒有關於環境信息的經驗模型。對演算法而言,外部世界和機器人本體就是一個黑箱,你所能做的就是輸入一個動作再獲得一個回報,然後變為一個經驗數據。在「無模型」學習中,機器人根據經驗數據不斷優化自身的策略以在未來獲得更大的回報。
此類方法有兩個關鍵點:一,用來描述策略的函數必須具備足夠的表達能力,這樣才有可能在最優策略較為複雜時找到更好的策略。比如深度神經網路就是這樣一種表達能力非常強大的函數體系,它的使用讓無模型演算法展現出令人震驚的有效性,並成為了Alpha Go的成功關鍵;二,即為網路關鍵點,這需要機器擁有足夠龐大的數據量,讓機器人能夠通過訓練找到比較不錯的策略參數。
在這種模式下,多個機器人分享經驗數據的方式非常簡單——直接把所有機器人獲得的原始數據匯總,然後再拿來訓練成一個最佳策略就可以了。一台機器人要花費一天才能採集的數據量,二十四台機器人只需要一個小時。
回到Google的實驗中,機械臂的目標是運動到指定的位置然後再完成開門的動作。每個機器人都在一次迭代里獲得了同一個神經網路策略的副本,機器人通過查詢這個網路來快速計算各種動作的潛在價值以選擇合適的動作來開啟執行。所有機器人的「動作ω結果」經驗數據都被上傳到中央伺服器用於迭代優化神經網路的策略。一次迭代結束後,每個機器人就再從伺服器得到更新後的神經網路副本,並依據這個新的神經網路來開啟新的動作執行。
「開門」動作涉及到機器人末端鉤爪和門把間複雜的接觸動力學模型。在Google發布的成果展示里,機器人通過四個小時的學習,在完全沒有物理模型支持的情況下自行探索出了開門的合適動作。
再來說說基於模型的學習。
無模型學習有一個很大的問題,即為就算是相同的機器人在相同的環境下,只要換一個任務,之前的策略就都沒用了,需要從零開始重新訓練。
但是,人類和動物並不是這樣學習的。我們可以想像自己的一個動作會給實際環境帶來什麼樣的變化,這就是經驗模型。在Google的第二個試驗中,機器人先花一段時間在面前的盒子里到處亂推一系列物體並記錄下每個動作帶來的圖像變化,以此建立經驗模型。機器人們繼續共享它們的經驗數據,最終訓練出一個神經網路來預測它們的動作將給環境帶來怎樣的改變。一旦訓練得到了一個不錯的經驗模型,機器人就可以用它反推得到實現這個狀態需要執行的相應動作。
Google為了日後的實用性加大了訓練難度,即機器人獲得的反饋並不是「這個物體在什麼地方」,它甚至連「物體」的概念都沒有,獲得的數據僅僅是一張張圖片,機器人們學到的經驗是一個特定的動作會對一個特定的像素點產生怎樣的影響。為了讓如此抽象的物理規律顯現出來,機器人必須獲得足夠龐大的經驗數據。前文已經提到了,Google為此測試了八十萬次抓取。
作為此次發布的最大亮點,人工輔助實現的學習放到最後來說。
訓練神經網路的本質是在進行一個規模巨大的非凸優化實驗。對於這種實驗來說,初始解的選取對性能有著非常大的影響。
在第一個實驗里,機器人是隨機選取初始解,自然需要超長的時間才能逐步優化到一個回報不錯的策略。但如果人類能通過示教的方式給機器人找個不錯的初始解,那麼這個訓練的進程就可以被大大縮減了。
同樣是開門、同樣是訓練從圖像到動作的神經網路策略,在下面這個實驗中,Google先採用了工業上常用的人工示教來率先完成了一遍開門的動作,使得機器人直接學會了在一個特定情形下的開門動作。之後基於這個初始解,再讓機器人接著用第一個實驗中的方法,逐漸訓練在更普遍的情形下的最優策略。
另外我們還需要注意的是,人工在機器人的深度學習中的作用遠不止提供初始解那麼簡單,人工還可以向機器人提供循序漸進的訓練集。在Google的實驗里,機器人先學習的是和示教時幾乎完全一樣的情形。等到成功率較高後,再由人類逐漸加大難度,比如將門擺到稍微偏一點的位置。這樣做的好處是可以讓機器人在學習步驟里的「探索」非常高效,而不至於像第一個實驗中那樣花費大量時間在確認效果很差的策略上。
同樣,Google使用了多台機器人共享經驗數據並訓練同一個策略。最後生成的這個策略的效果已經非常優異了,機器人可以適應在一定範圍內的各種門的位置、實現了集群機器人的大規模採集訓練樣本並最終獲得了高度一般性的技能。
然而,在深度學習融入機器人的應用上,測試仍然有可能會被兩個比較嚴重的問題限制在實驗室里。
第一個問題即為技能遷移的高困難度。
深度神經網路的一大特點就是沒人知道它訓練出來的那些權重的具體含義。這就意味著花費幾天幾夜採集的數據、訓練出的結果,往往只能用在同一個機器人和同一個任務上。
(上圖即為某個分類器中間層權重的圖片化結果)
這是機器人領域和深度學習在其他應用場景獲得成功的最大區別——Google用海量的計算資源和上千萬盤棋局最終訓練出了Alpha Go,用戶下載以後便可以直接拿來與別人對戰了。可當Google花費了多台機器人數十萬次實驗後訓練出了一個機器人抓取物體的控制策略,用戶將其下載之後卻無事可成——即便買的是和被實驗對象一模一樣的機器人,但只要機械手的部件略有不同,之前的策略都難以為繼。用戶必須用自己的機器人在對應的應用場景下重新採集數十萬次數據用以重新訓練。
第二個問題則是無法保證成功率。
第二個問題並沒有那麼嚴重,只是限制了一部分應用場景。在不對模型做出任何假設的情況下,深度學習無法對性能、成功率做出任何保證,所以,像做外科手術、做核電站鍋爐維護之類的場合應該沒人敢用深度學習技術來做機器人控制。
但所有這些疑慮並不能掩蓋Google此次發布的研究成果的價值。比如研究出了適合機器人控制問題的網路結構;設計出了能夠長時間穩定的連續採集數據、自動完成重置的軟體系統等等。
Google Blog的原文:https://research.googleblog.com/2016/10/how-robots-can-acquire-new-skills-from.html?m=1
deep reinforcement learning....
有的。我在斯坦福做RA的實驗室項目,就致力於用深度學習開發一個能在人群中自如移動的機器人。
深度強化學習肯定會火的一塌糊塗,最近看到一個圖。我覺得很好的概括了這個,就更新了放上來[自動化學報,"深度學習在控制領域中的研究現狀與展望", 段艷傑等]。
###一下是原答案
弱弱答一波。最近也在入深度強化學習的坑。確實DeepMind還有OpenAI做了好多的工作,我也覺得這個是一個巨大的坑和方向。但是我發現大部分的把深度學慣用在這個方面主要是在圖像上的處理,像DQN就是用一個cnn直接獲取圖像做observer,還有像其他的很多也類似。還有一篇用lstm做的一個模仿學習的例子,就是在unity裡面抓取獲得數據, 用lstm去學,然後遷移出來,效果還不錯,用到MDN。然後最近又看了些用Deep Learning直接做控制器的,感覺特別少,比較新的就是用DBN學習PID的輸入輸出,然後做的一個控制器,其實我也覺得這個工作沒有意義,哈哈哈哈哈。但是我發現好像沒有人用cnn做控制器,哈哈, 於是我灌水了一波,瞎寫一通,做了個實驗, 用CNN做了一個controller然後去學pid,其實也沒有毛意義,但我感覺這個應該還是有研究價值的。上圖了,哈哈哈哈哈。就是誤差輸入到控制器輸出。
然後最後的一個特別簡單簡陋的對比效果。感覺有點偏題了,不過後續我確實想有機會把這個在機械臂上試一下,哈哈哈哈哈,畢竟ros我也玩了這麼久了,實現一下還是很簡單的,哎呀,吹過了。
其實就是一個簡單的換了個模型,最後效果還行。主要是實驗難得做,MATLAB/simulink與Python keras混編。寫了好久都要吐血了,感覺matlab的deep learning的支持真的不行,keras幾分鐘一個模型。
哦哦,忘了給實驗的框圖了,賊簡單。
其實還可以做更多的工作,但是感覺老闆的演算法牛逼多了!這個練個手,發個國內水會,拿點差補,哈哈哈哈哈。
搞控制還是有點理論保證多好呀!~深度學習的話就是差這點東西,沒辦法保證穩定性,唉。看老闆演算法去了,有深度學習、自適應,最後還有理論穩定性的保證。感覺自己還是好垃圾,還是要多看論文多學習數學,好好搞控制!
半年前嘗試過做機器人抓取位置的分析,對於一個物體的二維空間定位使用現在的檢測框架,難度基本不大,但對於機器人抓取的物體位置問題,存在太大的主觀性,將這個問題是視為回歸問題還是分類問題就考慮了很久,使用了傳統的CNN的全連接層輸出或者是faster rcnn框架,都以失敗告終,其實當初提出一種想法,沒有實踐,如果在faster rcnn上加入深度特徵通道的話,能不能相對準確的確定抓取位置的空間位置,有興趣的朋友可以試試
我覺得這是必然吧,可以讓機器人變得更加的智能,在場景理解,意圖理解上都很有必要。
日本有一個公司 就是dl的 外匯模式識別,已有ios APP。在youtube上看過他們的演示視頻。
記得google收購了一家叫Boston dynamics 的做機器人的公司,YouTube上有視頻,很棒!
推薦閱讀:
※技術上講,王樹森和吳佳俊誰更牛逼?
※想去上海交大讀研,計算機視覺與機器視覺怎麼選?
※國外比較有名的機器學習、計算機視覺相關論壇有哪些?
※微軟小冰測顏值為什麼這麼准?
TAG:機器人 | 人工智慧 | 機器學習 | 計算機科學 | 深度學習DeepLearning |