演員 評論員法 Actor Critic

2022-03-15 20:57:28 字數 1353 閱讀 6337

在 reinforce 演算法中每次需要用乙個策略採集完一條完整的軌跡,並計算這條軌跡上的回報。這個方法有兩個缺點:

方差比較大

學習效率低

學習效率低很好理解,為什麼說方差大呢?下面是李巨集毅的課件中的圖,因為我們在去評估在狀態 \(s_t\) 時採取動作 \(a_t\) 的好壞時,需要用到這個總回報 \(g\),最準確的做法當時是對這個 \(g\) 求期望了,然後在實際操作的時候其實是只用了一次取樣來代替這個期望了。從下圖中也可以看出來,這個回報 \(g\) 的隨機性還是挺大的。

return

解決這個問題的做法是可以借助時序差分學習的思想,即從狀態 \(s\) 開始的總回報可以通過當前動作的即時獎勵 \(r(s,a,s^)\) 和下乙個狀態 \(s^\) 的值函式近似估計:

\[\hat g\left( }} \right) = } + \gamma \left( }} \right)

\tag

\]來看一下李巨集毅課程的解釋,在上一節策略梯度中得到 $\mathbb\left[g\left(\tau_\right)\right]=}}\left( ,} \right) $,所以說我們需要的 \(g\) 的期望其實就是狀態-動作值函式,而狀態-動作值函式和狀態值函式的關係為:

\[q^}(s_t, a_t)=\mathbb_ \sim p_\left(s_ | s_t, a_t\right)}\left[r\left(s_t, a_t, s_\right)+\gamma \left( }} \right) \right]

\tag

\]現在我們把 (2) 中的期望拿掉了,就得到了 (1) 式.

為什麼拿掉呢?李巨集毅課上說原作者實驗了很多次,發現拿掉後結果比較好,很玄學。

\[\begin

& \min _\left(\hat\left(\tau_\right)-v_\left(s_\right)\right)^ \\

=& \min _\left(r_+\gamma v_\left(s_\right)-v_\left(s_\right)\right)^

\end

\tag

\]\tag

\]所以每步引數 \(\theta\) 的更新公式為(計算每個時刻的梯度就開始更新引數了):

\[\theta \leftarrow \theta+\alpha \gamma^\left[r_+\gamma v_\left(s_\right)-v_\left(s_\right)\right] \nabla \log \pi_\left(a_ | s_\right)

\tag

\]具體的演算法流程如下:

actor-critic演算法

神經網路與深度學習-邱錫鵬

李巨集毅主頁

評論 程式設計師,不止乾到35歲

在中國,程式設計師不能超過35歲,似乎已經是不爭的事實,軟體開發工作就是青春飯,頂多靠畢業這十年的時間,超過這個年齡,要不成功躍身成為管理者,要不轉行進入其他領域,好像再沒有更好的選擇,即使偶有繼續堅持作開發的,也被看成另類一族。老外卻不是這樣,40,50歲仍然作開發工作的大有人在,甚至很多牛人,包...

評論 程式設計師,不止乾到35歲

在中國,程式設計師不能超過35歲,似乎已經是不爭的事實,軟體開發工作就是青春飯,頂多靠畢業這十年的時間,超過這個年齡,要不成功躍身成為管理者,要不轉行進入其他領域,好像再沒有更好的選擇,即使偶有繼續堅持作開發的,也被看成另類一族。老外卻不是這樣,40,50歲仍然作開發工作的大有人在,甚至很多牛人,包...

評論 程式設計師,不止乾到35歲

在中國,程式設計師不能超過35歲,似乎已經是不爭的事實,軟體開發工作就是青春飯,頂多靠畢業這十年的時間,超過這個年齡,要不成功躍身成為管理者,要不轉行進入其他領域,好像再沒有更好的選擇,即使偶有繼續堅持作開發的,也被看成另類一族。老外卻不是這樣,40,50歲仍然作開發工作的大有人在,甚至很多牛人,包...