天天看點

如何解釋policy gradient中的baseline具有降低variance的作用

在增強學習中有一大類方法叫policy gradient,最典型的是REINFORCE。

在這類方法中,目标函數J(w)(通常是the expectation of long term reward)對policy參數w的gradient為:

▽J(w) 

== E[ ▽logπ(a|s) * return ]

== E[ ▽logπ(a|s) * (return-baseline)]

~=計算N個sample的 ▽logπ(a|s) *(return-baseline)平均

~=計算N個sample的 ▽logπ(a|s) * (Q(s,a)-baseline)平均

前兩個等式是==号,說明增加一個constant baseline對expected policy gradient無影響,因為 E[ ▽logπ(a|s) * (baseline)] = 0。但由于我們隻能sample少量的樣本近似計算policy gradient,也就意味着這樣計算出來的gradient的variance很大。因為return-baseline、return-2*baseline、return+0.6*baseline對更新▽logπ(a|s)起到的作用是不同的(這是sample和真正的expectation的差別)。

注意,是policy gradient基于sample方法計算出來的gradient的variance很大,并不是因為添加了baseline讓variance變大了!!!這一點一定要明确。否則就沒有baseline可以降低variance這一說了。

那baseline是怎麼降低variance的呢?

首先是經典解釋方法,我們常把V(s)當做baseline,也就是average_a{Q(s,a)}當做baseline,這意味着Q(s,a)大于V(s)所對應的a對π(a|s)有提升作用,Q(s,a)小于V(s)所對應的a對π(a|s)有降低作用,盡管不同的a對應的long time return都是正值。

其次,baseline降低variance可以從全局考慮,而不是局限于某一個state所對應的action的Q(s,a)。給個直覺的例子,在s1下a1,a2,a3對應的Q分别是200,210,220,在s2下a1,a2,a3對應的Q分别是105,110,115;如果隻是單純的考慮某一個state,比如s1,那麼200,210,220和-10,0,10(減去baseline=210後得到)這兩組資料的variance其實是一樣的;相反,如果從全局考慮,既考慮多個狀态,那麼200,210,220,105,110,115和-10,0,10,-5,0,5這兩組資料的variance顯然後者更小。(注意,-5,0,5是s2下Q值減去baseline得到的,因為是不同的state,減去不同的baseline是reasonable的)

繼續閱讀