【强化学习】Sarsa 和 Sarsa(λ)
目錄
- Sarsa算法(on-policy)
- 概述
- on-poilcy:
- 算法流程
- Sarsa(λ)算法(on-policy)
- 概述
- 狀態價值迭代公式:
- 動作價值迭代公式:
- 算法流程
- Sarsa小結
強化學習筆記,內容來自 劉建平老師的博客
Sarsa算法(on-policy)
概述
? 給定強化學習的5個要素:狀態集S, 動作集A, 即時獎勵R,衰減因子γ, 探索率?, 求解最優的動作價值函數q?和最優策略π?
? 關鍵詞:時序差分、model-free、on-policy、?-greedy、價值迭代
? Sarsa = s + a + r + s’ + a‘,首先基于??greedy算法在當前狀態S選擇一個動作A,這樣系統會轉到一個新的狀態S′,同時給一個即時獎勵R,在新的狀態S′下基于??greedy算法在狀態S‘ 選擇一個動作A′,但是注意這時候并不執行這個動作A′,只是用來更新價值函數:
?
? 其中,γ是衰減因子,α是迭代步長。這里和蒙特卡羅法求解在線控制問題的迭代公式的區別主要是,收獲Gt的表達式不同,對于時序差分,收獲Gt的表達式是R+γQ(S′,A′)。除了收獲Gt的表達式不同,Sarsa算法和蒙特卡羅在線控制算法基本類似。
on-poilcy:
? 價值函數的更新和新動作的選擇使用同一個策略policy,因此在動作的選擇上保持一致。
?
算法流程
輸入:迭代輪數T、狀態集S、動作集A、步長α、衰減因子γ、探索率?
輸出:所有的狀態和動作對應的價值Q
? 1. 隨機初始化所有狀態和動作對應的價值Q,終止狀態的Q初始化為0
? 2. for i in [ 1, T ]:
? a)初始化S為當前狀態序列的第一個狀態,依據??greedy算法對當前狀態S 選出動作A
? b)執行動作A,由環境得到新狀態S‘ 和獎勵R
? c)依據??greedy算法對狀態S‘ 選出動作A’
? d)對當前狀態S和動作A,按公式更新價值函數Q(S,A)
? e)前進一步:S = S’,A = A‘
? f)if S’是終止狀態,break;else 跳回步驟b
? (注意:步長α一般需要隨著迭代逐漸變小,這樣才能保證動作價值函數Q可以收斂。當QQ收斂時,策略??greedy算法也就收斂了)
?
?
?
Sarsa(λ)算法(on-policy)
概述
? 多步時序差分在線控制算法。TD(λ)有前向和后向兩種價值函數迭代方式,它們是等價的。在控制問題的求解時,基于反向認識的 SARSA(λ)算法將可以有效地在線學習,數據學習完即可丟棄。因此SARSA(λ)算法默認都是基于反向來進行價值函數迭代。
狀態價值迭代公式:
?
動作價值迭代公式:
?
?
算法流程
輸入:迭代輪數T、狀態集S、動作集A、步長α、衰減因子γ、探索率?、多步參數λ
輸出:所有的狀態和動作對應的價值Q
? 1. 隨機初始化所有狀態和動作對應的價值Q,終止狀態的Q初始化為0
? 2. for i in [ 1, T ]:
? a)初始化S為當前狀態序列的第一個狀態,依據??greedy算法對當前狀態S 選出動作A,初始化所有狀態動作的效用跡E為0
? b)執行動作A,由環境得到新狀態S‘ 和獎勵R
? c)依據??greedy算法對狀態S‘ 選出動作A’
? d)更新效用跡函數E(S, A) 和 誤差 δ:
?
? e)對當前序列中所有狀態S和對應動作A,更新價值函數Q(S, A)和效用跡函數E(S, A) :
?
? f)前進一步:S = S’,A = A‘
? g)if S’是終止狀態,break;else 跳回步驟b
? (注意:對于步長α,和Sarsa一樣,一般也需要隨著迭代的進行逐漸變小才能保證動作價值函數Q收斂)
?
Sarsa小結
? SARSA算法和動態規劃法比起來,不需要環境的狀態轉換模型,和蒙特卡羅法比起來,不需要完整的狀態序列,因此比較靈活。在傳統的強化學習方法中使用比較廣泛。
但是SARSA算法也有一個傳統強化學習方法共有的問題,就是無法求解太復雜的問題。在 SARSA 算法中,Q(S,A)Q(S,A) 的值使用一張大表來存儲的,如果狀態和動作都達到百萬乃至千萬級,需要在內存里保存的這張大表會超級大,甚至溢出,因此不是很適合解決規模很大的問題。當然,對于不是特別復雜的問題,使用SARSA還是很不錯的一種強化學習問題求解方法。
總結
以上是生活随笔為你收集整理的【强化学习】Sarsa 和 Sarsa(λ)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云服务器 文件 传输,云服务器文件 传输
- 下一篇: 【强化学习】Q-Learning