強化學習中on-policy 與off-policy有什麼區別?
各自的優缺點,分別舉幾個具體演算法
截取的這個作者的解釋,我覺得很nice: Deep Deterministic Policy Gradients in TensorFlow
on-policy 與 off-policy的本質區別在於:更新Q值時所使用的方法是沿用既定的策略(on-policy)還是使用新策略(off-policy)。
stackoverflow中的一個回答,簡潔明了的回答了這個問題。
-------------------------------------大自然的搬運工----------------------------------------------
---------- 更新 2017-06-22 ----------
偶然看到了Sutton的書RL an introduction edition 2. 在5.4節 Monte Carlo Control without Exploring starts中,作者定義了on-policy與off-policy:
On-policy methods attempt to evaluate or improve the policy that is used to make decisions, whereas off-policy methods evaluate or improve a policy different from that used to generate the data.
---------- 以下為原答案 ----------
其實就是只有一句話: 更新值函數時是否只使用當前策略所產生的樣本.
例如:
Q-learning, Deterministic policy gradient是Off-police演算法,這是因為他們更新值函數時,不一定使用當前策略 產生的樣本. 可以回想DQN演算法,其包含一個replay memory.這個經驗池中存儲的是很多歷史樣本(包含的樣本 ),而更新Q函數時的target用的樣本是從這些樣本中採樣而來,因此,其並不一定使用當前策略的樣本.
REINFORCE, TRPO, SARSA都是On-policy,這是因為他們更新值函數時,只能使用當前策略產生的樣本.具體的,REINFORCE的梯度更新公式中 ,這裡的R就是整個episode的累積獎賞,它用到的樣本必然只是來自與
以前答過,供您參考https://www.zhihu.com/question/56561878/answer/149892732
"曾經有一段時間大家普遍認為online的TD方法只有在on-policy情況下才有收斂性保證。而off-policy方法(如Q-learning)雖然在tabular情況下可以保證收斂,但是在有linear FA情況下就無法保證收斂。而least-squares方法(如LSTD, LSPI)雖能解決off-policy和linear FA下的收斂性問題,但計算複雜度比較高。Sutton和Maei等人提出的GTD(Gradient-TD)系方法(如Greedy-GQ)解決了off-policy,FA,online演算法的收斂性問題。它最小化目標MSPBE(mean-squared projected Bellman error),通過SGD優化求解。但因為它仍是TD方法,因此仍然逃不了TD方法在上面提到的固有缺點。要避免這些缺點,一般的做法是用PG演算法(如AC演算法)。在Degris等人的論文《Off-Policy Actor-Critic》中將AC演算法擴展到off-policy場景,提出了OffPAC演算法,它是一種online, off-policy的AC演算法。 OffPAC中的critic部分採用了上面提到的GTD系方法-GTD(λ)演算法。"
首先簡單介紹一下統計的一個概念:Importance Sampling
我現在有一個隨機變數 X 服從概率分布 P(x),我想知道關於 X 的 f(X)的函數期望。但如果我的 P(X) 採樣很困難,那應該怎麼辦? Importance Sampling 就是解決這問題的方法,即用不同的概率分布Q(X)來估計該函數期望
上面公式就說明了,可以通過從 Q(X) 的採樣來估計P(X)的函數期望。
回到問題,policy本質上就是個概率分布 ,所以我們就可以採取Importance Sampling的方法,利用其它的policy: (behavior policy)來採樣,以此來估算我當前任務的policy: (target policy)。這就是off policy的基本思想。
在郭祥昊的回答中就提到:
當然這麼做是需要滿足數學條件的:假設π是目標策略, μ是行為策略,那麼從μ學到π的條件是:π(a|s) &> 0 必然有 μ(a|s) &> 0成立。
這就對應著上面公式中作為分母的概率分布Q不能為0,當然這樣的解釋只是從從直覺上把握。
那off policy這麼做有什麼好處呢?
- 使用人類的行為來作為behavior policy,直接從人類學習
- 以 舊policy 作為behavior policy 學習到的知識
- 使用一些重視「探索」的policy,如Q-learning的 - greedy policy來作為behavior policy
off policy不會同時擁有以上的優點,具體的效果由你選擇的behavior policy決定。
(TODO):
通過介紹兩個經典的演算法Sarsa、Q-learning 來解釋on policy 與 off policy 的區別
區別就是在進行iteration的時候,是不是需要根據新的policy產生新的樣本。
off-policy 用的都是已經存好的數據。
on-policy 在邊學習的時候邊產生新的sample。
在Temporal-Difference這一個方法類下有Sarsa (on-policy)和Q-learning (off-policy)。
Sarsa:用於更新action-value function的action A和此episode的下一個step中獲取reward R和state S使用的A為同一個,即為上一個step中的A。換句話說,用於生成行為的policy (A, 生成R, S...)和用於更新action-value function (A,更新Q)是同一個policy。
Q-learning:用於更新action-value function的action a 為當前step中可以最大化Q對應點取值的action a。然而在此episode的下一個step中獲取reward R和state S所使用的A為上一個step中Q更新後,使用某種策略所選取的一個新的A。換句話說,用於生成行為的policy (A,生成R, S...)和用於更新action-value function (a, 更新Q)的並非同一個policy。
從Monte-Carlo看可能更明顯一些...
這裡generate an episode和更新的一直都是那個接受greedy優化的 策略。
這裡generate an episode的是一個soft policy ,更新的是接受greedy優化的 策略。並非同一個。
...我覺得所謂on-policy,off-policy什麼的,empirical角度出發的開腦洞因素偏多...好好學習DP才是王道...- -#
簡單理解就是指更新Q值時的policy是另外一個policy,和產生樣本的不同
判斷標準:更新值函數時是否只採用當前策略下產生的樣本。若是,則為on-policy;若不是,則為off-policy。
如果站在agent的角度看:沒有任何先驗知識,樣本都是靠自己當前策略得到的,再利用這些樣本學習、更新策略,此為on-policy;有一定的先驗知識並利用了,換句話說,學習時(更新值函數時),不僅僅用自己的知識(當前策略產生的樣本),還用了先驗知識(以往策略產生的樣本),此為off-policy。
推薦閱讀:
※周志華老師《機器學習》圖16.13 Q-Learning 演算法是否有問題?
※CS294 深度增強學習 這門課的質量是不是不大好?