Policy-Based Reinforcement Learning


策略学习:用神经网络来近似策略函数Policy-Based Reinforcement Learning - 图4,该神经网络叫做 policy network 。用来控制 agent 运动。想要训练 policy network ,必须用到 policy gradient 算法。该算法是本节重点。

Policy Function Approximation

Policy Function Policy-Based Reinforcement Learning - 图5

policy 函数Policy-Based Reinforcement Learning - 图6 是一个概率密度函数,可以自动控制 agent 运动。

  • 输入为当前状态Policy-Based Reinforcement Learning - 图7
  • 输出为概率分布,给每个动作 action 分配一个概率值,每个动作对应一个概率值。

image.png
有了动作 action 的概率值, agent 就会做一次随机抽样,得到动作 action Policy-Based Reinforcement Learning - 图9。每个动作都有可能被抽到,但是向上的动作被抽到的可能性比较大。然后 agent 就会做动作Policy-Based Reinforcement Learning - 图10

Can we directly learn a policy function Policy-Based Reinforcement Learning - 图11

只要有了一个 policy 函数Policy-Based Reinforcement Learning - 图12 ,就可以通过 policy 函数Policy-Based Reinforcement Learning - 图13 自动控制 agent 运动,但是如何得到这样的policy 函数Policy-Based Reinforcement Learning - 图14 ?如果只有几个状态和动作,我们可以画出一张表格矩阵,表中每一个格子代表一个概率。通过玩游戏把所有的概率算出来,就可以得到 policy functionimage.png

Policy Network Policy-Based Reinforcement Learning - 图16

由于现实情况是状态是无数的,不可能将所有状态和对应的动作的概率统计在一张表上,无法直接通过计算得到一个 policy 函数Policy-Based Reinforcement Learning - 图17 ,所以我们需要做函数近似,得到 policy 函数Policy-Based Reinforcement Learning - 图18 ,可以使用神经网络来近似得到policy 函数Policy-Based Reinforcement Learning - 图19 ,我们把该神经网络叫做 policy network Policy-Based Reinforcement Learning - 图20

Policy-Based Reinforcement Learning - 图21 为神经网络的参数,一开始是随机初始化的,然后通过学习逐渐改进参数 Policy-Based Reinforcement Learning - 图22 。下图为超级玛丽游戏中的策略函数:
image.png

  • 输入为当前状态Policy-Based Reinforcement Learning - 图24
  • 输出为三维向量,每个元素对应一个动作值(发生该动作的概率)

由于 policy 函数Policy-Based Reinforcement Learning - 图25 是一个概率密度函数,所以满足:
image.png
对于所有动作Policy-Based Reinforcement Learning - 图27,将 policy 函数Policy-Based Reinforcement Learning - 图28 输出的概率值加和必须为1,所以这也是为什么在神经网络中要添加 softmax 激活函数。

State-Value Function Approximation

image.png
Discounted Return Policy-Based Reinforcement Learning - 图30:从Policy-Based Reinforcement Learning - 图31 时刻开始,未来所有奖励Policy-Based Reinforcement Learning - 图32 的加权求和。由于在Policy-Based Reinforcement Learning - 图33 时刻,未来的奖励还没有观测到,所以是随机变量,每个奖励Policy-Based Reinforcement Learning - 图34 的随机性来自于前一时刻的动作Policy-Based Reinforcement Learning - 图35 和状态Policy-Based Reinforcement Learning - 图36。动作的随机性来自于policy 函数Policy-Based Reinforcement Learning - 图37;状态的随机性来自于状态转移函数Policy-Based Reinforcement Learning - 图38

