非靜止環境中的強化學習
Q1:在強化學習中,處理非平穩環境的方法有通用的或公認的方法嗎?
Q2:在我的網格世界中,當訪問一個狀態時,我的獎勵函數會發生變化。每一集的獎勵都會重置為初始狀態。我希望我的代理學習的是“除非你真的需要,否則不要回去”,但這會使環境不穩定。可以/應該將這個非常簡單的規則合併到 MDP 模型中嗎?如何?Q-learning 是解決這個問題的最佳解決方案嗎?有什麼建議或可用的例子嗎?
Q3:我一直在研究使用體驗重放的 Q-learning 作為處理非靜止環境的解決方案,因為它對連續更新進行去相關。這是該方法的正確使用還是更多地處理使學習更有效率的數據?而且我只看到它與值近似一起使用。我不確定將它用於簡單的離散狀態空間(如 gridworld)是否是一種矯枉過正,或者有不同的原因。
即使您無法解決所有問題,也請隨時回答或發表評論。
Q1:在強化學習中,處理非平穩環境的方法有通用的或公認的方法嗎?
大多數基本的 RL 代理都是在線的,在線學習通常可以處理非平穩問題。此外,控制問題中狀態值和動作值估計器的更新規則通常是為非平穩目標編寫的,因為目標已經隨著策略的改進而變化。這並不復雜,只需使用學習率在估計值時的更新中,實際上是滾動的幾何平均值,而不是以未加權的方式對所有歷史進行平均。
但是,這解決了長期的非平穩性,例如在劇集之間或在更長的時間範圍內發生變化的問題。您的描述看起來更像是您希望在短時間內根據代理所採取的行動來改變獎勵結構。對動作的動態響應更好地構建為不同的更複雜的 MDP,而不是更簡單的 MDP 中的“非平穩性”。
代理無法學習尚未採樣的環境的更改,因此更改獎勵結構不會阻止代理返回到先前訪問過的狀態。除非您在代理中使用類似 RNN 之類的東西,否則代理將不會對劇集中之前發生的事情有“記憶”,除了當前狀態中表示的任何內容(可以說使用 RNN 使 RNN 部分的隱藏層國家)。在多個情節中,如果您使用表格 Q-learning 代理,那麼代理將簡單地了解某些狀態具有低值,它將無法得知對狀態的第二次或第三次訪問會導致該效果,因為它沒有表示該知識的方式。它將無法以足夠快的速度適應變化,無法在線和中期學習。
Q2:在我的網格世界中,當訪問一個狀態時,我的獎勵函數會發生變化。我希望我的代理學習的是“除非你真的需要,否則不要回去”,但這會使環境不穩定。
如果這就是您需要智能體學習的全部內容,也許可以通過合適的獎勵結構來鼓勵這一點。在你這樣做之前,你需要了解自己“真正需要”意味著什麼,以及這在邏輯上必須有多嚴格。您可能會沒事,但只需對訪問代理已經或最近訪問過的任何位置進行一些懲罰即可。
可以/應該將這個非常簡單的規則合併到 MDP 模型中嗎?如何?
是的,您應該將有關訪問位置的信息添加到狀態中。這會立即使您的狀態模型比簡單的網格世界更複雜,增加問題的維度,但這是不可避免的。大多數現實世界的問題很快就會超過為教授 RL 概念而提供的玩具示例。
一種替代方法是將問題定義為*部分可觀察馬爾可夫決策過程*(POMDP)。在這種情況下,“真實”狀態仍將包括所有必要的歷史記錄以計算獎勵(由於這是計算機上的一個玩具問題,您仍然必須以某種方式表示它),但代理可以嘗試從受限制的狀態的知識,只要你讓它觀察到。一般來說,這是一種比擴展狀態表示更難的方法,我不會在這裡推薦它。但是,如果您覺得這個想法很有趣,您可以使用您的問題來探索 POMDP。這是最近的一篇論文(來自 Google 的 Deep Mind 團隊,2015 年),該論文著眼於兩種 RL 算法與 RNN 相結合來解決 POMDP。
Q3:我一直在研究使用體驗重放的 Q-learning 作為處理非靜止環境的解決方案,因為它對連續更新進行去相關。這是該方法的正確使用還是更多地處理使學習更有效率的數據?
經驗回放對非靜止環境無濟於事。事實上,這可能會使他們的表現變得更糟。但是,如前所述,您的問題實際上與非平穩環境有關,而是與處理更複雜的狀態動態有關。
如果狀態數量增加到足夠大的數量,您可能需要做的是查看函數逼近。例如,如果您想處理任何回溯並有一個複雜的獎勵修改規則來跟踪每個訪問的位置,那麼您的狀態可能會從單個位置編號更改為顯示訪問位置的地圖。因此,例如它可能來自狀態為網格世界顯示訪問過的廣場的狀態圖。這太高了,無法在值表中跟踪,因此您通常會使用神經網絡(或卷積神經網絡)來估計狀態值。
使用函數估計器,經驗回放非常有用,因為沒有它,學習過程可能會不穩定。出於這個原因,最近玩 Atari 遊戲的 DQN 方法使用了體驗回放。