想請教一下各位大神 強化學習如何在機器人導航中應用 把位置當做狀態么?
想請教一下各位大神 強化學習如何在機器人導航中應用 把位置當做狀態么?然後撞到障礙獲得負的獎勵?如何應對變化的環境呢?如何解決感測器有誤差的情況?
謝邀。沒有做過機器人導航的項目,僅從強化學習本身出發談談理解,坐等做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更加好的效果, 且在模擬環境中的訓練模型, 放在真實環境中運行, 仍然可以取得不錯的效果.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有什麼區別?