由于 Policy-Based Reinforcement Learning - 图39是所有奖励的加和, Policy-Based Reinforcement Learning - 图40 的随机性来自于未来所有的动作和状态。
image.png
Action-value function 是动作价值函数Policy-Based Reinforcement Learning - 图42,是Policy-Based Reinforcement Learning - 图43 的条件期望,其把Policy-Based Reinforcement Learning - 图44 时刻以后的状态Policy-Based Reinforcement Learning - 图45和动作Policy-Based Reinforcement Learning - 图46的随机性都消除,Policy-Based Reinforcement Learning - 图47的值依赖于当前的状态Policy-Based Reinforcement Learning - 图48 和 当前动作Policy-Based Reinforcement Learning - 图49policy 函数Policy-Based Reinforcement Learning - 图50。用不同的 policy 函数Policy-Based Reinforcement Learning - 图51得到的Policy-Based Reinforcement Learning - 图52 值是不一样的。Policy-Based Reinforcement Learning - 图53可以评价在状态Policy-Based Reinforcement Learning - 图54 的情况下,Policy-Based Reinforcement Learning - 图55 动作的好坏。

state-value function :状态价值函Policy-Based Reinforcement Learning - 图56,其是Policy-Based Reinforcement Learning - 图57的期望,将Policy-Based Reinforcement Learning - 图58中的动作Policy-Based Reinforcement Learning - 图59 积分掉,动作Policy-Based Reinforcement Learning - 图60 被当做随机变量,概率密度函数为 policy 函数 Policy-Based Reinforcement Learning - 图61,将动作Policy-Based Reinforcement Learning - 图62 的影响消除,这样Policy-Based Reinforcement Learning - 图63只与 policy 函数 Policy-Based Reinforcement Learning - 图64 和当前状态Policy-Based Reinforcement Learning - 图65 有关:

  • 给定 policy 函数 Policy-Based Reinforcement Learning - 图66Policy-Based Reinforcement Learning - 图67可以评价当前状态的好坏,Policy-Based Reinforcement Learning - 图68越大,表示当前胜算越大;
  • 给定状态Policy-Based Reinforcement Learning - 图69,可以评价当前 policy 函数 Policy-Based Reinforcement Learning - 图70 的好坏程度,policy 函数 Policy-Based Reinforcement Learning - 图71 好,Policy-Based Reinforcement Learning - 图72值越大,表示胜算大。

如果动作Policy-Based Reinforcement Learning - 图73 是离散的,期望就可以通过求和来展开:对于所有动作Policy-Based Reinforcement Learning - 图74 ,把Policy-Based Reinforcement Learning - 图75和概率密度函数 policy 函数 Policy-Based Reinforcement Learning - 图76 的内积做连加,这样动作Policy-Based Reinforcement Learning - 图77 就被消掉了。

Policy-Based Reinforcement Learning

我们得到了状态价值函Policy-Based Reinforcement Learning - 图78,现在我们用神经网络近似状态价值函Policy-Based Reinforcement Learning - 图79
image.png
现在我们来讨论一下策略学习的思想:
刚才我们用策略网络代替策略函数,这样状态价值函数可以近似写成Policy-Based Reinforcement Learning - 图81Policy-Based Reinforcement Learning - 图82可以评价状态Policy-Based Reinforcement Learning - 图83policy 函数 Policy-Based Reinforcement Learning - 图84 的好坏。给定状态Policy-Based Reinforcement Learning - 图85,策略网络越好 ,Policy-Based Reinforcement Learning - 图86值越大。

如何让策略网络越来越好呢???改进模型参数θ,让 Policy-Based Reinforcement Learning - 图87变大。
image.png
基于此想法,我们可以把目标函数定义为:Policy-Based Reinforcement Learning - 图89的期望,记做Policy-Based Reinforcement Learning - 图90。该期望是对于状态Policy-Based Reinforcement Learning - 图91 求的,这里将状态Policy-Based Reinforcement Learning - 图92 作为一个随机变量,用期望去掉,这样变量就剩下Policy-Based Reinforcement Learning - 图93 了。目标函数Policy-Based Reinforcement Learning - 图94 就是对策略网络的评价。策略网络越好Policy-Based Reinforcement Learning - 图95 越大。所以 Policy-based Learning 就是改进 Policy-Based Reinforcement Learning - 图96,使得Policy-Based Reinforcement Learning - 图97 越大越好。

如何改进θ呢?这就用到了 Policy gradient ascent 算法。

