時間差分方法Q-learning和sarsa的區別
阿新 • • 發佈:2018-11-10
原文連結:https://blog.csdn.net/qq_27514521/article/details/81146632 Q-learning和sarsa都是利用時間差分目標來更新當前行為值函式的。唯一不同的是在Q-learning中,行動策略(產生資料的策略)和要評估的策略不是一個策略,因此稱之為異策略(off-policy),而在sarsa中,正好相反,也就是行動策略(產生資料的策略)和要評估的策略是一個策略,稱之為同策略(on-policy)。下面從演算法的角度解釋其中的區別。
如上圖所示,為sarsa的演算法流程圖。
第一個repeat迴圈表示每一幕(產生一輪資料或者對遊戲來說是玩一局完整的遊戲)。首先初始化狀態
然後根據公式
更新Q網路。
然後更新,。
下面介紹Q-learning演算法
Q-learning演算法流程圖如上所示。
首先和sarsa一樣,對每一幕進行迴圈,然後初始化狀態。接下來的不同之處在於Q-learning的初始化選擇動作A在當前幕迴圈的裡面,上面也解釋到了sarsa中為啥在外面的原因,這裡選擇動作在迴圈裡面就是因為在異策略(off-policy)的情況下,行動策略和下面的要評估的策略不是一個策略,不能通過要評估的策略進行更新,所以選擇策略必須在迴圈裡面,每輪迴圈都進行賦值。選擇完策略之後,執行策略,得到當前價值,觀測到下一個狀態。注意!!!!這裡並沒有和sarsa演算法一樣,對當前的狀態S'更具Q網路和
這裡的要評估的策略是使得對當前網路來說,在狀態處網路值最大的動作,與下一輪迴圈所選擇的行動策略不是一個策略(即異策略)
所以接下來只需要更新。