2014-10-28 82 views
1

任何人都可以推薦一個強化學習庫或框架,可以通過抽象處理大型狀態空間嗎?分層強化學習的實現

我試圖實現在遊戲世界中的小代理情報。該代理由一個小型兩輪機器人代表,可以前後移動,並左右轉動。它具有用於檢測地面邊界的耦合傳感器,用於檢測遠處物體的耦合超聲波傳感器以及用於檢測與物體或對手的接觸的耦合碰撞傳感器。它也可以做一些簡單的推測,以它的起始位置作爲參考來估計它在世界上的位置。所以它可用的所有國家的特點是:

edge_detected=0|1 
edge_left=0|1 
edge_right=0|1 
edge_both=0|1 
sonar_detected=0|1 
sonar_left=0|1 
sonar_left_dist=near|far|very_far 
sonar_right=0|1 
sonar_right_dist=near|far|very_far 
sonar_both=0|1 
contact_detected=0|1 
contact_left=0|1 
contact_right=0|1 
contact_both=0|1 
estimated_distance_from_edge_in_front=near|far|very_far 
estimated_distance_from_edge_in_back=near|far|very_far 
estimated_distance_from_edge_to_left=near|far|very_far 
estimated_distance_from_edge_to_right=near|far|very_far 

的目標是找出其中接收獎勵的信號狀態,並學習政策,儘可能快地獲得該獎勵。在一個傳統的馬爾可夫模型中,這個狀態空間離散地表示了2985984個可能的值,這對於使用諸如Q學習或SARSA之類的每個人來說都是太多了。

任何人都可以推薦一個適合這個域(最好與Python綁定)或未實現的算法,我可能實現自己的加固庫嗎?

回答

3

您的實際狀態是機器人在世界上的位置和方向。使用這些傳感器讀數是一個近似值,因爲它很可能使許多狀態難以區分。

現在,如果你走這條路,你可以用線性函數逼近。那麼這只是24個二進制特徵(12 0 | 1 + 6 * 2 near | far | very_far)。這是一個很小的數字,你甚至可以使用所有的功能對來學習。更遠的路線是在線發現功能依賴關係(例如,參見Alborz Geramifard的論文)。這與你對分級學習的興趣直接相關。

另一種方法是使用常規算法來跟蹤機器人的位置並將該位置用作RL的輸入。

+0

你能推薦一個關於RL的線性函數逼近的介紹嗎?我不熟悉它。是的,狀態逼近是有意的,因爲它意在模擬在「真實世界」中的機器人,它永遠不會真正知道它的絕對歐幾里得位置和方向。 – Cerin 2014-10-28 14:06:07

+0

我會推薦經典薩頓和巴託。 http://webdocs.cs.ualberta.ca/~sutton/book/the-book.html – 2014-10-28 15:38:50

+0

我偶然發現了這個答案,「你甚至可以使用所有的功能對」。這聽起來像(2^24)^ 2 = 2^48〜10^14。這是不小的.. – javadba 2014-10-29 15:18:10