强化学习(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