1. 程式人生 > >強化學習(五) - 無模型學習(Sarsa、Q-Learning)

強化學習(五) - 無模型學習(Sarsa、Q-Learning)

上一節主要講了Monte-Carlo learning,TD learning。這兩個方法都是在給定策略下來估計價值函式V(s)。
但是我們的目標是想得到最優策略

基於模型的策略優化過程分為策略評估和策略改進。從一個策略 π 和 v(s) 函式開始,先利用當前策略 π估算v值,然後通過v值來更新策略 π。交替迭代,最後會收斂到最優策略和最優價值函式。

那麼對於模型未知的情況,是否還能使用呢?答案是不能。

模型未知的情況下無法知道當前狀態的所有可能的後續狀態,進而無法確定在當前狀態下應該採取哪個動作是最好的。解決這個問題是利用Q(s,a)來代替V(s)

。這樣即使不知道當前狀態的所有後續狀態,我們也可以根據已有的動作來選擇
這樣策略評估與策略改進就變成:從一個策略 π 和初始的 Q(s,a) 開始,先利用當前策略 π 估算q值,然後通過q值來更新策略 π。交替迭代,最後會收斂到最優策略和最優價值動作函式。


不過利用Q(s,a)來代替V(s)有一個問題是,因為不知道當前狀態能夠執行的所有動作,所以只選擇當前最好的動作可能會陷入區域性最優。 所以需要偶爾去嘗試新的動作,這就是探索(exploration)。


Sarsa、Q-Learning

蒙特卡羅學習需要完整的episode才能更新,而TD learning可以做到單步更新。Q-learning和sarsa都是基於TDL來更新當前行為值函式的。
唯一不同的是在Q-learning中,行動策略(產生資料的策略)和要評估的策略不是一個策略,因此稱之為異策略(off-policy)

。而在sarsa中,正好相反,也就是行動策略(產生資料的策略)和要評估的策略是一個策略,稱之為同策略(on-policy)

Sarsa(on-policy)

處於狀態 s’ 時,利用 e-greedy 選擇了用於更新Q值的a’,而且在下一輪迴圈也採取了該動作 a’。
即:用於計算的動作a’,就是下一步採取的動作
在這裡插入圖片描述

Q-Learning(off-policy)

處於狀態 s’ 時,計算了在 s’ 時要採取哪個 a’ 可以得到最大的 Q 值,但在下一輪迴圈時並沒有採取這個用於計算的動作 a’,而是重新根據 e-greedy 選的 a。
即:用於計算的動作a’,並不是下一步採取的動作
在這裡插入圖片描述


off-policy方法行為策略和估計策略是分離的,行為策略是用來做決策的,也就是選擇下一步動作的,而估計策略是確定的,例如貪心策略,用來更新值函式的。這種分離的優點是估計策略是確定的,同時行為策略能夠持續抽樣所有可能的動作。




參考:
強化學習(五):Sarsa演算法與Q-Learning演算法
時間差分方法Q-learning和sarsa的區別



        </div>