agent 玩游戏,每一步能观测到状态Policy-Based Reinforcement Learning - 图98Policy-Based Reinforcement Learning - 图99就是从状态的概率分布中随机抽样得到的,然后对Policy-Based Reinforcement Learning - 图100,关于Policy-Based Reinforcement Learning - 图101求导,得到梯度,然后用梯度上升来更新Policy-Based Reinforcement Learning - 图102Policy-Based Reinforcement Learning - 图103 是学习率。

这种方法类似于随机梯度上升,但是我们算的不是梯度,真正的梯度应该是目标函数Policy-Based Reinforcement Learning - 图104 对于Policy-Based Reinforcement Learning - 图105求导,这里我们算的是Policy-Based Reinforcement Learning - 图106Policy-Based Reinforcement Learning - 图107 的导数,其实就是随机梯度,随机性来源于状态Policy-Based Reinforcement Learning - 图108

为什么要用梯度上升呢?因为我们想让目标函数Policy-Based Reinforcement Learning - 图109变得越来越大,Policy-Based Reinforcement Learning - 图110就被叫做 Policy Gradient

Policy Gradient

要想学习策略网络,需要策略梯度算法,策略梯度是Policy-Based Reinforcement Learning - 图111函数是对神经网络参数Policy-Based Reinforcement Learning - 图112 的导数,接下来会讲到如何求解导数和近似计算策略梯度。
image.png
Policy-Based Reinforcement Learning - 图114函数是对 state-value function 的近似。Policy-Based Reinforcement Learning - 图115 是策略神经网络,Policy-Based Reinforcement Learning - 图116 是神经网络的参数。

策略梯度就是Policy-Based Reinforcement Learning - 图117对神经网络参数Policy-Based Reinforcement Learning - 图118 的导数,接下来要做数学推导,将该导数算出来:连加的导数就变成导数的连加。为了方便推导,假设Policy-Based Reinforcement Learning - 图119不依赖于Policy-Based Reinforcement Learning - 图120 ,这样就可以在对Policy-Based Reinforcement Learning - 图121 求导过程中,把Policy-Based Reinforcement Learning - 图122当做常数提取出来。但是这种假设并不严谨,Policy-Based Reinforcement Learning - 图123依赖于Policy-Based Reinforcement Learning - 图124,而Policy-Based Reinforcement Learning - 图125 是函数Policy-Based Reinforcement Learning - 图126 的参数,所以Policy-Based Reinforcement Learning - 图127也是依赖于Policy-Based Reinforcement Learning - 图128 的。

这样就得到策略梯度的公式:
image.png

如果动作Policy-Based Reinforcement Learning - 图130 是离散的,直接用这个公式就能把策略梯度算出来,然而实际应用中不会用该公式来计算策略梯度。实际用的都是这个公式的蒙泰卡罗近似
image.png
Policy-Based Reinforcement Learning - 图132是概率密度函数,Policy-Based Reinforcement Learning - 图133乘以 公式第二行蓝色笔圈出的部分,再关于动作Policy-Based Reinforcement Learning - 图134 做连加,就等于对圈出的部分做期望,求期望时,把动作Policy-Based Reinforcement Learning - 图135 当做随机变量,Policy-Based Reinforcement Learning - 图136是动作Policy-Based Reinforcement Learning - 图137 的概率密度函数。

以上的推导是不严谨的,因为Policy-Based Reinforcement Learning - 图138中的Policy-Based Reinforcement Learning - 图139函数,也是关于Policy-Based Reinforcement Learning - 图140 的函数,理应也要把Policy-Based Reinforcement Learning - 图141Policy-Based Reinforcement Learning - 图142 求导,实际上将其也考虑在内,得到的最终结果也是相同的。如果只是用一下 policy gradient 算法,这样理解就已经ok了。

image.png

我们已经推理除了策略梯度算法的两种等价形式,有了上述两个公式,就可以实际计算得到策略梯度了。
image.png
如果动作是离散的,就可以用第一种公式:

  1. 把连加中的东西记做Policy-Based Reinforcement Learning - 图145;对于每个动作Policy-Based Reinforcement Learning - 图146,将Policy-Based Reinforcement Learning - 图147值计算出来;
  2. 根据上述公式一:策略梯度就是把这些Policy-Based Reinforcement Learning - 图148全部加起来

