Press "Enter" to skip to content

强化学习 # Policy gradient

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

前文: 深度强化学习 # Deep-Q-Network 利用神经网络对Q value function作近似表示。局限性在于其只适用于action有限的情况(神经网络输出层的节点数显然不能是无限的)。

 

在前文有提到过NN的两种结构,如果是输入State和action来得到Q呢?这里输出只有一个。是不是可以解决连续情况?答案是否定的。(因为我们还需要对所有的action求一个max(Q),虽然此时NN可以build,但是计算max(Q)时的循环次数无限次,导致max(Q)的计算不可行,且这种做法效率极度低下。

 

那幺我们考虑第三种出路:神经网络输入状态直接输出动作,这就是策略梯度的思想了。

 

Policy Gradients:不通过分析奖励值, 直接输出行为 的方法。对比起以值为基础的方法, Policy Gradients 直接输出动作的最大好处就是, 它能在一个 连续区间 内挑选动作, 而基于值的, 比如 Q-learning只能适用于action数量有限的情况。Policy Gradients可以结合神经网络。强化学习里面无标签,所以 Policy Gradients没有误差 ,那要怎幺进行神经网络的误差反向传递呢?(因此还是需要充分利用reward的信息)

 

 

Policy Gradients的核心思想: 观测的信息通过神经网络分析, 选出了左边的行为, 我们直接进行反向传递, 使之下次被选的可能性增加, 但是奖惩信息却告诉我们, 这次的行为是不好的, 那我们的动作可能性增加的幅度随之被减低. 假如这次的观测信息让神经网络选择了右边的行为, 右边的行为随之想要进行反向传递, 使右边的行为下次被多选一点, 这时, 奖惩信息也来了, 告诉我们这是好行为, 那我们就在这次反向传递的时候加大力度。这样就能靠奖励来左右我们的神经网络反向传递。

 

Policy Gradients要输出的不是action对应的value而是action,这样就跳过了 value 这个阶段。最大的一个优势是: 输出的这个 action 可以是一个连续的值 , 之前我们说到的 value-based 方法输出的都是不连续的值。

 

基于 整条回合数据 的更新

 

Policy gradient的第一个算法是一种基于 整条回合数据 的更新, 也叫 REINFORCE 方法。因为也是NN所以需要梯度下降。

重点:梯度下降里面,希望动作在下一次有机会更多出现, v t v_t v t ​ 告诉我们这个更新方向是否正确,如果正确就更新幅度更大,否则更小。log形式的概率会有更好的收敛性。

 

∇ θ ( log ⁡ ( p o l i c y ( s t , a t ) ) ∗ V )
abla_{\theta}(\log(policy(s_t,a_t))*V) ∇ θ ​ ( lo g ( p o l i c y ( s t ​ , a t ​ ) ) ∗ V ) 表示状态S对选择的动作a的吃惊度

 

代码: github

 

因为是基于回合的,所以会在回合中的每一次reward进行处理,让reward能更有导向性的引导policy gradient的方向。

 

如何处理整个回合的reward使得其能正确引导梯度下降的方向呢?

 

 

Reference

 

 

    1. https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/intro-PG/

 

    1. 《Policy Gradient Methods for Reinforcement Learning with Function Approximation》NIPS-1999

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注