1. 程式人生 > >強化學習中的off-policy 和on-policy

強化學習中的off-policy 和on-policy

強化學習可以分成off-policy(離線)和on-policy(線上)兩種學習方法,按照個人理解,判斷一個強化學習是off-policy還是on-policy的依據在於生成樣本的policy(value-funciton)和網路引數更新時的policy(value-funciton)是否相同。

off-policy的經典演算法有Q-learning,而on-policy的經典演算法有SARSA演算法,兩者的演算法流程如下所示。

Q-learning演算法:

initialize Q(s,a) randomly
for each episode:
    initialize state s;
    while
s is not terminal: choose action a from s using ε-greedy strategy; observe reward r and next state s'; Q(s,a) <- Q(s,a) + α[r + γ*maxQ(s',a') - Q(s,a); s <- s';]

SARAS演算法:

initialize Q(s,a) randomly
for each episode:
    initialize state s;
    choose action a from
s using ε-greedy strategy; while s is not terminal: observe reward r and next state s'; choose a' from s' using ε-greedy strategy; Q(s,a) <- Q(s,a) + α[r + γ*Q(s',a') - Q(s,a); s <- s', a <- a';]

這兩個演算法的流程基本一致,唯一不同在於Q函式的更新:

Q-learning在計算下一狀態的預期收益時使用了max操作,直接選擇最優動作,而當前policy並不一定能選擇到最優動作,因此這裡生成樣本的policy和學習時的policy不同,為off-policy演算法;

而SARAS則是基於當前的policy直接執行一次動作選擇,然後用這個樣本更新當前的policy,因此生成樣本的policy和學習時的policy相同,演算法為on-policy演算法。

而最近深度強化學裡中使用的experience-replay機制將生成的樣本與訓練的樣本獨立開來,使用某一policy生成的樣本拿來訓練的時候,很可能當前policy已經和之前有所差別,因此使用experience-replay機制的DRL演算法基本上是off-policy演算法