1.? actor是 policy-gradient种远,? critic是 類似于q-learning的value-based 的另一個代表:? state-value 揭北,所以actor-critic是 policy-gradient和q-learning思想的結合攻晒。
2.? actor critic 雖然可以做到step更新幔嫂,而非基礎的policy gradient的 episode更新泽疆,但是也有它的缺點榜晦,就是在連續(xù)空間中做step更新虏肾,相鄰step直接的相關性太大,這樣的話learn的質量大大地受影響欢搜,直到 google 提出 DDPG(也就是 ac+DQN)策略封豪, 才算解決這個問題。這是后面說的炒瘟,我們當前先看基礎的actor critic:
3. 具體到graph結構:
再看? critic網(wǎng)絡:
注意:? ? 雖然Actor-Critic是一個非常棒的idea吹埠, 可以結合 q-learning的 單step更新, 也可以利用policy-gradient的直接優(yōu)化policy疮装, 但是缘琅,這種結合的背后,我覺得有問題廓推!
你在形式上看看刷袍, AC算法也就是把PG算法的 normalized Vt 替換成了 TD_error.? 形式上,感覺很棒樊展,但事實上呻纹,這有問題! 之前normalized Vt专缠,是有正負的雷酪, 正的代表梯度方向增大?, 從而增大 該s-a概率涝婉, 如果vt為負哥力,那么就朝著梯度下降的方向減小
,這種可以調大和調小?
的方式嘁圈,非常合理省骂, 但是,TD_error最住,你去看程序钞澳,會發(fā)現(xiàn)它是 gamma*v_ +r - v_的 平方。 總是為正涨缚, 其實 log P * TD_error總是一個負值轧粟,根據(jù)
梯度上升的公式,? 實質上一直要減小
值脓魏, 只是由于 TD_error的不斷減小兰吟,導致這個
的更新幅度一直趨小,但總而言之茂翔,這種一直減小s-a的
值的做法混蔼,不甚合理。 在Movan的那個實例中珊燎, 這種AC算法惭嚣, 表現(xiàn)非常差遵湖! 是一直都不收斂!? ?
Movan對此的解釋說晚吞,是由于AC在連續(xù)狀態(tài)下的相關性沒有解決延旧,從而導致的問題。 我覺得是有這個原因槽地,但是我覺得 這種TD_error總是為正的做法迁沫,肯定也是性能不好的主要原因!? (這個地方捌蚊,其實值得探索<)
但是,不管怎么收逢勾,? 從基礎版的 policy gradient 到 現(xiàn)在的 AC牡整,已經(jīng)做到了改進藐吮,? 表現(xiàn)在:? 可以單step做更新 (相比于之前整個episode才能算出的normalized vt溺拱,這里僅需要單step就可以求出state s的v 與 state s_的v_ 的 TD_error )。
只不過谣辞,AC的TD_error更新迫摔,不夠精確,也不夠穩(wěn)定泥从,而且連續(xù)空間中的 s和 s_之間存在明顯的相關性句占, 如何去掉這種相關性,并且提升準確性和穩(wěn)定性躯嫉?? 那就來個 AC的DQN版本纱烘,actor 和 critic各有兩個神經(jīng)網(wǎng)絡, 來達到效果祈餐, 這個AC的DQN版本擂啥, 就叫做DDPG (DDPG的第二個D,就是Determisitic帆阳,其實就是用Actor的eval_net)