但是,动作空间太过于庞大的时候,计算量会很大。
image.png
对于连续的动作,我们就可以使用策略梯度的第二种公式:蒙泰卡罗近似。A是连续变量,所以想求该期望,就得求定积分,但是由于π函数是神经网络,非常复杂,没有办法用数学公式对复杂的神经网络的积分求出,所以可以使用蒙泰卡罗近似,求出近似期望。蒙泰卡罗近似步骤:

  1. 随机抽样得到一个动作Policy-Based Reinforcement Learning - 图150,抽样是根据概率密度函数π得到的。
  2. 由于动作Policy-Based Reinforcement Learning - 图151是一个确定的动作。直接能够计算出Policy-Based Reinforcement Learning - 图152的值。
    1. 根据函数Policy-Based Reinforcement Learning - 图153的定义,其期望就是Policy-Based Reinforcement Learning - 图154
    2. 由于a是根据概率密度函数随机抽样得到的,所以Policy-Based Reinforcement Learning - 图155是策略梯度Policy-Based Reinforcement Learning - 图156的无偏估计。
  3. 由于Policy-Based Reinforcement Learning - 图157是策略梯度Policy-Based Reinforcement Learning - 图158的无偏估计,所以可以用Policy-Based Reinforcement Learning - 图159来近似策略梯度。

蒙泰卡罗近似就是抽一个或者很多个随机样本,用随机样本近似期望,更新模型参数Policy-Based Reinforcement Learning - 图160 的时候,用Policy-Based Reinforcement Learning - 图161来作为近似的梯度就可以,不用计算精确的策略梯度(也算不出来)。

公式二可以适用于离散的动作。

策略梯度算法

image.png

  1. Policy-Based Reinforcement Learning - 图163 时刻观测到状态Policy-Based Reinforcement Learning - 图164
  2. 用蒙泰卡罗近似来计算策略梯度,把策略网络Policy-Based Reinforcement Learning - 图165作为概率密度函数,进行随机抽样得到动作Policy-Based Reinforcement Learning - 图166
  3. 计算价值函数Policy-Based Reinforcement Learning - 图167的值,把结果记做Policy-Based Reinforcement Learning - 图168
  4. 对策略网络求导,得到Policy-Based Reinforcement Learning - 图169
  5. 近似求取策略梯度。
  6. 更新策略网络的参数

image.png
步骤三中的action-value function,Policy-Based Reinforcement Learning - 图171 是不知道的,无法算Policy-Based Reinforcement Learning - 图172,如何近似求取它呢?

  • 方法1:Reinforce
    • 用策略网络π控制agent运动, 从一开始玩到游戏结束,把整个游戏的轨迹记录下来
    • 观察到所有的奖励后r,就能得到U_t
    • 由于价值函数是U_t的期望,我们可以用U_t的观测值u_t来近似Q_pai。
    • 所以该方法就是使用观测值u_t代替Q_pai函数,该方法需要玩完一整局游戏,观测到所有的奖励,然后才能更新策略网络。
  • 方法2:

    • 用神经网络近似,原本π函数就是使用神经网络近似得到的,现在用另一个神经网络近似Q_pai,这样就有了两个神经网络。一个称作为actor;一个成为critic。

    • Summary

      image.png
  • 我们希望得到策略函数π,用π函数自动来控制agent运动。

  • 每当agent观测到状态s_t,agent就用π函数算出概率分布,然后随机抽样得到一个action
  • 直接求策略函数比较困难,所以需要策略神经网络来近似策略函数,
  • θ是神经网络π的参数,一开始通过随机初始化得到,然后使用策略梯度算法更新。
  • 策略梯度是关于价值函数V对θ的导数,算出了策略梯度,用梯度上升来跟新参数θ。why梯度上升?希望V越大越好。目标函数是Policy-Based Reinforcement Learning - 图174,可以理解为:使用policy函数π,agent的平均胜算有多大。策略函数越好,目标函数越大,agent的平均胜算也就越大。