您当前的位置: 首页 > 

111辄

暂无认证

  • 7浏览

    0关注

    91博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

强化学习 | 策略梯度 | Natural PG | TRPO | PPO

111辄 发布时间:2022-03-11 11:59:02 ,浏览量:7

学习情况:

 🌱 耗时10天,学习了策略梯度。从基础概念开始,对Gradient、PG (REINFORCE、Q Actor-Critic、Advantage Actor-Critic)、Natural PG、TRPO、PPO 递进学习

🌱 近1个月的学习,发现RL跟我以前做DL (偏重对某个dataset调一个好的NN structure) 不太一样,很重视理论推导,且涉及多数学概念

🌱 查阅出现的数学概念,并根据论文推导每一步,这花了我很多时间。到后面发现这点很重要,尤其在从NPG到TRPO时

🌱 前序文章1:强化学习入门笔记 | UCL silver RL | UC Berkely cs285 DRL

🌱 此篇文章2:强化学习 | 策略梯度 | Natural PG | TRPO | PPO

🌱 后序文章3:强化学习 | Multi Agents | Trust Region | HATRPO | HAPPO

🌱 后序文章4:强化学习 | Mirror Learning

🌱 全文共1.3w字,含大量手写笔记。如有理解错误,欢迎指正

博客特色:

🌟 循序渐进,从 Gradient 至 Policy Gradient 至 Natural Policy Gradient 至 TRPO 至 PPO 递进式进习,夯实基础

🌟 从概览到细节,避免一叶障目。如写TRPO时,首先总结其在目标函数和梯度更新 (基于NPG) 两方面的改进,而后进行细节推导,最后将TRPO套入 "Trust Region Algorithm" 框架中深化理解

🌟 对涉及到的数学概念均撰写注释,包括导数、偏导、方向导数、梯度、概率分布、信息几何学、黎曼流形、KL divergence、熵、信息量、Fisher矩阵、Hessian矩阵、Jacobi矩阵、Lagrange Multiplier Method、Importance Sampling、MM算法、Conjugate Gradient、Trust Region等30余数学概念

🌟 大量手写笔记,逻辑清晰

目录:

🌻 Gradient

🌻 Poliy Gradient

🌴 定义Policy Objective Function

🌴 求解Policy Gradient

🌵 MC Policy Gradient (REINFORCE)

🌵 Q Actor-Critic Policy Gradient

🌵 Advantage Actor-Critic Policy Gradient

🌵 常见Policy Gradient表达形式

🌻 Natural Policy Gradient

🌻 TRPO

🌴 TRPO核心概述

🌵 梯度更新方面的改进

🌵 目标函数方面的改进

🌴 TRPO推导细节

🌵 目标函数

🌵 梯度更新

🌴 Trust Region

🌻 PPO

🌴 PPO核心概述

🌴 PPO1:Adaptive KL Penalty Coefficient

🌵 步骤

🌵 伪代码

🌴 PPO2:Clipped Surrogate Objective

🌵 步骤

🌵 伪代码

Gradient

这一系列方法都是基于梯度的。简单复习下梯度概念,手写了下

Poliy Gradient 定义Policy Objective Function

首先,定义一下策略目标函数

求解Policy Gradient

那么对Policy Objective Function求一下Policy Gradient:

推导到上面红框里的公式后,发现对所有动作都使用同一个加权 (整条trajectory的reward),这显然不合适。

如何对每个动作都采用不同的加权呢?

很自然地想到,可以使用从此动作之后的reward (即这个动作造成的后果有多好),而非整条trajectory的reward(即所有动作累加起来的效果有多好),这就是REINFORCE的思想了,如下

MC Policy Gradient (REINFORCE)

REINFORCE算法的伪代码如下:

Q Actor-Critic Policy Gradient

 REINFORCE算法也有点问题,方差比较大,这是由于无偏估计问题:

简单比较一下使用MC采样的REINFORCE算法和使用TD采样的Q Actor-Critic算法,如下图:

Advantage Actor-Critic Policy Gradient

Q Actor-Critic可能存在这样一个问题:

当采样很少时,有的动作可能不会被取到。而这时其它被采样到的动作的Q都是正的。

这样的话,动作被Q加权后,被采样到的动作的概率在迭代中会升高,未被采样到的动作的概率在迭代中会降低(因为概率和为1)。

这并不有利于Exploration,况且未被采样到的动作的表现未必不好。

所以,我们需要 "负" 的奖励,即 "相对好",直接的思路就是引入baseline作为 "好" 与 "不好" 的基准。

这就产生了Advantage Function (优势函数) 的概念,\begin{equation} A(S, A, t)=Q(S, A)-V(S) \end{equation},这里的V(s)就是基准。

直观来理解一下,Q是在状态s下动作a的好坏,V是状态s的好坏 (其实V(s)是所有Q(s,a)的期望)。

那么如果Q>V,就是说当前动作能使当前状态更好,即相对是好的。如果Q0,即这个动作是相对好的,则该动作的概率在迭代中会被提高;如果A\mathrm{KL}_{\max } \end{equation}" class="mathcode" src="https://latex.csdn.net/eq?%5Cbegin%7Bequation%7D%20%5Cmathrm%7BKL%7D%5Cleft%28%5Ctheta%2C%20%5Ctheta%5E%7Bk%7D%5Cright%29%3E%5Cmathrm%7BKL%7D_%7B%5Cmax%20%7D%20%5Cend%7Bequation%7D" />时,减小β;\begin{equation} \mathrm{KL}\left(\theta, \theta^{k}\right)\mathrm{KL}_{\min } \end{equation}时,增大β

伪代码

PPO2:Clipped Surrogate Objective

首先定义了新旧策略间的比值r(θ),将L写成\begin{equation} L^{C P I} \end{equation}

步骤

PPO2的main objective为:

min函数:在两个式子间取最小值

clip函数:

假设ε=2,则clip函数为,\begin{equation} \operatorname{clip}\left(r_{t}(\theta), 0.8,1.2\right) \end{equation}

即当\begin{equation} r_{t}(\theta) \end{equation}1.2,则输出1.2;当\begin{equation} r_{t}(\theta) \end{equation}∈[0.8,1.2],则不裁剪,照旧输出\begin{equation} r_{t}(\theta) \end{equation}

这样就保证了新旧策略的比值在区间 [0.8,1.2] 内,即两个策略不至于相差太大

PPO采用一阶优化加限制的形式,替代TRPO中的二阶优化,使用CLIP代替复杂的KL div计算,同样使得两个策略间差异不太大

PPO2设计得很巧妙的还有一点,就是在clip函数后乘了\begin{equation} {A}_{t} \end{equation}

\begin{equation} {A}_{t} \end{equation}是有正负的啊。当这个动作 "相对好" 的时候,\begin{equation} {A}_{t} \end{equation}>0;当这个动作 "相对差" 的时候,\begin{equation} {A}_{t} \end{equation}

关注
打赏
1648114069
查看更多评论
立即登录/注册

微信扫码登录

0.0420s