[英]Reinforcement Learning - How to get out of 'sticky' states?
問題:
我已經訓練過一個代理程序,可以在網格世界中執行簡單的任務(在不遇到障礙的情況下到達網格頂部),但是似乎總是會發生以下情況。 它發現自己處於狀態空間的輕松部分(沒有障礙),因此不斷收到強烈的積極強化信號。 然后,當確實發現自己是狀態空間中的困難部分(在兩個障礙物旁邊楔住)時,它只是選擇了與以前相同的動作,而沒有任何效果(它上升並撞上了障礙物)。 最終,該值的Q值與負獎勵相匹配,但是到了此時,其他動作的Q值甚至更低,因為在狀態空間的易用部分中無用,因此錯誤信號降為零,並且不正確的動作仍然總是選擇。
如何防止這種情況發生? 我想到了一些解決方案,但似乎沒有一個可行的解決方案:
任務的一些背景:
因此,我為試用RL算法做了一些測試,這類似於薩頓書中描述的網格世界的更復雜版本。 世界是一個巨大的二進制網格(300 x 1000),在1的背景上以隨機大小的矩形形式填充1。 1的帶環繞着世界的邊緣。
代理人在這個世界上只占一個空間,周圍只有一個固定的窗口(以代理人為中心的41 x 41窗口)。 特工的動作包括在四個基本方向中的任何一個方向上移動1個空間。 代理只能在標記為0、1的空間內移動。
在此環境中要執行的當前任務是使其從網格底部的隨機位置開始到網格世界的頂部。 成功向上移動可獲得+1的獎勵。 碰到障礙物或世界邊緣的任何舉動將獲得-1的獎勵。 其他所有州的獎勵均為0。
該代理將基本的SARSA算法與神經網絡值函數逼近器結合使用(如薩頓書中所述)。 對於政策決策,我嘗試了e-greedy和softmax。
教授此類任務的典型方法是給代理每步負獎勵,然后在完成時大筆支出。 您可以通過使用合格性跟蹤並通過將代理最初放置在目標附近,然后放置在其已探索的區域附近來補償長時間的延遲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.