Ⅶ. 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,\theta)=\Pr\{A_t=a|S_t=s,\theta_t=\theta\}\),其中\(s\in\mathcal{S}\),\(a\in\mathcal{A}(s)\),权重参数向量\(\theta\in\mathbb{R}^{d^\prime}(d^\prime<<|\mathcal{S}|)\),参数化后的策略不再是一个概率集合,而是一个近似函数。
相比于基于价值的RL方法,策略梯度方法的优势如下:
- 基于价值的RL方法依赖于价值函数的估计;而对策略梯度方法,价值函数可以用于学习策略的参数,但没有直接的依赖关系
- 基于价值的RL方法为了寻找最优策略,使用了\(\epsilon\)-贪心策略以\(\epsilon\)的概率选择随机动作;而策略梯度方法可以直接近似一个确定的策略,因此,具有更好的收敛性
- 基于价值的RL方法更适用于离散的动作、状态空间,即使一些改进也需要将连续的动作空间离散化,但这样的映射呈指数形式,增加求最优解的难度;而策略梯度方法在高维或连续动作空间中有效
- 基于价值的RL方法通常只能学习最优策略是确定的,而策略梯度方法可以学习本身就具有随机性的最优策略
缺点如下:
- 策略梯度方法使用梯度上升,容易收敛到局部最优解
- 同时,对策略难以进行有效评估,因为它具有很高的方差
策略梯度定义
策略函数
策略函数是在确定在时序\(t\)的状态\(s\)下,采取任何科恩那个动作的具体概率,可以看作概率密度函数。假设策略被参数化为\(\pi(a|s,\theta)\),要求\(\pi(a|s,\theta)\)对参数\(\theta\)的偏导存在,则策略梯度
\triangledown\pi(a|s,\theta) & =\pi(a|s,\theta)\frac{\triangledown \pi(a|s,\theta)}{\pi(a|s,\theta)}\\
&=\pi(a|s,\theta)\triangledown\log \pi(a|s,\theta)
\end{aligned} \tag{7.1}
\]
\(\triangledown \log\pi(a|s,\theta)\)是得分函数(score function)。
- Softmax Policy
针对离散且有限的动作空间,可以使用softmax策略,对每一个“状态-动作”二元组估计一个参数化的数值偏好\(h(s,a,\theta)\in\mathbb{R}\),然后利用softmax函数对动作加权,如
\]
此时,每个动作的概率正比于指数权重\(\pi(a|s,\theta)\propto e^{h(s,a,\theta)}\)。若参数化的偏好值为特征\(x(s,a)\)的线性组合,则\(h(s,a,\theta)=\theta^\top x(s,a)\),此时得分函数为
\]
- Gaussian Policy
针对庞大或连续的动作空间,不能直接计算每一个动作的概率,但可以学习概率分布的统计。通常可以使用Gaussian策略,即对应的动作服从高斯分布\(a\sim\mathcal{N}(\mu,\sigma^2)\),则策略可以表示为
\]
其中,均值\(\mu:\mathcal{S}\times\mathbb{R}^{d^\prime}\to\mathcal{R}\)和方差\(\sigma:\mathcal{S}\times\mathbb{R}^{d^\prime}\to\mathcal{R}^+\)是两个参数化的函数近似器。因此,参数向量可以分为两部分\(\theta=[\theta_\mu,\theta_\sigma]^\top\),同时特征向量也分为两部分\(x=[x_\mu,x_\sigma]\),均值部分可以直接使用线性函数近似,而标准差部分要求为正数,可以使用线性函数的指数形式近似
\]
此时得分函数为
\]
性能度量
有了策略函数,还要定义性能度量来衡量策略的好坏。一般将智能体累积折扣奖励的期望作为目标函数,用\(J(\theta)\)表示。利用相关策略的目标函数\(J(\theta)\)的梯度上升更新\(\theta\),从而最大化奖励的期望:
\]
在幕式任务和连续任务这两种不同的情况下,性能度量的定义是不同的:
- 起始价值(start value)
针对幕式任务,将性能度量定义为该幕起始状态的价值,即
\]
其中,\(v_{\pi_\theta}\)是执行策略\(\pi_\theta\)的真实的价值函数。适用于能够产生完整经验轨迹的环境,即从状态\(s_0\)开始,以一定的概率分布达到终止状态时序段内,智能体获得的累积奖励。
- 平均价值(average value)
在连续任务中,智能体没有明确的起始状态,可以基于智能体在时序\(t\)的状态分布,针对每个可能的状态计算从\(t\)开始持续与环境交互所能获得的奖励,并按其状态的概率分布求和,即
\]
其中,\(s\sim d_{\pi_\theta}(s)\)表示状态\(s\)服从根据策略\(\pi_\theta\)生成的马尔科夫链的状态分布。
- 每时序平均奖励(average reward per time-step)
平均价值使用时序\(t\)下状态的平均价值,而每个时序的平均奖励使用时序\(t\)的状态下所有动作的期望,即在时序\(t\)先计算出智能体所有状态的可能性,然后计算出在每一种状态下采取所有可能动作获得的即时奖励,并按其对应的概率求和,即
J_{avgR}(\theta)\doteq\mathbb{E}_{\pi_\theta}[r] &=\sum_{s\in\mathcal{S}}d_{\pi_\theta}(s)\sum_{a\in\mathcal{A}}\pi_\theta(a|s)r_{s,a} \\
&=\sum_s d_{\pi_\theta}(s)\sum_a\pi(a|s)\sum_{s^\prime,r}p(s^\prime,r|s,a)r
\end{aligned}
\]
其中,\(d_{\pi_\theta}(s)=\lim_{t\to\infty}\Pr\{s_t=s|s_0,\pi_\theta\}\)是策略\(\pi_\theta\)下状态的稳态分布,\(s_0\)独立于所有策略,\(r_{s,a}\)是状态\(s\)下执行动作\(a\)得到的即时奖励。它实际上是单步MDPs,也就是从状态\(s\sim d(s)\)开始,根据策略\(\pi\)执行动作\(a\),此时得到了一个奖励值\(r\),完成了一个时序后结束。
策略梯度定理
已经给出了策略函数和性能度量,但通过调整策略参数\(\theta\)来保证性能得到改善仍存在疑点,主要在于策略的性能既依赖于动作的选择,也依赖于动作选择时所处的状态分布,而策略\(\pi(a|s)\)的定义是已知状态\(s\)下动作\(a\)的概率,因此策略对状态分布的影响未知。这里就引出了策略梯度定理(policy gradient theorem)。
Policy Gradient Theroem
对任何可微策略\(\pi(a|s,\theta)\),任意目标函数\(J(\theta)\)的梯度都可以表示为
证明见Append。
## 策略梯度算法
### REINFORCE:Monte Carlo Policy Gradient
REINFORCE是一种蒙特卡洛算法,一般应用于幕式任务,也需要在每个幕达到终止状态后才能进行更新。
根据策略梯度定理$(7.3)$,REINFORCE的目标函数梯度可以写成
\]
\begin{aligned}
\triangledown J(\theta)
&\propto\sum_s\mu(s)\sum_a\triangledown\pi(a|s,\theta)q_\pi(s,a) \
&=\mathbb{E}\pi \bigg[\sum_a q\pi (S_t,a) \triangledown \pi(a|S_t,\theta)\bigg] \
&=\mathbb{E}\pi \bigg[\sum_a \pi(a|S_t,\theta)q\pi(S_t,a)\frac{\triangledown \pi(a|S_t,\theta)}{\pi(a|S_t,\theta)}\bigg] \
&(A_t\sim\pi,因此\sum_a \pi(a|S_t,\theta)q_\pi(S_t,a)可以用q_\pi(S_t,A_t)代替)\
&=\mathbb{E}\pi\bigg[q\pi(S_t,A_t)\frac{\triangledown \pi(a|S_t,\theta)}{\pi(a|S_t,\theta)}\bigg]\
&(根据q_\pi的定义,q_\pi(S_t,A_t)=\mathbb{E}\pi[G_t|S_t,A_t],G_t是回报值)\
&=\mathbb{E}\pi\bigg[G_t\frac{\triangledown \pi(A_t|S_t,\theta)}{\pi(A_t|S_t,\theta)}\bigg]
\end{aligned}
根据式$(7.2)$的随机梯度上升,可以得到参数的更新如下
\]
\begin{aligned}
\theta_{t+1}
&\leftarrow \theta_t+\alpha G_t\frac{\triangledown \pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)} \
&\leftarrow\theta_t+\alpha G_t\triangledown \ln \pi(A_t|S_t,\theta_t) \
\end{aligned}
参数向量$\theta$更新的大小正比于回报$G_t$,使更新朝着更利于产生最大回报动作的方向;同时,它反比于策略$\pi(A_t|S_t,\theta)$,减少非最优动作因选择频率过大导致的性能影响。
### REINFORCE with Baseline
带基线的REINFORCE算法可以看作是一种推广形式,它是在策略梯度定理$(7.3)$上添加一个不随动作$a$变化的任意基线$b(s)$,形式如下
$$\triangledown J(\theta)\propto\sum_s\mu(s)\sum_a\big(q_\pi(s,a)-b(s)\big)\triangledown_\theta \pi(a|s,\theta)\]
基线\(b(s)\)不会影响策略的梯度,因为梯度方向的单位向量之和为0,即\(\triangledown_\theta \sum_a\pi(a|s,\theta)=\triangledown_\theta 1=0\)。通常可以将状态价值函数近似\(\hat{v}(S_t,w)\),\(w\in\mathbb{R}^m\)作为基线,改良后的REINFORCE算法参数更新为
\]
Append
策略梯度定理(证明)
- 幕式情况
\triangledown J(\theta)
&=\triangledown v_\pi(s) \\
&=\triangledown \bigg[\sum_a \pi(a|s)q_\pi(s,a)\bigg] \\
&=\sum_a\Big[\triangledown\pi(a|s)q_\pi(s,a)+\pi(a|s)\triangledown q_\pi(s,a)\Big] \\
&=\sum_a \Big[\triangledown\pi(a|s)q_\pi(s,a)+\pi(a|s)\triangledown \sum_{s^\prime,r}p(s^\prime|s,a)(r+v_\pi(s^\prime))\Big] \\
&=\sum_a\Big[\triangledown\pi(a|s)q_\pi(s,a)+\pi(a|s)\sum_{s^\prime}p(s^\prime|s,a)\triangledown v_\pi(s^\prime)\Big] \\
&=\sum_a\Big[\triangledown\pi(a|s)q_\pi(s,a)+\pi(a|s)\sum_{s^\prime}p(s^\prime|s,a)\sum_{a^\prime}[\triangledown\pi(a^\prime|s^\prime)q_\pi(s^\prime,a^\prime)+\pi(a^\prime|s^\prime)\sum_{s^{\prime\prime}}p(s^{\prime\prime}|s^\prime,a^\prime)\triangledown v_\pi(s^{\prime\prime})]\Big] \\
&=\sum_{x\in\mathcal{S}}\sum_{k=0}^\infty \Pr(s\to x,k,\pi)\sum_a\triangledown\pi(a|x)q_\pi(x,a) \\
&\propto\sum_s \mu(s)\sum_a\triangledown\pi(a|s)q_\pi(s,a) \\
\end{aligned}
\]
其中,\(\Pr(s\to x,k,\pi)\)表示在策略\(\pi\)下的\(k\)步内,状态\(s\)转移到状态\(x\)的概率。
- 连续情况
\triangledown v_\pi(s)
&=\triangledown \Big[\sum_a \pi(a|s)q_\pi(s,a)\Big] \\
&=\sum_a \Big[\triangledown\pi(a|s)q_\pi(s,a)+\pi(a|s)\triangledown q_\pi(s,a)\Big] \\
&=\sum_a\Big[\triangledown\pi(a|s)q_\pi(s,a)+\pi(a|s)\triangledown\sum_{s^\prime,r}p(s^\prime,r|s,a)\big(r-r(\theta)+v_\pi(s^\prime)\big)\Big] \\
&=\sum_a\Big[\triangledown\pi(a|s)q_\pi(s,a)+\pi(a|s)[-\triangledown r(\theta)+\sum_{s^\prime}p(s^\prime|s,a)\triangledown v_\pi(s^\prime)]\Big] \\
\end{aligned}
\]
由上可以得到
\]
目标函数的梯度为
\triangledown J(\theta)
&=\triangledown r(\theta) \\
&=\sum_a\Big[\triangledown\pi(a|s)q_\pi(s,a)+\pi(a|s)\sum_{s^\prime}p(s^\prime|s,a)\triangledown v_\pi(s^\prime)\Big]-\triangledown v_\pi(s) \\
&(对前一项添加状态的权重\mu(s),\sum_s\mu(s)=1,不影响梯度)\\
&=\sum_s\mu(s)\sum_a\Big[\triangledown\pi(a|s)q_\pi(s,a)+\pi(a|s)\sum_{s^\prime}p(s^\prime|s,a)\triangledown v_\pi(s^\prime)\Big]-\triangledown v_\pi(s) \\
&=\sum_s\mu(s)\sum_a \triangledown\pi(a|s)q_\pi(s,a)+\mu(s)\sum_a\pi(a|s)\sum_{s^\prime}p(s^\prime|s,a)\triangledown v_\pi(s^\prime)-\mu(s)\sum_a \triangledown v_\pi(s) \\
&=\sum_s\mu(s)\sum_a\triangledown\pi(a|s)q_\pi(s,a)+\sum_{s^\prime}\mu(s^\prime)\triangledown v_\pi(s^\prime)-\sum_s\mu(s)\triangledown v_\pi(s) \\
&=\sum_s\mu(s)\sum_a\triangledown \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)
Ⅶ. Policy Gradient Methods的更多相关文章
- DRL之:策略梯度方法 (Policy Gradient Methods)
DRL 教材 Chpater 11 --- 策略梯度方法(Policy Gradient Methods) 前面介绍了很多关于 state or state-action pairs 方面的知识,为了 ...
- 深度学习课程笔记(十三)深度强化学习 --- 策略梯度方法(Policy Gradient Methods)
深度学习课程笔记(十三)深度强化学习 --- 策略梯度方法(Policy Gradient Methods) 2018-07-17 16:50:12 Reference:https://www.you ...
- 强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods)
强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods) 学习笔记: Reinforcement Learning: An Introduction, Richa ...
- 强化学习七 - Policy Gradient Methods
一.前言 之前我们讨论的所有问题都是先学习action value,再根据action value 来选择action(无论是根据greedy policy选择使得action value 最大的ac ...
- [Reinforcement Learning] Policy Gradient Methods
上一篇博文的内容整理了我们如何去近似价值函数或者是动作价值函数的方法: \[ V_{\theta}(s)\approx V^{\pi}(s) \\ Q_{\theta}(s)\approx Q^{\p ...
- Policy Gradient Algorithms
Policy Gradient Algorithms 2019-10-02 17:37:47 This blog is from: https://lilianweng.github.io/lil-l ...
- (转)RL — Policy Gradient Explained
RL — Policy Gradient Explained 2019-05-02 21:12:57 This blog is copied from: https://medium.com/@jon ...
- Deep Learning专栏--强化学习之从 Policy Gradient 到 A3C(3)
在之前的强化学习文章里,我们讲到了经典的MDP模型来描述强化学习,其解法包括value iteration和policy iteration,这类经典解法基于已知的转移概率矩阵P,而在实际应用中,我们 ...
- 强化学习(十三) 策略梯度(Policy Gradient)
在前面讲到的DQN系列强化学习算法中,我们主要对价值函数进行了近似表示,基于价值来学习.这种Value Based强化学习方法在很多领域都得到比较好的应用,但是Value Based强化学习方法也有很 ...
随机推荐
- H5页面字体设置
H5页面不支持 MicrosoftYaHei(微软雅黑)别傻傻的设置微软雅黑字体了 如果一定要微软雅黑操作如下 @font-face 定义为微软雅黑字体并存放到 web 服务器上,在需要使用时被自动下 ...
- Pytest 系列(25)- 标记用例级别 @allure.
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 平时写测试用例也会划分优先级 ...
- 【总结】java基础
一.基础语法 1.数据类型 (1)基本数据类型:byte(1字节,-27~27-1),short(2字节,-215~215-1),int(4字节,-231~231-1),long(8字节,-263~2 ...
- python的多线程和java的多线程之间的区别
在python中,由于Cpython解释器的全局解释器的存在,那么多线程的话在同一时刻只能有一个线程执行,意思就是python中的多线程只能并发执行, 没有办法实现真正的并行,也就是无法利用多核CPU ...
- Luogu P4280 [AHOI2008]逆序对
题目描述 甩个链接就走 题解 先预处理出每个位置上分别填上 1~k 的数的逆序对的数量的前缀和与后缀和 (不用管原来有值的,统计时不计入答案就行了) (有点绕,看代码应该能懂) 然后枚举每个 -1 的 ...
- NB-IoT成为3GPP后会有哪些优势
NB-IoT无线接入的设计使用了很多LTE设计大的原则,并且得到了传统蜂窝网络和芯片组供应商的支持,使MBB取得了成功.NB-IoT采用与LTE(E-UTRA)相同的设计原则,尽管它使用单独的新载波, ...
- Netty源码解析 -- 事件循环机制实现原理
本文主要分享Netty中事件循环机制的实现. 源码分析基于Netty 4.1 EventLoop 前面分享服务端和客户端启动过程的文章中说过,Netty通过事件循环机制(EventLoop)处理IO事 ...
- Dapr Golang HTTP 调用
Dapr Golang HTTP 调用 版本介绍 Go 版本:1.15 Dapr Go SKD 版本:0.11.1 工程结构 从上图可知,新建 3 个 Go 启动项目,cmd 为启动项目目录,其中 c ...
- c++11-17 模板核心知识(二)—— 类模板
类模板声明.实现与使用 Class Instantiation 使用类模板的部分成员函数 Concept 友元 方式一 方式二 类模板的全特化 类模板的偏特化 多模板参数的偏特化 默认模板参数 Typ ...
- Dreamweaver是怎么把图片转换成代码 简单五步骤即可解决
Dreamweaver图片转换代码图文介绍 1.打开需要转换的Photoshop作品: 2.保存为web格式,得到一个文件夹和一个html格式文件: 3.在html格式文件上单击右键,选择打开方式为D ...