想請教一下各位大神 強化學習如何在機器人導航中應用 把位置當做狀態么?

想請教一下各位大神 強化學習如何在機器人導航中應用 把位置當做狀態么?然後撞到障礙獲得負的獎勵?如何應對變化的環境呢?如何解決感測器有誤差的情況?


謝邀。沒有做過機器人導航的項目,僅從強化學習本身出發談談理解,坐等做SLAM大神的乾貨。

題主在問題中說的思路,其實很接近我們在簡化模擬場景中的常見做法。這類場景一般叫做GridWorld,顧名思義,在一個四四方方的馬賽克場地中,一個agent想從當前格點導航到某個目標格點,同時避免碰上障礙物格點。為了知道障礙物在哪裡,一般還要在state中加入四周是否有障礙物的indicator;此外,reward中一定要包含是否到達了目標格點的信息,避免agent無目的遊盪。

這種做法在實際場景中有很大的缺陷,原因題主也有提及,最主要的問題在於無法精確獲得機器人自身位置和周圍的環境地圖。用RL的術語來講,一是環境是partially observable的,只能從observation中對state管中窺豹;二是agent的環境模型不精確(因為信息不足或環境改變),就算知道了精確的state也無法進行有效的planning,還是抓瞎。

為了解決這個問題,有一個專門的研究領域叫做Simultaneous Localization and Mapping (SLAM),localization就是從過往的observation中估計出自己的state,mapping就是獲得一個更精確的環境模型。對於具體的演算法就不班門弄斧了,建議邀請一些SLAM專家應該能獲得更有信息量的pointer。

上述的兩個問題其實在RL中都有成型的理論解決方案。對於partially observable的環境,如果有環境模型,可以據此進行統計推斷獲得state的後驗概率(belief state);如果沒有模型,可以對observation進行加工使其與state有更好的對應性(如把很長一段observation序列當做一個meta-observation來用),然後使用model-free的方法估計最優policy。另一方面對於環境模型的估計,實際上就是估計狀態轉移概率矩陣和reward function,根據具體場景也有很多玩法。

這些理論方案在機器人場景中的最大問題其實在於數據量。尤其是model-free的方法,需要通過試錯獲得的「活」數據來訓練,因此用一個物理機器人去採集基本是不現實的。不過個人認為問題=機遇,尤其是以下方向 1)結合off-policy learning和supervised learning來用離線數據做策略的初始化;2)用unsupervised learning來獲得環境模型;3)結合模擬器和transfer learning,提高可用數據量。對於這三點,deep learning都是很好的演算法載體,可以從近期的deep reinforcement leaning相關文獻中找找靈感和啟發。


謝題主和景初兄邀 @劉景初

先挖個坑,容我思考思考怎麼組織語言,再填。。。

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

抱歉這段時間忙得有點蒙逼, 隔了那麼久才來填坑。

答題先扣題:強化學習在機器人導航中應該怎樣應用,尚無定論,歡迎大家一起來填坑啊!!!

很簡略地分享一下之前看到的, 使用增強學習進行導航的幾種不同方案吧.

1. rl for exploration

這是來自 @鐵膽火車俠 的工作, 直接把RGBD相機採集到的深度圖扔進DQN中進行學習, 目標是使機器人在未知的環境中, 從隨機起始點出發行走儘可能長的距離, 而不碰到任何障礙物. 實驗證明增強學習的方法獲得了比supervised learning更加好的效果, 且在模擬環境中的訓練模型, 放在真實環境中運行, 仍然可以取得不錯的效果.

2.slam and drl

來自牛津Torr組的工作. 整個系統從圖上看就已經清晰易懂了, 主要想法就是通過SLAM來建立恢復環境的三維地圖, 然後把地圖拍到二維平面上,成為常見的那種俯視地圖, 然後扔進DQN進行強化學習. 通過三維重建, 場景地圖信息更加豐富, 包含了對導航十分有價值的深度信息, 因此這種方法理應比直接把圖片扔進DQN中的效果要優越.

3. Learning to Navigate

這篇文章來自deepmind. 與第一篇文章直接把深度圖扔進DQN, 直接最大化獎勵函數不同, 該文章通過增加一些輔助的loss項, 提高增強學習的樣本學習效率.

輸入的是原始相機RGB圖. 網路結構為底層三層CNN, 上面加兩層LSTM. CNN負責估計圖片的深度, 第一層LSTM接受圖片的深度特徵及上一時間點獲得的reward值, 第二層LSTM接收來自第一層LSTM提取出來的特徵, 及CNN提出的圖片特徵, 再加上當前速度及之前的action. 輸出policy, value, 預測的深度圖及迴環檢測的結果.

所以最後的訓練需要處理的是以下幾個梯度之和:

(1) A3C的梯度

(2) 深度估計的梯度. 雖然深度圖其實可以直接作為輸入feature, 但本文驗證了, 使用深度作為loss的一項, 可以提升訓練的效率.

(3) 閉環檢測的梯度

作者在deepmind的模擬器中驗證了該方法的有效性.

4. rl for autonomous driving

這篇論文是我最喜歡的一篇, 並沒有沉迷於近來大火的"深度"強化學習, 而是從應用角度出發, 使用神經網路對高級駕駛策略進行學習. 底層的控制感知依然使用傳統的方法, 而機器學習系統負責處理高度抽象的結構化信息, 如周圍車輛位置, 車道線位置等, 並根據這些信息輸出駕駛策略, 如變道,超車等等. 這樣做避免了機器學習系統的不穩定表現, 尤其是在一些極端情況(採集的數據未能覆蓋到)下, 保證了系統運行的基本安全.

文中選取了一個雙向變道的場景作為案例進行講解, 在mobileye自己的模擬器中證明了它的有效性. 實際上該方法同樣可以應用於其它場景, 只是策略網路需要重新設計. 我自己寫了一篇關於該文章比較詳細的解讀, 有機會的話會分享出來給大家.

目前Mobileye正在大力推廣這套系統, 在youtube上有配套的講座, Shashua也好幾次在他的演講中提及這一方法, 非常值得關注.


放個視頻連接先,有空的時候再來貼圖...

https://www.youtube.com/watch?v=9AOIwBYIBbs


推薦閱讀:

DQN是學習歸納出了策略,還是僅僅是"memorize"了大量的episodes?
請問在強化學習的Qlearning中,如果狀態-動作很多的話,該如何處理?
有研究強化學習方向的大神嘛?關於multi-agent和inverse RL兩個方向哪個比較好
強化學習中on-policy 與off-policy有什麼區別?

TAG:強化學習ReinforcementLearning |