強化學習中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演算法,這是因為他們更新值函數時,不一定使用當前策略pi_t 產生的樣本. 可以回想DQN演算法,其包含一個replay memory.這個經驗池中存儲的是很多歷史樣本(包含pi_1,pi_2,...pi_t的樣本 ),而更新Q函數時的target用的樣本是從這些樣本中採樣而來,因此,其並不一定使用當前策略的樣本.

REINFORCE, TRPO, SARSA都是On-policy,這是因為他們更新值函數時,只能使用當前策略產生的樣本.具體的,REINFORCE的梯度更新公式中
abla_{	heta}log pi_{	heta}(a|s)R ,這裡的R就是整個episode的累積獎賞,它用到的樣本必然只是來自與pi_t



以前答過,供您參考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)來估計該函數期望

[egin{array}{ccccc} {E_{x sim P}}[f(x)] =  sum {P(x)f(x)} \ =  sum {Q(x)frac{{P(x)}}{{Q(x)}}f(x)} \ =  {E_{x sim Q}}[frac{{P(x)}}{{Q(x)}}f(x)] end{array}]

上面公式就說明了,可以通過從 Q(X) 的採樣來估計P(X)的函數期望。

回到問題,policy本質上就是個概率分布[pi (a|s)] ,所以我們就可以採取Importance Sampling的方法,利用其它的policy: [mu ](behavior policy)來採樣,以此來估算我當前任務的policy:[pi ] (target policy)。這就是off policy的基本思想。

郭祥昊的回答中就提到:

當然這麼做是需要滿足數學條件的:假設π是目標策略, μ是行為策略,那麼從μ學到π的條件是:π(a|s) &> 0 必然有 μ(a|s) &> 0成立。

這就對應著上面公式中作為分母的概率分布Q不能為0,當然這樣的解釋只是從從直覺上把握。

那off policy這麼做有什麼好處呢?

  1. 使用人類的行為來作為behavior policy,直接從人類學習
  2. 以 舊policy 作為behavior policy 學習到的知識
  3. 使用一些重視「探索」的policy,如Q-learning的 [varepsilon ] - 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優化的 pi 策略。

這裡generate an episode的是一個soft policy mu ,更新的是接受greedy優化的 pi 策略。並非同一個。

...我覺得所謂on-policy,off-policy什麼的,empirical角度出發的開腦洞因素偏多...好好學習DP才是王道...- -#


簡單理解就是指更新Q值時的policy是另外一個policy,和產生樣本的不同


判斷標準:更新值函數時是否只採用當前策略下產生的樣本。若是,則為on-policy;若不是,則為off-policy。

如果站在agent的角度看:沒有任何先驗知識,樣本都是靠自己當前策略得到的,再利用這些樣本學習、更新策略,此為on-policy;有一定的先驗知識並利用了,換句話說,學習時(更新值函數時),不僅僅用自己的知識(當前策略產生的樣本),還用了先驗知識(以往策略產生的樣本),此為off-policy。


推薦閱讀:

周志華老師《機器學習》圖16.13 Q-Learning 演算法是否有問題?
CS294 深度增強學習 這門課的質量是不是不大好?

TAG:深度學習DeepLearning | 強化學習ReinforcementLearning |