Datawhale - Task02:策略梯度算法

目录

一、概要

二、策略函数

1. 离散动作的策略函数——softmax函数

2. 连续动作的策略函数

三、策略目标函数

四、策略梯度算法

1. 基于轨迹的梯度推导

2. 基于级联的梯度推导

五、REINFORCE算法/Mento Carlo策略梯度算法

六、策略梯度法的评价


        本文为Datawhale《深度强化学习基础与实践(二)》学习总结第二期。

        以下为本文写作时查阅的相关资料:

  1. Datawhale的JoyRL Book:https://github.com/datawhalechina/joyrl-book
  2. 相关数学原理推导的证明:【强化学习】策略梯度方法-策略近似_哔哩哔哩_bilibili
  3. Reinforcement Learning for Sequential Decision and Optimal Control | SpringerLink
  4. Reinforcement Learning: An Introduction

一、概要

        上一篇所提到的DQN,以及更为基础的Mento Carlo算法、时间差分算法、Q-Learning算法等,依赖于贝尔曼方程对价值函数进行建模和估计,再计算最优策略,我们将其称之为基于价值(valued-based)的算法,资料3中也称为间接性强化学习(Indirect RL)。

        本篇将开始介绍策略梯度( policy-based )算法,或者说直接式强化学习(Direct RL),这类算法直接对策略本身进行近似优化。具体来说,我们将策略描述为含参数θ的连续函数,其输入为某个状态,输出为对应的动作概率分布\pi_{\theta}(a | s),这个概率分布不再是(近)确定性策略,而是随机性策略。所要做的便是通过优化预定义的目标函数来搜索最优策略。

二、策略函数

1. 离散动作的策略函数——softmax函数

        假设状态-动作对数值偏好为h(s, a, \theta),一般采用softmax函数将其转换为动作概率分布,即

$\pi_{\theta}(s, a) = \dfrac{e^{h(s, a, \theta)}}{\sum\limits_{b} e^{h(s, a, \theta)}}$

2. 连续动作的策略函数

        对于连续动作空间,通常策略对应的动作采用正态概率密度参数化,即

$\pi_{\theta}(a|s) = \dfrac{1}{\sqrt{2 \pi} \sigma(s, \theta)} \exp\left\{- \dfrac{(a - \mu(s, \theta))^{2}}{2\sigma^{2}(s, \theta)}\right\}$

其中,\mu: S \times \mathbb{R}^{d'} \to \mathbb{R}\sigma: S \times \mathbb{R}^{d'} \to \mathbb{R}^{+}为函数近似。

        一般来说,将策略的参数向量分成两个部分,即\theta = [\theta_{\mu}, \theta_{\sigma}]^{\mathrm{T}}。例如,均值可以近似为一个线性函数,而考虑到标准差非负,采用线性函数的指数近似,即

$ \mu(s, \theta) = \mu(s, \theta_{\mu}) = \theta_{\mu}^{\mathrm{T}} \phi_{\mu}(s), \qquad \sigma(s, \theta) = \sigma(s, \theta_{\sigma}) = \exp(\theta_{\sigma}^{\mathrm{T}} \phi_{\sigma}(s)) $

三、策略目标函数

1. 稳态分布

        我们使用马尔科夫链来说明稳态分布。马尔科夫链的稳态分布是指这样一个分布向量d(s) = [d(s_{1}), \cdots, d(s_{n})]^{\mathrm{T}},其满足

d(s) = P d(s)

其中,P为状态转移矩阵。这意味着,若马尔科夫链在某个时刻达到稳态分布,则其自此以后将保持为稳态分布。我们也可以用写出稳态分布的分量表达式

$d(s_{i}) = \sum_{s \in S} d(s_{i}) p_{ij}$

        对于马尔可夫决策过程来说,其状态转移除了与当前状态有关,还与当前动作有关,故其稳态分布的每个分量i应满足

$d(s_{i}) = \sum_{s \in S} d(s) \sum_{a \in A} \pi(a|s) p(s_{i} | s, a)$

2. 总回报目标函数

        后文主要采用此目标函数说明。

$J(\theta) = E\left[\sum_{\tau=t}^{T} \gamma^{\tau - t} r_{\tau}\right]$

3. 平均回报目标函数

$J(\theta) = \lim_{N \to \infty} \dfrac{1}{N} E\left[ \sum_{\tau = t}^{t + N - 1} r_{\tau} \right]$

四、策略梯度算法

        Datawhale提供的资料里首先给出了基于轨迹的推导,而后给出了基于稳态分布的另一种推导方式。在参考资料3中,前者称为基于轨迹概念的梯度推导(Gradient Derivation from Trajectory Concept),后者称为基于级联概念的梯度推导(Gradient Derivation from Cascading Concept)。

1. 基于轨迹的梯度推导

        相关内容可见参考资料1、3。

        基于轨迹的目标函数可以表示为

$J(\theta) = E_{\mathcal{T} \sim \rho_{\theta}}[R(\mathcal{T})] = \sum_{\mathcal{T}} \rho_{\theta}(\mathcal{T}) R(\mathcal{T})$

其中,\rho_{\theta}(\mathcal{T})为轨迹\mathcal{T} = \{s_{t}, a_{t}, \cdots, s_{T-1}, a_{T-1}, s_{T}\}的生成的概率,其值为

