當前位置:編程學習大全網 - 源碼下載 - actor-critic

actor-critic

1.? actor是 policy-gradient,? critic是 類似於q-learning的value-based 的另壹個代表:? state-value ,所以actor-critic是 policy-gradient和q-learning思想的結合。

2.? actor critic 雖然可以做到step更新,而非基礎的policy gradient的 episode更新,但是也有它的缺點,就是在連續空間中做step更新,相鄰step直接的相關性太大,這樣的話learn的質量大大地受影響,直到 google 提出 DDPG(也就是 ac+DQN)策略, 才算解決這個問題。這是後面說的,我們當前先看基礎的actor critic:

3. 具體到graph結構:

再看? critic網絡:

註意: 雖然Actor-Critic是壹個非常棒的idea, 可以結合 q-learning的 單step更新, 也可以利用policy-gradient的直接優化policy, 但是,這種結合的背後,我覺得有問題!

妳在形式上看看, AC算法也就是把PG算法的 normalized Vt 替換成了 TD_error.? 形式上,感覺很棒,但事實上,這有問題! 之前normalized Vt,是有正負的, 正的代表梯度方向增大? , 從而增大 該s-a概率, 如果vt為負,那麽就朝著梯度下降的方向減小 ,這種可以調大和調小? 的方式,非常合理, 但是,TD_error,妳去看程序,會發現它是 gamma*v_ +r - v_的 平方 。 總是為正, 其實 log P * TD_error總是壹個負值,根據 梯度上升的公式,? 實質上壹直要減小 值, 只是由於 TD_error的不斷減小,導致這個 的更新幅度壹直趨小,但總而言之,這種壹直減小s-a的 值的做法,不甚合理。 在Movan的那個實例中, 這種AC算法, 表現非常差! 是壹直都不收斂!

Movan對此的解釋說,是由於AC在連續狀態下的相關性沒有解決,從而導致的問題。 我覺得是有這個原因,但是我覺得 這種TD_error總是為正的做法,肯定也是性能不好的主要原因!? (這個地方,其實值得探索!)

但是,不管怎麽收,? 從基礎版的 policy gradient 到 現在的 AC,已經做到了改進,? 表現在:? 可以單step做更新 (相比於之前整個episode才能算出的normalized vt,這裏僅需要單step就可以求出state s的v 與 state s_的v_ 的 TD_error )。

只不過,AC的TD_error更新,不夠精確,也不夠穩定,而且連續空間中的 s和 s_之間存在明顯的相關性, 如何去掉這種相關性,並且提升準確性和穩定性?? 那就來個 AC的DQN版本,actor 和 critic各有兩個神經網絡, 來達到效果, 這個AC的DQN版本, 就叫做DDPG (DDPG的第二個D,就是Determisitic,其實就是用Actor的eval_net)

  • 上一篇:H5專題頁面有哪些形式?
  • 下一篇:如何利用易企秀制作H5頁面微場景
  • copyright 2024編程學習大全網