強化學習(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 獎懲正能夠在這時候派上用場,學習




如今咱們來演示一遍, 觀測的信息經過神經網絡分析, 選出了左邊的行爲, 咱們直接進行反向傳遞, 使之下次被選的可能性增長, 可是獎懲信息卻告訴咱們, 此次的行爲是很差的, 那咱們的動做可能性增長的幅度 隨之被減低. 這樣就能靠獎勵來左右咱們的神經網絡反向傳遞. 咱們再來舉個例子, 假如此次的觀測信息讓神經網絡選擇了右邊的行爲, 右邊的行爲隨之想要進行反向傳遞, 使右邊的行爲下次被多選一點, 這時, 獎懲信息也來了, 告訴咱們這是好行爲, 那咱們就在此次反向傳遞的時候加大力度, 讓它下次被多選的幅度更猛烈! 這就是 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 的最基本方法, 有了這個的基礎, 咱們再來作更高級的.


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



或者說詳細點, 就是 Actor 在運用 Policy Gradient 的方法進行 Gradient ascent 的時候, 由 Critic 來告訴他, 此次的 Gradient ascent 是否是一次正確的 ascent, 若是此次的得分很差, 那麼就不要 ascent 那麼多.blog

DDPG