$ \begin{aligned} \rho_{\theta}(\mathcal{T}) &= d(s_{t}) \pi_{\theta}(a_{t} | s_{t}) p(s_{t+1} | s_{t}, a_{t}) \pi_{\theta}(a_{t+1} | s_{t+1}) p(s_{t+2} | s_{t+1}, a_{t+1}) \cdots \\ &= d(s_{t}) \prod_{\tau = t}^{T-1} \pi_{\theta}(a_{\tau} | s_{\tau}) p(s_{\tau + 1} | s_{\tau}, a_{\tau}) \end{aligned}$

       简单期间,忽略折扣因子\gamma,则轨迹\mathcal{T}的累积奖励为

$R(\mathcal{T}) = \sum_{\tau = t}^{T-1} r_{\tau}$

        现在我们要对目标函数关于参数\theta求导,含参数\theta的仅有\rho_{\theta}(\mathcal{T}),故只需考虑\rho_{\theta}(\mathcal{T})关于参数\theta的梯度。采用对数微分技巧,即

$\nabla_{\theta} \rho_{\theta}(\mathcal{T}) = \rho_{\theta}(\mathcal{T}) \dfrac{\nabla_{\theta} \rho_{\theta}(\mathcal{T})}{\rho_{\theta}(\mathcal{T})} = \rho_{\theta}(\mathcal{T}) \nabla_{\theta} \log \rho_{\theta}(\mathcal{T})$

        由此,问题从求\rho_{\theta}(\mathcal{T})的梯度变成了求\log \rho_{\theta}(\mathcal{T})的梯度,将\rho_{\theta}(\mathcal{T})展开,即得

$ \begin{aligned} \nabla_{\theta} \log \rho_{\theta}(\mathcal{T}) &= \nabla_{\theta} \log d(s_{t}) + \sum_{\tau=t}^{T-1} (\nabla_{\theta} \log \pi_{\theta}(a_{\tau} | s_{\tau}) + \nabla_{\theta} \log p(s_{\tau + 1} | s_{\tau}, a_{\tau})) \\ &= \sum_{\tau=t}^{T-1} \nabla_{\theta} \log \pi_{\theta}(a_{\tau} | s_{\tau}) \end{aligned} $

        根据上面的分析,我们可以很容易地求出目标函数的梯度,即

$ \begin{aligned} \nabla_{\theta} J(\theta) &= \nabla_{\theta} E_{\mathcal{T} \sim \rho_{\theta}}[R(\mathcal{T})] = \nabla_{\theta} \sum_{\tau} \rho_{\theta}(\mathcal{T}) R(\mathcal{T}) = \sum_{\mathcal{T}} \rho_{\theta}(\mathcal{T}) \nabla_{\theta} \log \rho_{\theta}(\mathcal{T}) R(\mathcal{T}) \\ &= E_{\mathcal{T} \sim \rho_{\theta}}[\nabla_{\theta} \log \rho_{\theta}(\mathcal{T}) R(\mathcal{T})] = E_{\mathcal{T} \sim \rho_{\theta}}\left[ \sum_{\tau=t}^{T-1} \nabla_{\theta} \log \pi_{\theta}(a_{\tau} | s_{\tau}) R(\mathcal{T}) \right] \\ &= E_{\mathcal{T} \sim \rho_{\theta}}\left[ \sum_{\tau=t}^{T-1} \nabla_{\theta} \log \pi_{\theta}(a_{\tau} | s_{\tau}) \sum_{\tau=t}^{T-1} r_{\tau} \right] \end{aligned} $

2. 基于级联的梯度推导

        基于级联的目标函数可以表示为

$J(\theta) = \sum_{s_{t}} d(s_{t}) V_{\pi_{\theta}}(s_{t})$

        其中,d表示平稳分布。具体推导过程略。相关内容可见参考资料2、3、4。

        由此可得策略梯度定理

$ \begin{aligned} \nabla_{\theta} J(\theta) &\propto \sum_{s} d(s) \sum_{a} Q_{\pi_{\theta}}(s, a)\nabla_{\theta} \pi_{\theta}(a | s) ) \\ &= E_{s \sim d}[E_{a \sim \pi_{\theta}} [Q_{\pi_{\theta}}(s, a) \nabla_{\theta} \log \pi_{\theta}(a|s) ]] \\ &= E_{\pi_{\theta}}[Q_{\pi_{\theta}}(s, a) \nabla_{\theta} \log \pi_{\theta}(a|s) ] \end{aligned}$

五、REINFORCE算法/Mento Carlo策略梯度算法

        采用Mento Carlo方法对轨迹采样,并使用梯度上升法更新梯度。具体来说,主要有两个步骤:在第一步中,环境从初始状态-动作对开始,产生多个轨迹,将多个轨迹的回报平均作为真实动作值函数的估计值;在第二步中,利用不同状态-动作对的所有可用梯度来计算策略梯度。

        以下为参考资料3给出的伪代码。

六、策略梯度法的评价

1. 值函数近似法和策略梯度法的区别

  • 值函数近似法适用于基于价值的方法,策略梯度法适用于基于策略的方法
  • 值函数近似法仅支持离散动作空间,而策略梯度法可以支持连续动作空间

2. 基于价值和基于策略的算法各有什么优缺点?

基于价值:

  • 优点
    • 简单易用,只需要学习值函数,收敛性往往也更好
  • 缺点
    • 受限于离散动作
    • 当存在多个等价最优策略时,基于价值的方法可能会不停切换

基于策略:

  • 优点
    • 直接优化策略,所以可能容易找到更好的策略
    • 采用随机性策略,适用性更广,如在纸牌游戏、战争中虚张声势
  • 缺点
    • 高方差
    • 收敛缓慢,并且可能收敛到局部最优
  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值