估計價值的方法MC與TD
MC(Monte-Carlo)的方法,在Sutton的書中有比較權威並詳細的說明。地址:https://rl.qiwihui.com/zh_CN/latest/index.html
下圖是首次訪問型的MC方法,估計狀態的價值V。在初始化後,先根據策略獲取一個完整的序列,然後從底向上,逆向計算得到狀態的價值。
當前的狀態價值,是與當前和可能產生的以後的完整序列價值有關的,所以有逆向計算的過程。與當前狀態距離越遠的地方越不容易到達,所以添加折扣因子,將其價值的累加進行折扣。多次進行,求得平均。
估計其他如策略估計,也是類似的過程。每次訪問型MC方法,沒有Unless部分。Unless部分的意思是,在本次生成的該序列中,每個狀態都應該只出現一次。
時序差分的方法TD(Temporal-difference),仍然以Sutton的說明,清楚一點。
初始化後,在每一步,都進行疊加,其中公式裏的中括號部分,表示了TD誤差,優化的目標,就是使得V(s)最終等於R+yV(s')。
TD和MC的關係是,TD是MC的一種特殊的修改。
在每次訪問型的MC中,其優化目標爲G。G是馬爾科夫鏈中,狀態s下,所有後續狀態的真實回報r的折扣累加和。
在TD算法中,該G變爲了馬爾科夫鏈中,狀態s下,r與後續一步的價值折扣累加和。該算法認爲是TD(0)。當考慮後續的lambda步時,認爲有TD(lanbda),作爲優化目標。
相對於MC算法,TD算法對未來的數據上,產生更小的誤差。MC算法是根據定義得到的,更準確。(Sutton125頁)。
如下圖中,多次執行後,0爲MC計算得到的狀態a的價值,3/4爲TD計算得到的價值。
因爲MC算法考慮的是本次序列中的效果(狀態b的真實影響),即G的值,所以多次執行以後,平均得到狀態a的價值的來源是,第一行的序列的真實回報。
而TD算法考慮的是價值,在第一行的序列中,狀態a的價值計算,考慮了所有序列中的狀態b的效果,即狀態b的價值。而不是真實回報。
不介紹的V與Q
我認爲V與Q是兩種不同的度量方式,前者代表的是狀態的價值。後者是,該狀態下選擇行爲,a的價值。
先產生了V狀態價值,根據狀態價值,得到關於a的價值,用以選擇行爲a,不是直接相等的關係。
所以,這部分不說明。
常見的DQN改進算法
Double DQN,未考證,但是大致是,使用Q',更新Q,在一段時間後,Q'=Q。降低過估計。
Dueling DQN,未考證,大致是,將Q拆分爲V和A。
在實際使用中,讓A的總和爲0,當更新V後,則Q表中的所有值,都發生變化。
Prioritized Replay DQN,優先使用TD-error大的記憶片段。
而 Multi-step,Noisy Net,Distribution Q,不再說了,也不清楚。
最終將多種算法結合,得到Rainbow算法。
Double DQN的作用是降低過估計,而其他算法中有降低過估計的作用了(具體仍待查看,)