• Ⅶ. Policy Gradient Methods


    Dictum:

     Life is just a series of trying to make up your mind. -- T. Fuller


    不同于近似价值函数并以此计算确定性的策略的基于价值的RL方法,基于策略的RL方法将策略的学习从概率集合(P(a|s))变换成策略函数(pi(a|s)),并通过求解策略目标函数的极大值,得到最优策略(pi^*),主要用的是策略梯度方法(Policy Gradient Methods)。

    策略梯度方法直接对随机策略(pi)进行参数化为(pi(a|s, heta)=Pr{A_t=a|S_t=s, heta_t= heta}),其中(sinmathcal{S})(ainmathcal{A}(s)),权重参数向量( hetainmathbb{R}^{d^prime}(d^prime<<|mathcal{S}|)),参数化后的策略不再是一个概率集合,而是一个近似函数。

    相比于基于价值的RL方法,策略梯度方法的优势如下:

    • 基于价值的RL方法依赖于价值函数的估计;而对策略梯度方法,价值函数可以用于学习策略的参数,但没有直接的依赖关系
    • 基于价值的RL方法为了寻找最优策略,使用了(epsilon)-贪心策略以(epsilon)的概率选择随机动作;而策略梯度方法可以直接近似一个确定的策略,因此,具有更好的收敛性
    • 基于价值的RL方法更适用于离散的动作、状态空间,即使一些改进也需要将连续的动作空间离散化,但这样的映射呈指数形式,增加求最优解的难度;而策略梯度方法在高维或连续动作空间中有效
    • 基于价值的RL方法通常只能学习最优策略是确定的,而策略梯度方法可以学习本身就具有随机性的最优策略

    缺点如下:

    • 策略梯度方法使用梯度上升,容易收敛到局部最优解
    • 同时,对策略难以进行有效评估,因为它具有很高的方差

    策略梯度定义

    策略函数

    策略函数是在确定在时序(t)的状态(s)下,采取任何科恩那个动作的具体概率,可以看作概率密度函数。假设策略被参数化为(pi(a|s, heta)),要求(pi(a|s, heta))对参数( heta)的偏导存在,则策略梯度

    [egin{aligned} riangledownpi(a|s, heta) & =pi(a|s, heta)frac{ riangledown pi(a|s, heta)}{pi(a|s, heta)}\ &=pi(a|s, heta) riangledownln pi(a|s, heta) end{aligned} ag{7.1} ]

    ( riangledown logpi(a|s, heta))是得分函数(score function)。

    1. Softmax Policy

    针对离散且有限的动作空间,可以使用softmax策略,对每一个“状态-动作”二元组估计一个参数化的数值偏好(h(s,a, heta)inmathbb{R}),然后利用softmax函数对动作加权,如

    [pi(a|s, heta)doteq frac{e^{h(s,a, heta)}}{sum_b e^{h(s,b, heta)}} ]

    此时,每个动作的概率正比于指数权重(pi(a|s, heta)propto e^{h(s,a, heta)})。若参数化的偏好值为特征(x(s,a))的线性组合,则(h(s,a, heta)= heta^ op x(s,a)),此时得分函数为

    [ riangledownlogpi(a|s, heta)=x(s,a)-mathbb{E}_pi [x(s,cdot)] ]

    1. Gaussian Policy

    针对庞大或连续的动作空间,不能直接计算每一个动作的概率,但可以学习概率分布的统计。通常可以使用Gaussian策略,即对应的动作服从高斯分布(asimmathcal{N}(mu,sigma^2)),则策略可以表示为

    [pi(a|s, heta)doteq frac{1}{sigma(s, heta)sqrt{2pi}}expigg(-frac{ig(a-mu(s, heta)ig)^2}{2sigma(s, heta)^2}igg) ]

    其中,均值(mu:mathcal{S} imesmathbb{R}^{d^prime} omathcal{R})和方差(sigma:mathcal{S} imesmathbb{R}^{d^prime} omathcal{R}^+)是两个参数化的函数近似器。因此,参数向量可以分为两部分( heta=[ heta_mu, heta_sigma]^ op),同时特征向量也分为两部分(x=[x_mu,x_sigma]),均值部分可以直接使用线性函数近似,而标准差部分要求为正数,可以使用线性函数的指数形式近似

    [mu(s, heta)doteq heta_mu^ op x_mu(s) ext{ 和 }sigma(s, heta)doteqexpBig( heta_sigma^ op x_sigma(s)Big) ]

    此时得分函数为

    [ riangledownlogpi(a|s, heta)=frac{(a-mu(s))x(s)}{sigma^2} ]

    性能度量

    有了策略函数,还要定义性能度量来衡量策略的好坏。一般将智能体累积折扣奖励的期望作为目标函数,用(J( heta))表示。利用相关策略的目标函数(J( heta))的梯度上升更新( heta),从而最大化奖励的期望:

    [ heta_{t+1}= heta_t+alpha riangledownwidehat{J( heta_t)} ag{7.2} ]

    在幕式任务和连续任务这两种不同的情况下,性能度量的定义是不同的:

    1. 起始价值(start value)

    针对幕式任务,将性能度量定义为该幕起始状态的价值,即

    [J_1( heta)doteq v_{pi_ heta}(s_0)=mathbb{E}_{pi_ heta}[v_0] ]

    其中,(v_{pi_ heta})是执行策略(pi_ heta)的真实的价值函数。适用于能够产生完整经验轨迹的环境,即从状态(s_0)开始,以一定的概率分布达到终止状态时序段内,智能体获得的累积奖励。

    1. 平均价值(average value)

    在连续任务中,智能体没有明确的起始状态,可以基于智能体在时序(t)的状态分布,针对每个可能的状态计算从(t)开始持续与环境交互所能获得的奖励,并按其状态的概率分布求和,即

    [J_{avgV}( heta)doteqsum_{sinmathcal{S}}d_{pi_ heta}(s)v_{pi_ heta}(s) ]

    其中,(ssim d_{pi_ heta}(s))表示状态(s)服从根据策略(pi_ heta)生成的马尔科夫链的状态分布。

    1. 每时序平均奖励(average reward per time-step)

    平均价值使用时序(t)下状态的平均价值,而每个时序的平均奖励使用时序(t)的状态下所有动作的期望,即在时序(t)先计算出智能体所有状态的可能性,然后计算出在每一种状态下采取所有可能动作获得的即时奖励,并按其对应的概率求和,即

    [egin{aligned} J_{avgR}( heta)doteqmathbb{E}_{pi_ heta}[r] &=sum_{sinmathcal{S}}d_{pi_ heta}(s)sum_{ainmathcal{A}}pi_ heta(a|s)r_{s,a} \ &=sum_s d_{pi_ heta}(s)sum_api(a|s)sum_{s^prime,r}p(s^prime,r|s,a)r end{aligned} ]

    其中,(d_{pi_ heta}(s)=lim_{t oinfty}Pr{s_t=s|s_0,pi_ heta})是策略(pi_ heta)下状态的稳态分布,(s_0)独立于所有策略,(r_{s,a})是状态(s)下执行动作(a)得到的即时奖励。它实际上是单步MDPs,也就是从状态(ssim d(s))开始,根据策略(pi)执行动作(a),此时得到了一个奖励值(r),完成了一个时序后结束。

    策略梯度定理

    已经给出了策略函数和性能度量,但通过调整策略参数( heta)来保证性能得到改善仍存在疑点,主要在于策略的性能既依赖于动作的选择,也依赖于动作选择时所处的状态分布,而策略(pi(a|s))的定义是已知状态(s)下动作(a)的概率,因此策略对状态分布的影响未知。这里就引出了策略梯度定理(policy gradient theorem)。

    Policy Gradient Theroem
    对任何可微策略(pi(a|s, heta)),任意目标函数(J( heta))的梯度都可以表示为

    [ riangledown J( heta)proptosum_smu(s)sum_a q_pi(s,a) riangledown_ hetapi(a|s, heta) ag{7.3} ]

    在幕式情况下,比例常数为幕的平均长度;在连续情况下,比例常数为1。(mu(s))是同步策略下的状态分布。

    (证明见Append)

    策略梯度算法

    REINFORCE:Monte Carlo Policy Gradient

    REINFORCE是一种蒙特卡洛算法,一般应用于幕式任务,也需要在每个幕达到终止状态后才能进行更新。

    根据策略梯度定理((7.3)),REINFORCE的目标函数梯度可以写成

    [egin{aligned} riangledown J( heta) &proptosum_smu(s)sum_a riangledownpi(a|s, heta)q_pi(s,a) \ &=mathbb{E}_pi igg[sum_a q_pi (S_t,a) riangledown pi(a|S_t, heta)igg] \ &=mathbb{E}_pi igg[sum_a pi(a|S_t, heta)q_pi(S_t,a)frac{ riangledown pi(a|S_t, heta)}{pi(a|S_t, heta)}igg] \ &(A_tsimpi,因此sum_a pi(a|S_t, heta)q_pi(S_t,a)可以用q_pi(S_t,A_t)代替)\ &=mathbb{E}_piigg[q_pi(S_t,A_t)frac{ riangledown pi(a|S_t, heta)}{pi(a|S_t, heta)}igg]\ &(根据q_pi的定义,q_pi(S_t,A_t)=mathbb{E}_pi[G_t|S_t,A_t],G_t是回报值)\ &=mathbb{E}_piigg[G_tfrac{ riangledown pi(A_t|S_t, heta)}{pi(A_t|S_t, heta)}igg] end{aligned} ]

    根据式((7.2))的随机梯度上升,可以得到参数的更新如下

    [egin{aligned} heta_{t+1} &leftarrow heta_t+alpha G_tfrac{ riangledown pi(A_t|S_t, heta_t)}{pi(A_t|S_t, heta_t)} \ &leftarrow heta_t+alpha G_t riangledown ln pi(A_t|S_t, heta_t) \ end{aligned} ]

    参数向量( heta)更新的大小正比于回报(G_t),使更新朝着更利于产生最大回报动作的方向;同时,它反比于策略(pi(A_t|S_t, heta)),减少非最优动作因选择频率过大导致的性能影响。

    REINFORCE with Baseline

    带基线的REINFORCE算法可以看作是一种推广形式,它是在策略梯度定理((7.3))上添加一个不随动作(a)变化的任意基线(b(s)),形式如下

    [ riangledown J( heta)proptosum_smu(s)sum_aig(q_pi(s,a)-b(s)ig) riangledown_ heta pi(a|s, heta) ]

    基线(b(s))不会影响策略的梯度,因为梯度方向的单位向量之和为0,即( riangledown_ heta sum_api(a|s, heta)= riangledown_ heta 1=0)。通常可以将状态价值函数近似(hat{v}(S_t,w))(winmathbb{R}^m)作为基线,改良后的REINFORCE算法参数更新为

    [w_{t+1}leftarrow w_t+alpha^w gamma^t ig(G_t-hat{v}(S_t,w)ig) riangledown_w hat{v}(S_t,w) ]

    [ heta_{t+1}leftarrow heta_t+alpha^ heta gamma^t ig(G_t-hat{v}(S_t,w)ig) riangledown_ heta ln pi(A_t|S_t, heta) ]

    Append

    策略梯度定理(证明)

    1. 幕式情况

    [egin{aligned} riangledown J( heta) &= riangledown v_pi(s) \ &= riangledown igg[sum_a pi(a|s)q_pi(s,a)igg] \ &=sum_aBig[ riangledownpi(a|s)q_pi(s,a)+pi(a|s) riangledown q_pi(s,a)Big] \ &=sum_a Big[ riangledownpi(a|s)q_pi(s,a)+pi(a|s) riangledown sum_{s^prime,r}p(s^prime|s,a)(r+v_pi(s^prime))Big] \ &=sum_aBig[ riangledownpi(a|s)q_pi(s,a)+pi(a|s)sum_{s^prime}p(s^prime|s,a) riangledown v_pi(s^prime)Big] \ &=sum_aBig[ riangledownpi(a|s)q_pi(s,a)+pi(a|s)sum_{s^prime}p(s^prime|s,a)sum_{a^prime}[ riangledownpi(a^prime|s^prime)q_pi(s^prime,a^prime)+pi(a^prime|s^prime)sum_{s^{primeprime}}p(s^{primeprime}|s^prime,a^prime) riangledown v_pi(s^{primeprime})]Big] \ &=sum_{xinmathcal{S}}sum_{k=0}^infty Pr(s o x,k,pi)sum_a riangledownpi(a|x)q_pi(x,a) \ &proptosum_s mu(s)sum_a riangledownpi(a|s)q_pi(s,a) \ end{aligned} ]

    其中,(Pr(s o x,k,pi))表示在策略(pi)下的(k)步内,状态(s)转移到状态(x)的概率。

    1. 连续情况

    [egin{aligned} riangledown v_pi(s) &= riangledown Big[sum_a pi(a|s)q_pi(s,a)Big] \ &=sum_a Big[ riangledownpi(a|s)q_pi(s,a)+pi(a|s) riangledown q_pi(s,a)Big] \ &=sum_aBig[ riangledownpi(a|s)q_pi(s,a)+pi(a|s) riangledownsum_{s^prime,r}p(s^prime,r|s,a)ig(r-r( heta)+v_pi(s^prime)ig)Big] \ &=sum_aBig[ riangledownpi(a|s)q_pi(s,a)+pi(a|s)[- riangledown r( heta)+sum_{s^prime}p(s^prime|s,a) riangledown v_pi(s^prime)]Big] \ end{aligned} ]

    由上可以得到

    [ riangledown r( heta)=sum_aBig[ riangledownpi(a|s)q_pi(s,a)+pi(a|s)sum_{s^prime}p(s^prime|s,a) riangledown v_pi(s^prime)Big]- riangledown v_pi(s) ]

    目标函数的梯度为

    [egin{aligned} riangledown J( heta) &= riangledown r( heta) \ &=sum_aBig[ riangledownpi(a|s)q_pi(s,a)+pi(a|s)sum_{s^prime}p(s^prime|s,a) riangledown v_pi(s^prime)Big]- riangledown v_pi(s) \ &(对前一项添加状态的权重mu(s),sum_smu(s)=1,不影响梯度) \ &=sum_smu(s)sum_aBig[ riangledownpi(a|s)q_pi(s,a)+pi(a|s)sum_{s^prime}p(s^prime|s,a) riangledown v_pi(s^prime)Big]- riangledown v_pi(s) \ &=sum_smu(s)sum_a riangledownpi(a|s)q_pi(s,a)+mu(s)sum_api(a|s)sum_{s^prime}p(s^prime|s,a) riangledown v_pi(s^prime)-mu(s)sum_a riangledown v_pi(s) \ &=sum_smu(s)sum_a riangledownpi(a|s)q_pi(s,a)+sum_{s^prime}mu(s^prime) riangledown v_pi(s^prime)-sum_smu(s) riangledown v_pi(s) \ &=sum_smu(s)sum_a riangledown pi(a|s)q_pi(s,a) end{aligned} ]


    References

    Richard S. Sutton and Andrew G. Barto. Reinforcement Learning: An Introduction (Second Edition). 2018.
    Csaba Szepesvári. Algorithms for Reinforcement Learning. 2009.
    Richard S. Sutton et al. Policy Gradient Methods for Reinforcement Learning with Function Approximation. 2000.
    Course: UCL Reinforcement Learning Course (by David Silver)

  • 相关阅读:
    有return的情况下try catch finally的执行顺序
    for循环和foreach循环效率对比
    SpringBoot_数据访问-整合MyBatis-配置版MyBatis
    作品
    HTML——招生信息网(bootstrap、WOW动画、blueimp-gallery图片展示插件)
    HTML——信息技术基础精品课程
    HTML——校友会(bootstrap)
    毕设——社区志愿者信息管理系统
    HTML笔记——JS下载.json文件
    HTML笔记——bootstrap-select、table、tableExport、layer
  • 原文地址:https://www.cnblogs.com/HughCai/p/14036730.html
Copyright © 2020-2023  润新知