![](http://static.javashuo.com/static/loading.gif)
強化學習(RL,基於MDP)的求解policy的方式通常分爲三種:網絡
- Value <—critic
- Policy <—actor
- Value + Policy <— Actor-critic
策略梯度
強化學習是一個經過獎懲來學習正確行爲的機制. 家族中有不少種不同的成員, 有學習獎懲值, 根據本身認爲的高價值選行爲, 好比 Q learning, Deep Q Network, 也有不經過分析獎勵值, 直接輸出行爲的方法, 這就是今天要說的 Policy Gradients 了. 甚至咱們能夠爲 Policy Gradients 加上一個神經網絡來輸出預測的動做. 對比起以值爲基礎的方法, Policy Gradients 直接輸出動做的最大好處就是, 它能在一個連續區間內挑選動做, 而基於值的, 好比 Q-learning, 它若是在無窮多的動做中計算價值, 從而選擇行爲, 這, 它可吃不消.post
有了神經網絡固然方便, 可是, 咱們怎麼進行神經網絡的偏差反向傳遞呢? Policy Gradients 的偏差又是什麼呢? 答案是! 哈哈, 沒有偏差! 可是他的確是在進行某一種的反向傳遞. 這種反向傳遞的目的是讓此次被選中的行爲更有可能在下次發生. 可是咱們要怎麼肯定這個行爲是否是應當被增長被選的機率呢? 這時候咱們的老朋友, reward 獎懲正能夠在這時候派上用場,學習
![](http://static.javashuo.com/static/loading.gif)
如今咱們來演示一遍, 觀測的信息經過神經網絡分析, 選出了左邊的行爲, 咱們直接進行反向傳遞, 使之下次被選的可能性增長, 可是獎懲信息卻告訴咱們, 此次的行爲是很差的, 那咱們的動做可能性增長的幅度 隨之被減低. 這樣就能靠獎勵來左右咱們的神經網絡反向傳遞. 咱們再來舉個例子, 假如此次的觀測信息讓神經網絡選擇了右邊的行爲, 右邊的行爲隨之想要進行反向傳遞, 使右邊的行爲下次被多選一點, 這時, 獎懲信息也來了, 告訴咱們這是好行爲, 那咱們就在此次反向傳遞的時候加大力度, 讓它下次被多選的幅度更猛烈! 這就是 Policy Gradients 的核心思想了. 很簡單吧.
Policy gradient 是 RL 中另一個你們族, 他不像 Value-based 方法 (Q learning, Sarsa), 但他也要接受環境信息 (observation), 不一樣的是他要輸出不是 action 的 value, 而是具體的那一個 action, 這樣 policy gradient 就跳過了 value 這個階段. 並且我的認爲 Policy gradient 最大的一個優點是: 輸出的這個 action 能夠是一個連續的值, 以前咱們說到的 value-based 方法輸出的都是不連續的值, 而後再選擇值最大的 action. 而 policy gradient 能夠在一個連續分佈上選取 action.
介紹的 policy gradient 的第一個算法是一種基於 整條回合數據 的更新, 也叫 REINFORCE 方法. 這種方法是 policy gradient 的最基本方法, 有了這個的基礎, 咱們再來作更高級的.
![](http://static.javashuo.com/static/loading.gif)
log(Policy(s,a))*V
中的 log(Policy(s,a))
表示在 狀態 s
對所選動做 a
的吃驚度, 若是 Policy(s,a)
機率越小, 反向的 log(Policy(s,a))
(即 -log(P)
) 反而越大. 若是在 Policy(s,a)
很小的狀況下, 拿到了一個 大的 R
, 也就是 大的 V
, 那 -log(Policy(s, a))*V
就更大, 表示更吃驚, (我選了一個不常選的動做, 卻發現原來它能獲得了一個好的 reward, 那我就得對我此次的參數進行一個大幅修改). 這就是 log(Policy)*V
的物理意義啦spa
策略梯度
Actor Critic
咱們有了像 Q-learning 這麼偉大的算法, 爲何還要瞎折騰出一個 Actor-Critic? 原來 Actor-Critic 的 Actor 的前生是 Policy Gradients, 這能讓它絕不費力地在連續動做中選取合適的動做, 而 Q-learning 作這件事會癱瘓. 那爲何不直接用 Policy Gradients 呢? 原來 Actor Critic 中的 Critic 的前生是 Q-learning 或者其餘的 以值爲基礎的學習法 , 能進行單步更新, 而傳統的 Policy Gradients 則是回合更新, 這下降了學習效率.3d
結合了 Policy Gradient (Actor) 和 Function Approximation (Critic) 的方法. Actor 基於機率選行爲, Critic 基於 Actor 的行爲評判行爲的得分, Actor 根據 Critic 的評分修改選行爲的機率.code
![](http://static.javashuo.com/static/loading.gif)
或者說詳細點, 就是 Actor 在運用 Policy Gradient 的方法進行 Gradient ascent 的時候, 由 Critic 來告訴他, 此次的 Gradient ascent 是否是一次正確的 ascent, 若是此次的得分很差, 那麼就不要 ascent 那麼多.blog
DDPG
![](http://static.javashuo.com/static/loading.gif)