###一、Policy-based RL概述
####1.Policy-based RL起源
在学习Policy Gradiens(PG)之前,我们将强化学习的方法分成两类进行考虑:
- 一类是value-based方法,需要计算价值函数(value function),根据自己认为的高价值选择行为(action)的方法,如Q Learning, sara, Deep Q Network(DQN)
- 另一类是policy-based方法,不需要计算value function,直接计算出随机策略的方法,如PG。
- 图中第三类方法结合了上述两者,此不详述。
在深度强化学习DQN中我们提到将深度学习和强化学习结合起来,用network近似了Q函数,从而泛化强化学习方法,使之可以更广泛的应用。DQN属于一种基于value-based方法的泛化,这类方法通常采用一个Function Approximator (FA)来近似value function,然后根据计算出的value function 在动作空间内选择action。他们通常存在以下问题:
- 这类方法通常会获得一个确定的策略(deterministic policy),但很多问题中的最优策略是随机策略(stochastic policy)。(如石头剪刀布游戏,如果确定的策略对应着总出石头,随机策略对应随机出石头、剪刀或布,那么随机策略更容易获胜)
- value function 的微小变化对策略的影响很大,可能直接决定了这个action是否被选取
- **在连续或高维度动作空间不适用。**因为这类算法的本质是连续化了value function,但动作空间仍然是离散的。对于连续动作空间问题,虽然可以将动作空间离散化处理,但离散间距的选取不易确定。过大的离散间距会导致算法取不到最优action,会在这附近徘徊,过小的离散间距会使得action的维度增大,会和高维度动作空间一样导致维度灾难,影响算法的速度。
那么我们很自然的联想到,既然Policy是关于状态量 s 和动作量a 的函数,是否可以直接用FA近似Policy?答案是肯定的,这就是Policy-based RL。
**Policy-based RL克服了上述问题,使得RL可以用于连续或高维度动作空间,且可以生成stochastic policy。**那么我们来看看他是如何做到的吧!
####2.Policy-based RL
这里引用Karpathy大神关于PG的小例子来说明Policy-based RL的工作过程。假设用Policy-based RL来玩 ATARI game (Pong!)游戏:让Policy-based RL操作一个拍子,维持不让小球掉下去的游戏。此处的state是每一帧的像素矩阵,action为(up or down), reward 为+1 (接球成功)和 -1 (没有接住球)。
那么可以分析其工作流程如下:
构造了一个策略神经网络(Policy Network),网络输入为像素矩阵(state), 输出为an action probability distribution π ( s ) \pi(s) π(s),此处为拍子向上运动(up) 的概率分布。实际的执行过程中,我们可以按照这个 distribution 来选择动作,或者 直接选择概率最大的那个 action。通过更新神经网络参数,增加表现好(取胜)的action出现的可能性,减小表现差(失败)的action出现的可能性。
那么如何判断生成的Policy π ( s ) \pi(s) π(s)是好是坏呢?
我们定义一个reward的期望值 J ( θ ) J(\theta) J(θ), 来表示所得策略的奖励,其中 θ \theta θ为泛化函数FA的参数,不同的 J ( θ ) J(\theta) J(θ)定义如下:
这样我们就量化了Policy的测评指标,可以看出Policy-based RL的本质是一个优化问题,需要最大化 J ( θ ) J(\theta) J(θ),但是直接确定 J ( θ ) J(\theta) J(θ)与 θ \theta θ的关系比较困难,可是我们可以让 J ( θ ) J(\theta) J(θ)朝着增大的方向前进。
有一种优化方法叫梯度下降法(Gradient descent)可以解决该问题,采用梯度下降法(Gradient descent)的Policy-based RL称之为Policy Grandients,下面我们详细叙述他的工作原理。
###二、Policy Gradients
####1、梯度下降法
梯度下降算法背后的原理:目标函数 J ( θ ) J(\theta) J(θ) 关于参数 θ \theta θ 的梯度 ∇ θ J ( θ ) \nabla_\theta J(\theta)