Add files via upload

This commit is contained in:
Yiyuan Yang
2022-11-20 22:32:36 +08:00
committed by GitHub
parent d48e1b1415
commit 350142b0cf
9 changed files with 1544 additions and 0 deletions

View File

@@ -0,0 +1,131 @@
## A Distributional Perspective on Reinforcement Learning
作者Marc G. Bellemare, Will Dabney, Rémi Munos
出处DeepMind, ICML, 2017
论文链接https://arxiv.org/abs/1707.06887
**亮点作者提出了一种基于值分布的强化学习算法将过去强化学习算法中对累计回报的期望进行建模改为对累计回报的分布进行建模提出了一种新的算法并做了实验验证在Atari基准上超过了原有的算法**
### **Motivation (Why):**
基于值的强化学习算法只对累计回报的期望进行建模,关于分布的很多信息丢失了,如方差,分位数等信息。在风险规避的场景,更倾向于选择方差较小而不是一味地选择均值高的行为。
### **Main Idea (What):**
将原有的贝尔曼算子改为分布式贝尔曼算子,并给出了相关性质的证明,将原有的价值函数在期望上收敛到一个固定数值的理论,改为了一套关于价值函数在分布上收敛到一个固定的理论。
**贝尔曼方程**
经典的基于价值的强化学习方法尝试使用期望值对累积回报进行建模,表示为价值函数$V(x)$ 或动作价值函数 $Q(x,a)$,然后智能体把价值函数当成“地图”,根据指引选择不同状态下的行为。强化学习通常使用贝尔曼方程来描述价值函数
$$
\begin{aligned}
&Q^\pi(x, a):=\mathbb{E} Z^\pi(x, a)=\mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R\left(x_t, a_t\right)\right] \\
&x_t \sim P\left(\cdot \mid x_{t-1}, a_{t-1}\right), a_t \sim \pi\left(\cdot \mid x_t\right), x_0=x, a_0=a
\end{aligned}
$$
其中,$Z^\pi$ 表示回报是沿着智能体在策略 $\pi$ 下与环境互动的轨迹所获得的折扣奖励的总和。策略 $\pi$ 的价值函数 $Q^\pi$ 描述了从状态 $x \in X$ 采取动作 $a \in A$ ,然后根据 $\pi$ 获得的期望回报。贝尔曼方程也可以被改写成如下迭代形式:
$$
Q^\pi(x, a)=\mathbb{E} R(x, a)+\gamma \underset{P, \pi}{\mathbb{E}} Q^\pi\left(x^{\prime}, a^{\prime}\right)
$$
在强化学习中,我们通常感兴趣的是采取动作使回报最大化。最常见的方法是使用最优方程:
$$
Q^*(x, a)=\mathbb{E} R(x, a)+\gamma \mathbb{E}_P \max _{a^{\prime} \in \mathcal{A}} Q^*\left(x^{\prime}, a^{\prime}\right) .
$$
该方程具有唯一的不动点 $\mathrm{Q}^*$ ,即最优价值函数,对应于最优策略集 $\pi^*\left(\right.$ 当 $\mathbb{E}_{a \sim \pi^*} Q^*(x, a)=\max _a Q^*(x, a)_{\text {时, }} \pi^*$ 是最优的 $)$ 。 我们将价值函数视为 $\mathbb{R}^{\mathcal{X} \times \mathcal{A}}$ 中的向量并将期望奖励函数也视为这样的向量。在这种情况下Bellman算子和最优算子T定义如下:
$$
\begin{aligned}
\mathcal{T}^\pi Q(x, a) &:=\mathbb{E} R(x, a)+\gamma \underset{P, \pi}{\mathbb{E}} Q\left(x^{\prime}, a^{\prime}\right) \\
\mathcal{T} Q(x, a) &:=\mathbb{E} R(x, a)+\gamma \mathbb{E}_P \max _{a^{\prime} \in \mathcal{A}} Q\left(x^{\prime}, a^{\prime}\right)
\end{aligned}
$$
这些算子非常有用,很多强化学习算法都建立于此。特别地,它们都是压缩映射,并且它们在某些初始$Q_0$上的重复应用收敛到$Q^pi$或$Q^*$。
**分布式贝尔曼方程**
以上贝尔曼方程是基于期望的贝尔曼方程,描述的是三个随机变量期望之间的关系,即$Q^\pi(x, a), \mathbb{E} R(x, a), \gamma \underset{P, \pi}{\mathbb{E}} Q^\pi\left(x^{\prime}, a^{\prime}\right)$。其中第一项后后两项的加和,故也为期望的形式。分布式贝尔曼方程,将随机变量的期望用随机变量本身来替代,即:
$$
Z(x, a)=R(x, a)+\gamma Z(X^{\prime}, A^{\prime})
$$
其中,$Z(x,a)$ 是表示 $(x, a)$下收益的随机变量,$R(x,a)$ 表示当前回报的随机变量,$\gamma Z(X^{\prime}, A^{\prime})$ 是关于下一状态折现后收益的随机变量,物理意义上没有变化。
值分布贝尔曼算子${T}^\pi$的更新公式:
$$
\begin{aligned}
\mathcal{T}^\pi Q(x, a) &:=R(x, a)+\gamma P^\pi Z\left(x,a\right)
\end{aligned}
$$
其中,
$$
\begin{aligned}
&P^\pi Z\left(x,a\right) :\overset{D}{=} Z(X^{\prime}, A^{\prime})
\\
& X \sim P\left(\cdot \mid x, a\right), A^\prime \sim \pi\left(\cdot \mid X^\prime\right)
\end{aligned}
$$
**对分布进行估计的优点:**
1. 很多时候均值不能反应分布特点
2. 若不同行为期望相同,方差不同,仅仅考虑均值就不能做出正确选择。
### **Main Contribution (How):**
C51算法由两个重要的过程组成参数化分布投影贝尔曼更新。
**过程1参数化分布**
在任何状态-动作对(x,a)处累计折扣回报都是一个分布在对这个分布进行表示上C51采取了对随机变量空间离散化再将随机变量建模为在这些离散空间上表示的加和假设折扣累计回报$Z$的最大值为 $V_{M A X}$ ,最小值为 $V_{M I N}$ ,并将最小值与最大值之间的区间均匀离散化为 $\mathrm{N} 个$区间,则每个等分支集为 $\left\{z_i=V_{\min }+i \Delta z: 0 \leq i<N, \Delta z:=\frac{V_{M A X}-V_{M I N}}{N-1}\right\}$支集为概率密度不为0的点。因此我们可以对支集上的概率分布进建模
$$
Z_{\theta}(x,a) = z_i \quad w.p. \quad p_i(x,a):=\frac{e^{\theta_i(x,a)}}{\sum_je^{\theta_j(x,a)}}
$$
其中w.p.为with probability的缩写。
![2022-11-14 214510](img/C51_1.png)
上述图片参考自[知乎回答]([C51-值分布强化学习 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/337209047))形象地表述出了C51算法将状态-动作对(x,a)输出至函数分布的过程
**过程2投影贝尔曼更新**
<img src="img/C51_2.png" alt="2022-11-14 213502" style="zoom:67%;" />
(a)图中蓝色部分为下一个状态动作对的状态分布,经过折扣系数$\gamma$作用后变为(b)图中紫色部分,与常数随机变量回报相加后,平移后变为(c)图中映射部分。显然可以看出,值分布贝尔曼操作符是收缩的,故最终是可以收敛的。但同时会在值分布贝尔曼操作符一次又一次作用下离开原有的定义域,超出前文所述离散化的支集的范围,故我们需要一个映射$\phi$将更新后的随机变量投影到最开始的离散化支集上,这就是投影贝尔曼更新
**整体算法**
<img src="img/C51_3.png" alt="image-20221114205431206" style="zoom: 67%;" />
以上是C51算法整体的更新思想如下。将状态动作对映射到一个分布上去然后一次一次迭代这个分布使用Q-Learning的思想将现有分布和更新后分布的差值当作损失更新网络的参数直到这个分布收敛到一个固定的分布。在这个过程中有以下难点1.如何表示一个分布2. 如何衡量两个分布的差值。过程1和过程2分别解决了这两个问题。
**结果:**
<img src="img/C51_4.png" alt="2022-11-14 230104" style="zoom:50%;" />
上图是不同数量固定区间的算法在不同任务下的表现算法最终取名为C51是因为在消融实验后发现将概率分布表示为51各固定区间的概率加和后效果最佳。
<img src="img/C51_5.png" alt="2022-11-14 230144" style="zoom:67%;" />
Q函数在实验进行中一个时刻分布情况图中可以明确看出各个动作的好坏
<img src="img/C51_6.png" alt="2022-11-14 230221" style="zoom:67%;" />
作者将C51与DQN双重DQN对偶结构DQN和优先回放DQN进行了比较 比较训练期间取得的最优评估分数发现C51明显优于其他算法。并且发现C51在许多游戏中尤其是SEAQUEST大大超越了当前的最新技术水平。一个特别引人注目的事实是该算法在稀疏奖励游戏有着卓越表现。
**本文提出方法的优点:**
1. C51算法的卷积神经网络的输出不再是行为值函数而是支点处的概率神经网络学习的目标由数值变为一个分布。可以使学到的内容除了数值以外的更多信息即整个Q函数分布。
2. C51在奖励稀疏的任务下表现更好因为系数的奖励在分布式的传播中相对不容易丢失
3. C51算法的框架虽然仍是DQN算法但损失函数不再是均方差和而是KL散度可以更好地描述两个分布之间的差别。
### 个人简介
吴文昊,西安交通大学硕士在读,联系方式:wwhwwh05@qq.com

View File

@@ -0,0 +1,141 @@
# TD3: Addressing Function Approximation Error in Actor-Critic Methods 论文剖析
Scott Fujimoto, Herke van Hood, David Meger
## 一、文章信息
****
**Addressing Function Approximation Error in Actor-Critic Methods**
https://arxiv.org/abs/1802.09477
https://github.com/sfujim/TD3
## 二、写作动机
在Q-learning中噪声源自函数逼近中无法避免的不精确估计。这种不精确估计在每次更新时被不断累加并通过估计的最大化被不断估计为高值导致高估问题OverStimation。作为DQN的拓展DDPG在解决连续控制问题时也会存在高估问题。
本文借鉴Double DQN解决DQN中高估问题时的经验解决连续动作控制问题中出现的高估问题。
## 三、相关工作
### 1. DDPG
DDPG解决了DQN不能用于连续控制的问题采用基于DPG的Actor-Critic结构。其Actor部分采用估计网络 $\mu_\theta(s)$ 负责输出确定性动作其目标网络与估计网络结构相同但参数不同主要负责更新价值网络CriticCritic部分负责价值函数 $Q_{\omega}(s,a)$ 的拟合其估计网络以Actor估计网络的输出动作为输入参与Actor和Critic的优化。目标网络Critic参与Critic优化时 $Q_{target}$ 的计算。
价值网络Critic的更新主要基于TD-error的梯度下降具体更新公式如下
$$
L_{critic}=\frac{1}{N}\sum_{i}(y_i-Q(s_i,a_i|\theta^{Q}))^2
$$
策略网络Actor的更新则是基于梯度上升从而最大化价值网络输出的Q值其更新公式如下
$$
\nabla_{\theta^\mu}J \approx \frac{1}{N}\sum_i\nabla_aQ(s,a|\theta^Q)|_{s=s_i,a=\mu(s_i)} \nabla_{\theta^\mu}\mu(s|\theta^{\mu})|_{s_i}
$$
### 2. Double DQN
针对DQN中出现的高估问题Double DQN使用两个独立的估计量来进行无偏估计。其将传统DQN中最优动作选取与最优动作价值函数计算进行解耦采用目标网络 $\theta^-$ 与策略网络 $\theta$ 分别进行计算,具体计算形式如下:
$$
a^*=\substack{argmax\\{a \in \mathbb{A}}}Q(s,a|\theta_t^-)\\Y_t^Q=r+\gamma Q(S_t=s, A_t=a^*;\theta_t)
$$
通过减少traget的过估计Double DQN减少了对动作价值函数的估计。
### 3. Averaged-DQN
Averaged-DQN提出了一种不同的高估问题解决方法其聚焦于方差最小化通过平均Q值来降低target近似方差TAE并且不同于Ensemble DQNAveraged-DQN中采用最近K个版本的Q Function计算平均目标通过采用过去的target network来避免K-Fold计算获得更好的方差化简结果对Variance的计算形式如下
$$
Var[Q^A_i(s_0,a)]=\sum^{M-1}_{m=0}D_{K,m}\gamma^{2m}\sigma^2_{s_m}
$$
Averaged-DQN的计算公式如下
$$
Q^A_N(s,a)=\frac{1}{K} \sum^{K-1}_{k=0}Q(s,a;\theta_{N-k})
$$
## 四、TD3
在Double DQN中高估问题通过解耦最优动作选取与最优动作价值函数计算得到了缓解这种思路在TD3中得到了延续。作为Actor-Critic框架下的确定性强化学习算法TD3结合了深度确定性策略梯度算法和双重网络在缓解DDPG算法的高估问题时取得了优秀表现。
### 1. 双重网络
不同于DDPG中Actor-Target Actor和Critic-Target Critic的四网络结构TD3算法在DDPG的基础上新增了一套Critic_2网络。两个Target Critic网络计算出各自的Q-target后选取 $\min(targetQ_1targetQ_2)$ 作为原DDPG中 $Q(a')$ 的替代去计算更新目标Q-target公式如下
$$
Y_{target} = r+\gamma \min(targetQ_1, targetQ_2)
$$
两个Critic网络根据Actor的输出分别计算出各自的值 $Q_1,Q_2$ 后,通过 $MSE$ 计算Q值与Q-target之间的Loss进行参数更新公式如下
$$
\theta_i = argmin_{\theta_i}\frac{1}{N}\sum(y-Q_{\theta_i}(s,a))^2
$$
当Critic网络更新完成后Actor网络采用延时更新的方法通过梯度上升自我更新。target网络则是采用软更新的方式进行更新二者更新公式如下
$$
Actor:\ \nabla_{\phi}J(\phi)=\frac{1}{N} \sum\nabla_aQ_{\theta_1}(s,a)|a=\pi_{\phi}(s)\nabla_{\phi}\pi_{\phi}(s) \\
target:\ \theta=\tau\theta'+(1-\tau)\theta
$$
### 2. 目标策略平滑正则化
DDPG中采用的确定性策略会在更新Critic网络时极易被函数逼近误差所影响致使目标估计的方差值增大估值异常。TD3中引入了平滑化思想Smoothing通过向目标动作中添加正态分布噪声并求平均值来近似动作期望本质是一种正则化方法采用噪声来平滑掉Q峰值从而防止其过拟合。公式表示为
$$
a'=\pi_{\phi'}(s')+\epsilon, \\ \epsilon \sim clip(N(0, \tilde \sigma), -c,c)
$$
### 3. 延迟更新
在训练Actor和Critic网络时文章发现Actor与Critic之间的相互作用会导致Actor一直在被动的跟随Critic网络进行更新这种不稳定的状态会使得策略函数会根据不准确的估值朝着错误方向进行更新并在多次更新中累积这些差异最终陷入劣化循环。因此Actor网络需要一个稳定的Critic网络来协助其进行更新。
文章调高了Critic网络的更新频率使其高于Actor。保证先尽可能的降低估计误差确保TD-error足够小。待获得更加稳定的结果后再去协助Actor网络进行更新。
## 五、实验环节
### 1. 评估
本文采用MuJoCo连续控制任务对TD3与PPO、DDPG及其他算法进行评估其中DDPG模型通过一个两层的前馈神经网络实现并在每层之间对Actor和Critic均采用了ReLU和Tanh单元同时作者还针对原始DDPG算法进行了修改将状态和动作共同接受并输入第一层中。两个网络参数都采用Adam进行更新设置学习率为$10^{-3}$。
目标策略平滑通过添加 $\epsilon \sim N(0, 0.2)$ 实现,将其剪辑到区间$(-0.5,0.5)$。延迟更新策略设置每2次迭代更新Actor与Target Critic。在进行软更新时设置 $\tau=0.005$。
在HalfCheetah-v1、Hopper-v1等环境中学习曲线越靠上算法效果越好。具体结果如下图所示
![](img\TD_1.png)
可见TD3算法的性能相较于其他算法有较明显提升。
### 2. 消融实验
本节作者针对延迟更新策略DP、目标策略平滑TPS及双Q值学习梯度截取CDQ三个策略进行了消融实验此外作者还对Double Q-learning和Double DQN中Actor-Critic结构的有效性进行了讨论具体结果如下
<img src="img\TD_2.png" style="zoom:150%;" />
可以看到DP和TPS策略的消融实验对结果影响略小CDQ结构去掉后结果存在明显变化证明抑制无偏估计量的高估对于提升算法性能具有显著提高作用。
## 六、文章贡献
在本文中,贡献主要包括如下几点:
1. 设置类似Double DQN的网络通过两套Critic网络进行Q值估算解决了DDPG中存在的Q值高估问题并通过消融实验证明其重要性。
2. 针对Actor与Critic网络相互作用导致Actor不稳定的问题通过设置Actor延迟更新进行解决。
3. 通过添加平滑噪声的方式优化方差计算时的峰值,解决由于估值函数对真实值拟合不精确带来的方差问题。

View File

@@ -0,0 +1,46 @@
## Asynchronous Methods for Deep Reinforcement Learning
[论文地址](https://arxiv.org/abs/1602.01783)
本文贡献在于提出一种异步梯度优化框架在各类型rl算法上都有较好效果其中效果最好的就是asynchronous advantage actor-critic, A3C
- **Motivation(Why)**:基于经验回放的drl算法在一些任务上效果较差可以采用其他的方式来使用数据训练网络
- **Main Idea(What)**:使用异步并行的方式让多个agent与环境进行交互当某一个agent交互完计算梯度后就交给global进行更新更新完再同步给这个agent其他agent做同样的操作。
这里给张李宏毅老师的讲解图:
![image-20221109213901773](https://gitee.com/xyfcw/CloudPictures/raw/master/img/image-20221109213901773.png)
框架思想较为简单,但优点很多:
1. 适用范围广on/off policy、离散/连续型任务均可使用
2. 多个agent采样数据减少数据相关性训练更稳定
3. 不需要经验回放让框架不局限于off-policy同时减少内存算力消耗
4. 相较分布式所需资源更少不用gpu使用一台多核cpu机器时间更短
本文使用hogwild! 方法来更新梯度,不清楚的可参考[知乎讲解](https://zhuanlan.zhihu.com/p/30826161),下图来源此文:
![image-20221109221145358](https://gitee.com/xyfcw/CloudPictures/raw/master/img/image-20221109221145358.png)
这里举个栗子假设网络有100个参数worker i传来的梯度更新了40个参数后worker j就开始更新了当$i$更新完后前面的一些参数被j更新了被覆盖掉了但不要紧i更新完了照样把当前global参数同步给i这就是Asynchronous的意思。
A3C
![image-20221109234156910](https://gitee.com/xyfcw/CloudPictures/raw/master/img/202211092341970.png)
实验结果:
![image-20221110000219965](https://gitee.com/xyfcw/CloudPictures/raw/master/img/202211100002021.png)

View File

@@ -0,0 +1,126 @@
# Deterministic Policy Gradient AlgorithmsDPG
论文地址https://www.deepmind.com/publications/deterministic-policy-gradient-algorithms <br>
论文贡献:这篇论文提出了确定性的策略梯度算法,是对之前的随机性梯度策略算法的发展。
# 一、研究动机
在随机策略梯度算法之中,计算其目标函数需要在状态空间和动作空间进行积分,也就是说采样时需要尽可能地覆盖到所有的状态空间和动作空间,所以就需要尽可能多地采样。但是如果策略是一个确定性的策略,那么积分就只需要在状态空间上进行,这样就大大减小了需要采样的数目。
# 二、随机策略梯度算法
### 一个基本的setting<br>
整个过程被定义为一个马尔可夫决策过程Markov decision process一个轨迹状态、动作、奖励具体如下所示
$$
s_{1}, a_{1}, r_{1}..., s_{T}, a_{T}, r_{T}
$$
<br>
### 一些基本的符号定义:
随机性策略:$\pi_{\theta}(s)$
状态价值函数: $V^{\pi}(s)$
动作价值函数:$Q^{\pi}(s,a)$
### 随机策略梯度理论Stochastic Policy Gradient Theorem
策略的表现目标函数performance objective
$$ J(\pi_{\theta})=\int_{S}^{}\rho^{\pi}(s)\int_{A}^{}\pi_{\theta}(s,a)r(s,a) dads $$
该目标函数的梯度:
$$ \nabla_{\theta}J(\pi_{\theta})=\int_{S}^{}\rho^{\pi}(s)\int_{S}^{}\nabla_{\theta}\pi_{\theta}(a|s)Q^{\pi}(s,a)dads $$
$$ =E_{s\sim\rho^{\pi},a\sim\pi_{\theta}}[\nabla_{\theta}\pi_{\theta}(a|s)Q^{\pi}(s,a)] $$
理论内容:把策略参数 $\theta$ 向策略梯度的方向调整,以实现最大化目标函数。但是在实际实现的过程中,这里的期望是通过采样轨迹来实现的。同时还要关注的一个问题是这里的动作价值函数$Q^{\pi}(s,a)$要如何得到。一个思路是直接用采样中的实际累计奖励$r^{\gamma}_{t}$来估计$Q^{\pi}(s_{t},a_{t})$,这也就是REINFORCE算法。
### 随机演员-评论员算法Stochastic Actor-Critic Algorithms
算法内容:我们称动作价值函数拟合器$Q^{w}(s,a)$为评论员Critic策略$\pi_{\theta}$为演员Actor通过交替更新评论员和演员来实现最大化目标函数。更新的过程可以理解为$Q^{w}(s,a)$逐步拟合真实的动作价值函数$Q^{\pi}(s,a)$,策略$\pi_{\theta}$根据$Q^{w}(s,a)$不断地优化参数$\theta$。
注:在这个过程中会有这样一个问题:我们引入了$Q^{w}(s,a)$来估计真实的$Q^{\pi}(s,a)$,在这个过程中有可能会存在偏差。所以,文中给出两个条件,只要$Q^{w}(s,a)$满足这两个条件,那么就不会引入偏差。这两个条件为(这部分不是很重要,可跳过):
1) $$ \quad Q^{w}(s,a)=\nabla_{\theta}log\pi_{\theta}(a|s)^{T}w$$
2) $\quad$ $Q^{w}(s,a)$的参数w需要满足最小化下面这个均方误差MSE
$$ \quad \epsilon^{2}(w)=E_{s\sim\rho^{\pi},a\sim\pi_{\theta}}[(Q^{w}(s,a)-Q^{\pi}(s,a))^{2}]$$
### 离线演员-评论员算法Off-Policy Actor-Critic
该算法和原始的演员-评论员算法的区别在于用于采样轨迹的策略behaviour policy: $\beta(a|s)$和实际更新的策略target policy: $\pi_{\theta}(a|s)$)不一致,即
$$ \beta(a|s)\neq\pi_{\theta}(a|s) $$
在原始的演员-评论员算法中,每次采样来计算目标函数的时候,由于策略已经进行了更新,都需要重新采样,这样的话采样得到的轨迹的利用率就很低。所以考虑采样和实际更新的策略采用不同的策略,这样就可以提高采样的利用率。具体推导如下:
该算法中的目标函数:
$$ J_{\beta}(\pi_{\theta})=\int_{S}^{}\rho^{\beta}(s)V^{\pi}(s)ds$$
$$ \quad\quad =\int_{S}\int_{A}\rho^{\beta}(s)\pi_{\theta}(a|s)Q^{\pi}(s,a)dads$$
该算法中的目标函数的梯度:
$$ \nabla_{\theta}J_{\beta}(\pi_{\theta})\approx\int_{S}\int_{A}\rho^{\beta}(s)\nabla_{\theta}\pi_{\theta}(a|s)Q^{\pi}(s,a)dads$$
$$ =\int_{S}\int_{A}\rho^{\beta}(s)\pi_{\theta}(a|s)\nabla_{\theta}log\pi_{\theta}(a|s)Q^{\pi}(s,a)dads$$
$$ =\int_{S}\int_{A}\rho^{\beta}(s)\beta(a|s)\frac{\pi_{\theta}(a|s)}{\beta(a|s)}\nabla_{\theta}log\pi_{\theta}(a|s)Q^{\pi}(a|s)dads$$
$$ =E_{s\sim\rho^{\beta},a\sim\beta}[\frac{\pi_{\theta}(a|s)}{\beta(a|s)}\nabla_{\theta}log\pi_{\theta}(a|s)Q^{\pi}(a|s)]$$
在更新策略参数的时候,我们就用采样得到的轨迹目标函数梯度的平均(对期望的估计)更新策略的参数。这个采样过程也称为重要性采样。
# 三、确定性策略梯度算法Deterministic Policy Gradient Algorithms
确定性策略梯度算法和随机策略梯度算法最大的不同就是策略的形式(一个是带有随机性,一个是确定的),除此自外这两者的发展思路都差不多。
### 一些基本的符号定义:
确定性策略:$\mu_{\theta}(s)$
状态价值函数: $V^{\mu}(s)$
动作价值函数:$Q^{\mu}(s,a)=Q^{\mu}(s,\mu_{\theta}(s))$
### 确定性策略梯度理论Deterministic Policy Gradient Theorem
目标函数performance objective
$$ J(\mu_{\theta})=\int_{S}\rho^{\mu}(s)r(s,\mu_{\theta}(s))ds$$
$$ =E_{s\sim\rho^{\mu}}[r(s,\mu_{\theta}(s))]$$
目标函数的梯度:
$$ \nabla_{\theta}J(\mu_{\theta})=\int_{S}\rho^{\mu}(s)\nabla_{\theta}\mu_{\theta}(s)\nabla_{a}Q^{\mu}(s,a)|_{a=\mu_{\theta}(s)}ds$$
$$ =E_{s\sim\rho^{\mu}}[\nabla_{\theta}\mu_{\theta}(s)\nabla_{a}Q^{\mu}(s,a)|_{a=\mu_{\theta}(s)}]$$
理论内容:
这个和随机策略梯度理论基本上一样,就是将策略的参数向目标函数的梯度方向调整,以最大化目标函数。参数更新的数学形式的表达即为:
$$ \theta_{k+1}=\theta_{k}+\alpha E_{s\sim\rho^{\mu_{k}}}[\nabla_{\theta}\mu_{\theta}(s)\nabla_{a}Q^{\mu_{k}}(s,a)|_{a=\mu_{\theta}(s)}]$$
注意到,这里的目标函数也是期望的形式,但是和随机策略梯度算法中的目标函数不同之处在于,这里的期望是只对状态空间进行积分,而随机策略梯度算法中的目标函数是对状态空间以及动作空间进行积分。这也就意味着在通过采样估计目标函数的时候,确定性策略梯度算法需要的采样数更少。在论文中作者还证明了确定性策略梯度理论是随机策略梯度理论的一种极限情况,这一点就不列在这里了,有需要的可以去看原论文。
### 确定性演员-评论员算法Deterministic Actor-Critic Algorithms
(这里最核心的是关注$\theta$是如何更新的)
#### 同策略演员-评论员算法On-Policy Deterministic Actor-Critic
一般来说,确定性的策略在采样的时候很难有多样性,除非是在环境噪声很大的情况下。这里介绍同策略演员-评论员算法只是为了更好地理解确定性演员-评论员算法。
该算法分为两步:更新动作价值函数拟合器$Q^{w}(s,a)$的参数,使其更好地拟合真实的动作价值函数$Q^{\mu}(s,a)$;更新确定性策略$\mu_{\theta}(s)$的参数$\theta$,进行梯度上升。
数学形式如下:
$$ \delta_{t}=r_{t}+\gamma Q^{w}(s_{t+1},a_{t+1})-Q^{w}(s_{t},a_{t})$$
$$ w_{t+1}=w_{t}+\alpha_{\theta}\delta_{t}\nabla_{w}Q^{w}(s_{t},a_{t})$$
$$ \theta_{t+1}=\theta_{t}+\alpha_{\theta}\nabla_{\theta}\mu_{\theta}(s_{t})\nabla_{a}Q^{\mu_{k}}(s_{t},a_{t})|_{a=\mu_{\theta}(s)}$$
#### 异策略演员-评论员算法Off-Policy Deterministic Actor-Critic
在确定性策略梯度算法中应用异策略演员-评论员算法的原因不同于随机策略梯度算法,这里是为了使得采样得到的轨迹更加具有多样性。这里直接给出异策略演员-评论员算法中的目标函数以及目标函数梯度的形式:
$$ J_{\beta}(\mu_{\theta})=\int_{S}\rho^{\beta}(s)V^{\mu}(s)ds$$
$$ \nabla_{\theta}J_{\beta}(\mu_{\theta})\approx\int_{S}\rho^{\beta}(s)\nabla_{\theta}\mu_{\theta}(a|s)Q^{\mu}(s,a)ds$$
$$ =E_{s\sim\rho^{\beta}}[\nabla_{\theta}\mu_{\theta}(s)\nabla_{a}Q^{\mu_{k}}(s,a)|_{a=\mu_{\theta}(s)}]$$
算法更新的数学形式为:
$$ \delta_{t}=r_{t}+\gamma Q^{w}(s_{t+1},a_{t+1})-Q^{w}(s_{t},a_{t})$$
$$ w_{t+1}=w_{t}+\alpha_{\theta}\delta_{t}\nabla_{w}Q^{w}(s_{t},a_{t})$$
$$ \theta_{t+1}=\theta_{t}+\alpha_{\theta}\nabla_{\theta}\mu_{\theta}(s_{t})\nabla_{a}Q^{\mu_{k}}(s_{t},a_{t})|_{a=\mu_{\theta}(s)}$$
注意到,这里的算法更新的形式和同策略演员-评论员算法是完全一样的,这是因为我们更新参数的时候并没有用到策略梯度的期望,而是用单个采样轨迹的目标函数的梯度进行更新的,所以同策略和异策略算法在表现形式上完全一样,不同之处在于用于更新的采样轨迹,异策略算法中的采样轨迹更具有多样性。
# 四、算法总结
这篇论文介绍的核心的算法就是确定性策略的异策略演员-评论员算法,算法的大概流程就是:
1. 基于探索策略($\beta(s)$),对轨迹进行采样
2. 利用Sarsa算法或者Q-learning对$Q^{w}(s,\mu_{\theta}(s))$的参数w进行更新使其更好地拟合$Q^{\mu}(s,\mu_{\theta}(s))$
3. 利用梯度上升对确定性策略$\mu_{\theta}(s)$的参数$\theta$进行更新
4. 循环这个过程
注:关于如何更新$Q^{w}(s,\mu_{\theta}(s,a))$,这里不做具体介绍下。在实际应用算法的时候我们需要考虑如何对$Q^{w}(s,a)$$\mu_{\theta}(s)$进行建模,可以用特征工程+线性回归的方法进行建模,也可以考虑用神经网络对其进行建模,但是无论用哪种方式,要考虑建模的时候是否会引入偏差,原论文中对于$Q^{w}(s,a)$应该满足何种形式才不会引入偏差进行了详细的讨论我没有在这篇文章中列出来有需要的可以去找原论文来看。这篇文章写于2014年那时候深度学习还没有在RL中广泛的应用所以原论文有些内容并不是以深度学习广泛应用为大前提来写的我们要认识到这一点。
# 五、实验
这部分设置了三个情景来验证确定性策略梯度算法的效果。
### 连续的老虎机Continuous Bandit
#### 实验设置
分别在动作空间维数m=102550的setting下应用了stochastic actor-critic (SAC-B)、deterministic actor-critic (COPDAC-B)两种算法。这两种算法的$Q^{w}(s,a)$都是通过基于cost的相匹配特征compatible features的线性回归来建模的。SAC-B中的随机策略函数是通过高斯函数建模COPDAC-B中的探索策略也是通过高斯函数建模目标策略是一个简单的单位映射。
![](img/DPG_1.png)
#### 实验结果
可以看出COPDAC-B的效果远远好于SAC-B而且动作空间的维数越大其优势越明显。
### 连续的强化学习Continuous Reinforcement Learning
#### 实验设置
三个游戏环境分别为mountain car、pendulum、2D puddle world其动作空间都是连续的。分别在这三个游戏环境中应用stochastic on-policy actor-critic (SAC)、 stochastic off-policy actor-critic (OffPAC)、deterministic off-policy actor-critic (COPDAC)三种算法。
![](img/DPG_2.png)
#### 实验结果
可以看出来COPDAC-Q在三种环境中均表现最好。
### 章鱼手控制Octopus Arm
#### 实验设置
Octopus Arm是一个具有多个自由度的机械手这个实验的目标是这个机械手触碰到目标。实验过程中的奖励和机械手与目标之间的距离改变成正比即离目标越近奖励越多当触碰到目标或者进行了300步时一个过程结束。这里用两个感知机来建模$Q^{w}(s,a)$和$\mu_{\theta}(s)$。实验结果如下:
![](img/DPG_3.png)
#### 实验结果
可以看到,算法学到了较好的策略,触碰到目标需要的步数越来越少,一个完整过程所得到的回报越来越多。

View File

@@ -0,0 +1,351 @@
## High-Dimensional Continuous Control Using Generalised Advantage Estimation
## 广义优势估计(GAE):高维连续空间的控制的解决方案
> **John Schulman, Philipp Moritz, Sergey Levine, Michael I. Jordan and Pieter Abbeel**
>
> Department of Electrical Engineering and Computer Science
>
> University of California, Berkeley
>
> {joschu,pcmoritz,levine,jordan,pabbeel}@eecs.berkeley.edu
>
> http://arxiv.org/abs/1506.02438
### 1 引入与概览 / Introduction
* 强化学习需要解决的两个重大问题分别是**奖励分配问题credit assignment problem**和**远期奖励问题distal reward problem**我们通常使用值函数可以巧妙地解决第一个问题在DRL中直接将其交给神经网络去完成
* 在使用**随机梯度上升算法stochastic gradient ascent**时我们可以得到梯度矩阵的无偏估计unbiased estimation但其高方差的特性在时间角度上显得让人无法承受因为这样带有较大噪声的估计时序上与其他估计相混合会变成什么样子我们也不得而知
* 相比于经验回报Empirical Return**演员-评论员Actor-Critic算法**以偏差bias为代价采用神经网络来估计值函数
* 作者认为,高数据量会导致模型过拟合(高方差),但更严重的是引起的偏差无法用数据量解决——这可能导致模型发散或收敛到局部极小值
* **作者提供了一族策略梯度估计函数$\text{GAE}(\gamma, \lambda),~ \gamma, \lambda \in [0,1]$,在引入可承受的偏差同时极大降低方差**
* **作者使用GAE在高难度的3D控制环境中进行训练**
### 2 预备 / Preliminaries
#### 2.1 估计策略梯度
已知从某分布$\rho_0$采样的初始状态$s_0$,按照策略$\pi(a|s)$和状态转换分布函数$P(s'|s, a)$生成一条轨迹trajectory。在每个时间节点time step时智能体收到一个奖励$r_t = r(s_t, a_t, s_{t+1})$。因为我们需要将期望回报最大化,因此我们对期望回报$\mathbb E\left[\displaystyle \sum_{t=0}^\infty r_t \right]$求梯度:
$$
g := \nabla_\theta \mathbb E\left[ \sum_{t=0}^\infty r_t \right] = \mathbb E\left[ \sum_{t = 0}^\infty \Psi_t\nabla_\theta \log \pi_\theta(a_t|s_t) \right]
$$
> 对于上述等式的详细推导过程,在此给出一个不严谨但方便理解的版本,以值函数对参数求偏导为例:
> $$
> \begin{align}
> \frac{\part V(s;\boldsymbol \theta)}{\part \boldsymbol \theta} &=
> \frac{\part \sum_a \pi(a|s; \boldsymbol \theta)\cdot Q_\pi(s, a)}{\part \boldsymbol \theta}
> \\
> &= \sum_a\frac{\part \pi(a|s; \boldsymbol \theta)\cdot Q_\pi(s, a)}{\part \boldsymbol \theta}
> \\
> &= \sum_a\frac{\part \pi(a|s; \boldsymbol \theta)}{\part \boldsymbol \theta}\cdot Q_\pi(s, a) & \text{assume } Q_\pi \text{is independent of }\boldsymbol \theta
> \\
> &= \sum_a\pi(a|s; \boldsymbol \theta) \cdot \frac{\part \log \pi(a|s; \boldsymbol \theta)}{\part \boldsymbol \theta}\cdot Q_\pi(s, a) &\text{chain rule}
> \\
> &= \mathbb E_A\left[\frac{\part \log \pi(A|s; \boldsymbol \theta)}{\part \boldsymbol \theta}\cdot Q_\pi(s, A)\right]
> \end{align}
> $$
> Remark. 证明参考自[Shusen Wang, Deep Reinforcement Learning](https://www.bilibili.com/video/BV1rv41167yx/?is_story_h5=false&p=1&share_from=ugc&share_medium=android&share_plat=android&share_session_id=9b64fa10-a83a-4a62-8104-4b8bb316ebdb&share_source=WEIXIN&share_tag=s_i&timestamp=1667564212&unique_k=TKDw0q7&vd_source=81247b204d5fa64ef8de53fe75ccd121)
式中的$\Psi_t$可以被下面的这些表达式替换:
* $\displaystyle \sum_{t=0}^\infty r_t$:奖励总和
* $\displaystyle \sum_{t'=t}^\infty r_{t'}$:某时刻后的奖励总和
* $\displaystyle \sum_{t'=t}^\infty r_{t'} - b(s_t)$减去了基准baseline的某时刻后奖励总和
* $Q^\pi(s_t, a_t)$Q函数
* $\displaystyle A^\pi (s_t, a_t) := Q^\pi(s_t, a_t) - V^\pi(s_t)$**优势函数advantage function**
* $r_t + V^\pi(s_{t+1})- V^\pi(s_t)$TD残差temporal difference residual
#### 2.2 优势函数
仔细观察上面的几个表达式,我们会发现优势函数和第三项十分相似——如果我们将基准换成值函数,那么他只和优势函数相差一个常数。作者在文中提到在上述这么多可选项中优势函数引入的方差最低。这结合求梯度的公式不难理解。我们事先约定$V^\pi$是智能体位于某状态的未来回报的**期望**,这样优势函数就可以很好的解构成有明确意义的两部分:
$$
\displaystyle A^\pi (s_t, a_t) := \underbrace{Q^\pi(s_t, a_t)}_{在t时刻采用动作a_t后的期望回报} - \underbrace{V^\pi(s_t)}_{智能体还没有采取行动时的期望回报}
$$
我们又注意到在梯度中$A^\pi$和$\nabla_\theta \log \pi_\theta$是相乘的关系,我们就可以在训练过程中增加 “更好的” 动作被选上的概率,因为$Q$函数值低于平均值的对应的优势函数为负值,这样会让参数沿着梯度的相反方向走;同理更好的动作会让参数沿着梯度方向走,这就可以推出上面的结论。
#### 2.3 无偏的优势估计
我们在此基础上更进一步:引入参数$\gamma$
$$
\begin{align}
V^{\pi,\gamma}(s_t) & = \mathbb E_{s_{t+1}:\infty,a_{t}:\infty}
\left[ \sum_{l = 0}^\infty \gamma^lr_{t + l} \right]
\\
Q^{\pi,\gamma}(s_t, a_t) & = \mathbb E_{s_{t+1}:\infty,a_{t+1}:\infty}
\left[ \sum_{l = 0}^\infty \gamma^lr_{t + l} \right]
\\
A^{\pi, \gamma}(s_t, a_t) & = Q^{\pi,\gamma}(s_t, a_t) - V^{\pi,\gamma}(s_t)
\end{align}
$$
> Remark. 期望符号的下标意义是求期望的区间。例如值函数的区间是从本次动作和下次状态开始直至结束而Q函数则已知当此动作因此它的下标是从$a_{t+1}$开始的
这样我们可以得到策略梯度$g$的一个估计:
$$
g^\gamma
:= \mathbb E_{s_{0}:\infty,a_{0}:\infty} \left[ \sum_{t = 0}^\infty A^{\pi, \gamma}(s_t, a_t) \nabla_\theta \log \pi_\theta(a_t|s_t) \right]
$$
在我们往下讲之前先介绍一个概念并不加证明的引入一些命题(如果对证明有兴趣的话可以参看[原论文](http://arxiv.org/abs/1506.02438)
**定义1 $\gamma$-无偏($\gamma$-just** 若$A^{\pi,\gamma}$的某个逼近$\hat A$满足对任意的$t$,都有
$$
\mathbb E_{s_{0}:\infty,a_{0}:\infty}
\left[
\sum_{t = 0}^\infty \hat A_t(s_{0:\infty}, a_{0:\infty})
\nabla_\theta \log \pi_\theta(a_t|s_t)
\right]
=
\mathbb E_{s_{0}:\infty,a_{0}:\infty} \left[ \sum_{t = 0}^\infty A^{\pi, \gamma}(s_t, a_t) \nabla_\theta \log \pi_\theta(a_t|s_t) \right]
$$
我们称$\hat A$是$\gamma$-无偏的。显然满足条件的$\hat A$带入上式,其值总是等于$g^\gamma$.
**命题1** 若不论我们取怎样的$(s_t,a_t)$$\hat A$总是可以被写为$\hat A_t(s_{0:\infty}, a_{0:\infty}) = Q_t(s_{t:\infty}, a_{t:\infty}) - b_t(s_{0:t}, a_{0:t-1})$,且$\mathbb E_{s_{t+1}:\infty, a_{t+1}:\infty|s_t, a_t}[Q_t(s_{t:\infty}, a_{t:\infty})] = Q^{\pi,\gamma}(s_t, a_t)$,则$\hat A$是$\gamma$-无偏的.
可以验证,下面的几个式子都是$\gamma$-无偏的:
* $\displaystyle \sum_{l=0}^\infty \gamma^l r_{t + l}$:值函数的无偏估计
* $Q^{\pi, \gamma}(s_t, a_t)$:令第二项为零
* $A^{\pi,\gamma}(s_t, a_t)$:令第二项为值函数
* $r_t + \gamma V^{\pi, \gamma}(s_{t + 1}) - V^{\pi, \gamma}(s_t)$:和上一项相同
### 3 估计优势函数 / Advantage Function Estimation
实际上我们不可能对梯度中的项进行求期望工作,我们在实际情况中往往选择采样平均的方式来估计策略梯度:
$$
\hat g = \frac 1N \sum_{n = 1}^N \sum_{t = 0}^\infty \hat A_t^n \nabla_\theta \log \pi_\theta(a_t^n|s_t^n)
$$
注意到$\mathbb E_{s_{t+1}}[\delta_t^{V^{\pi, \gamma}}] = A^{\pi, \gamma}(s_t, a_t)$,我们构造这样的和:
$$
\hat A_t^{(k)} := \sum_{l=0}^{k - 1} \gamma^l \delta_{t + l}^V = -V(s_t) + \sum_{l = 0}^{k - 1} \gamma^l r_{t + l} + \gamma^k V(s_{t + k})
$$
在此基础上我们可以定义**广义优势估计generalised advantage estimation**
$$
\begin{align}
\hat A^{\text{GAE}(\gamma, \lambda)}_t :=& (1 - \lambda)\left( \hat A^{(1)}_1 + \lambda\hat A^{(2)}_1 + \lambda^2\hat A^{(3)}_1 + \cdots \right)\\
=& (1 - \lambda) (\delta^V_t + \lambda(\delta^V_t + \gamma\delta^V_{t + 1}) + \lambda^2(\delta^V_t + \gamma\delta^V_{t + 1}+ \gamma ^ 2\delta_{t + 2}^V) + \cdots)\\
=& (1 - \lambda)(\delta_t^V(1 + \lambda + \lambda^2 +\cdots) + \delta_{t+1}^V(\lambda + \lambda^2 + \lambda^3+\cdots) +\cdots)\\
=& \sum_{l=0}^\infty (\gamma\lambda)^l \delta_{t + l}^V
\end{align}
$$
我们考虑GAE的两种极端情况
$$
\begin{align}
\hat A^{\text{GAE}(\gamma, 0)}_t &= \delta_t &= r_t + V(s_{t+1})- V(s_t) \\
\hat A^{\text{GAE}(\gamma, 1)}_t &= \sum_{l=0}^{\infty} \gamma^l \delta_{t + l}^V &=-V(s_t) + \sum_{l = 0}^{\infty} \gamma^l r_{t + l}~\,
\end{align}
$$
若$\lambda = 0$,如果我们忽略$V$的估计误差,那么它虽然是$\gamma$-无偏的,但引入了高方差;$\lambda = 1$时方差相较于上一种情况更小,但当且仅当$V =V^{\pi, \gamma}$时才是$\gamma$无偏的否则将会引入偏差。作者提出的GAE目的在于在两个极端之间找到一个平衡点makes a compromise
再次观察上面的推导,我们不难发现
1. $\gamma$主要决定值函数$V$的缩放大小scale如果$\gamma < 1$则引入偏差(这个不难理解)
2. $\lambda < 1$且估计的$V$不准时会引入偏差
作者研究发现,**$\lambda$的最佳值比$\gamma$的最佳值要小很多,他们认为这是$\lambda$即使在$V$不准时引入的偏差要比$\gamma$小很多导致的。**基于上面的分析我们可以使用GAE给策略梯度做一个更好的估计
$$
g^\gamma \approx \mathbb E \left[
\sum_{t = 0}^\infty \nabla_\theta \log \pi_\theta(a_t|s_t) \hat A_t^{\text{GAE}(\gamma, \lambda)}
\right] =
\mathbb E \left[
\sum_{t = 0}^\infty \nabla_\theta \log \pi_\theta(a_t|s_t) \sum_{l=0}^\infty (\gamma\lambda)^l \delta_{t + l}^V
\right]
$$
其中第一个约等号去等当且仅当$\lambda = 1$
### 4 通过奖励函数设计解释GAE / Interpretations as Reward Shaping
**定义2 变换的奖励函数** 已知一个从状态空间$\mathcal S$到$\mathbb R$的任意标量函数$\Phi: \mathcal S \rightarrow \mathbb R$,以及奖励函数$r(s, a ,s')$,定义变换后的奖励函数$\tilde r$
$$
\tilde r(s, a, s') := r(s, a, s') + \gamma \Phi(s') - \Phi(s)
$$
考虑带指数衰减的变换奖励函数序列和,我们发现它与奖励函数序列和仅差一个$\Phi$
$$
\sum_{l = 0}^\infty \gamma^l \tilde r(s_{t+l}, a_t, s_{t + l + 1})
=
\sum_{l = 0}^\infty \gamma^l r(s_{t+l}, a_t, s_{t + l + 1}) - \Phi(s_t)
$$
我们可以仿照变换的奖励函数的定义来定义变换后的$V$$Q$以及优势函数$A$:
* $\tilde Q^{\pi, \gamma}(s, a) = Q^{\pi, \gamma}(s, a) - \Phi(s)$
* $\tilde V^{\pi, \gamma}(s) = V^{\pi, \gamma}(s) - \Phi(s)$ *(论文中为$V(s, a)$,笔者认为应该是$V(s)$**<u>原因是:</u>**
* $\tilde A^{\pi, \gamma}(s, a) = (Q^{\pi, \gamma}(s, a) - \Phi(s)) - (V^{\pi, \gamma}(s) - \Phi(s)) = A^{\pi, \gamma}(s, a)$
> 作者在提出这三个函数时是按照逻辑的:
>
> 1. 通过指数衰减的序列和可以直接导出$\tilde Q$
>
> 2. 已经推导出$\tilde Q$以后根据$Q$和$V$的关系
> $$
> V(s) = \sum_{a \in \mathscr A} \pi(a|s)Q(s, a)
> $$
> 若将$\tilde V$定义为上式右边的$\tilde Q$得到的结果,可以进行下列变换
> $$
> \tilde V(s) = \sum_{a \in \mathscr A} \pi(a|s)\tilde Q(s, a) =\sum_{a \in \mathscr A} \pi(a|s)[Q(s, a) - \Phi(s)]' = V(s) - \Phi(s)
> $$
>
> 3. 已知$\tilde V$和$\tilde Q$可以自然地推出$\tilde A$
>
> Remark. 吴恩达等的论文([Ng et al, 1999](http://luthuli.cs.uiuc.edu/~daf/courses/games/AIpapers/ml99-shaping.pdf)中提出这样的变换不会影响最终的最优策略optimal policy
如果$\Phi$恰好等于$V^{\pi,\gamma}$,那么$\tilde V^{\pi,\gamma} \equiv 0$
若令$\Phi = V$我们就得到了GAE
$$
\sum_{l=0}^\infty (\gamma \lambda)^l \tilde r(s_{t + l}, a_t, s_{t + l + 1}) = \sum_{l= 0}^\infty (\gamma \lambda)^l \delta_{t + l}^V = \hat A_t^{\text{GAE}(\gamma, \lambda)}
$$
---
为了更深入的了解变换中的参数$\gamma$和$\lambda$,我们引入下面的定义:
**定义3 响应函数**
$$
\chi (l;s_t, a_t) := \mathbb E[r_{t + l}|s_t, a_t] - \mathbb E[r_{t + l}|s_t]
$$
可以看出这和我们先前定义的优势函数十分相似。事实上,我们不难验证
$$
A^{\pi, \gamma}(s, a) = \sum_{l =0}^\infty \gamma^l \chi(l; s, a)
$$
通过上式我们得到:响应函数可以将优势函数在时序上进行解构的同时,也让我们将奖励分配问题量化:长时间的动作和与之对应的奖励关系与$l$远大于$0$时响应函数是否为零对应
我们将上面的表示带入策略梯度中期望函数中的那一项:
$$
\nabla_\theta \log \pi_\theta(a_t|s_t) \cdot A^{\pi, \gamma}(s_t, a_t) =
\nabla_\theta \log \pi_\theta(a_t|s_t) \sum_{l=0}^\infty \gamma^l \chi(l;s_t, a_t)
$$
如果$\gamma < 1$,我们丢弃$\displaystyle l \gg \frac 1{1 - \gamma}$的所有项,上式的估计误差随着$l$的增加而迅速下降。也就是说那些距离现在太过遥远的未来收益无法被模型遇见“forgotten”
如果$\tilde r$中的$\Phi = V^{\pi, \gamma}$,则当$l \ne0$时,响应函数恒为零,对应模型只关心立即得到的回报的情况。我们当然更希望能找到一个$V \approx V^{\pi,\gamma}$来使得时序信息可以传递。这样我们就回到了$\hat A_t^{\text{GAE}(\gamma, \lambda)}$的定义。
> 我们可以将$\lambda^l \delta_{t + l}^V$看作缩放后的TD residual以引入偏差使得$V \ne V^{\pi,\gamma}$
从响应函数的角度,我们又可以理解为取了一个更小的参数$(\gamma \lambda)$,并使模型无法预见$\displaystyle l \gg \frac 1{1 - \gamma\lambda}$的情形
### 5 逼近值函数 / Value Function Estimation
作者采用Monte Carlo方法使非线性参数的值函数向真实值进行逼近并使用信任区域算法对更新步长进行限制
$$
\begin{align}
\mathop{\text{minimize}}\limits_{\phi} ~~& \sum_{n = 1}^N \| V_\phi(s_n) - \hat V_n \|^2\\
\text{s.t.}~~& \frac 1N \sum_{n = 1}^N \frac{\| V_\phi(s_n) - V_{\phi_{old}}(s_n) \|^2}{2\sigma ^2} \le \varepsilon
\end{align}
$$
其中$\displaystyle \frac 1N\sum_{n = 1}^N \| V_{\phi_{old}}(s_n) - \hat V_n \|^2$
作者没有直接使用上面的方法,而是使用共轭梯度算法对上面的问题进行了近似,变成了下列所示的二次规划问题
$$
\begin{align}
\mathop{\text{minimize}}\limits_{\phi} ~~& g^T (\phi - \phi_{old}) \\
\text{s.t.}~~& \frac 1N \sum_{n = 1}^N (\phi - \phi_{old})^TH(\phi - \phi_{old}) \le \varepsilon
\end{align}
$$
其中$H$为优化目标的Hessian矩阵的Gauss-Newton近似:
$$
\displaystyle H= \frac 1N\sum_n j_nj_n^T = \frac 1N \sum_n \nabla_\phi V_\phi(s_n) (\nabla_\phi V_\phi(s_n))^T
$$
### 6 算法与实践 / Experiments
**策略优化**
作者使用了TRPO来解决下列的受限制的优化问题
$$
\begin{align}
\mathop{\text{minimize}}\limits_{\phi} ~~& g^T (\phi - \phi_{old}) \\
\text{s.t.}~~&
\frac 1N \overline{D}_{KL}^{\theta_{old}}(\pi_{old}, \pi_{\theta}) \le \varepsilon\\
\text{where}~~&
L_{\theta_{old}}(\theta) = \frac 1N \sum_{n = 0}^N \frac{\pi_{\theta}(a_n|s_n)}{\pi_{\theta_{old}}(a_n|s_n)}\hat A_n\\
& \overline{D}_{KL}^{\theta_{old}}(\pi_{old}, \pi_{\theta}) =
\frac 1N \sum_{n = 1}^N D_{KL}[\pi_{\theta_{old}}(\cdot | s_n) \| \pi_\theta(\cdot | s_n)]
\end{align}
$$
同样地,作者也通过将优化目标线性化以及将限制条件变成二次形式来进一步处理。
**算法**
<img src="img/GAE_1.png" alt="image-20221108130714411" style="zoom:70%;" />
**实践**
作者在倒立摆、双足运动、四组运动、站立这三个3D任务上采用相同的神经网络结构进行训练。结果如下
<img src="img/GAE_2.png" alt="image-20221108131755416" style="zoom:70%;" />
<img src="./img/GAE_3.png" alt="image-20221108131812962" style="zoom:70%;" />
### 7 讨论 / Discussion
* 策略梯度算法虽然可以将强化学习任务简化为无偏的随机梯度下降任务,但迄今为止(论文时间)其解决较为困难的控制问题的能力因其较高的采样复杂度而有所限制
* 作者提出了使用两个参数来平衡模型的方差和偏差的方法,并采用信赖域算法使模型在较为困难的控制问题中可以达到较好的效果
* 实验发现,$\lambda \in [0.9, 0.99]$时的效果最好,但仍然期待将来有方法可以自动调节$\lambda$的值
* 目前策略梯度误差与值函数估计误差之间的关系尚不明确,如果我们知道它们之间的关系,就可以根据策略梯度误差函数选择合适的值函数估计误差的度量
* 另一种可能的方法是通过相同的结构逼近策略和值函数并使用GAE优化前者。但如何将其转化为数值优化问题及该方法的收敛性仍然有待考证。如果这种方案可行则会使得策略和值函数逼近是可以共用学习到的特征以加快训练速度
* 作者虽然发现一阶的回报($\lambda = 0$)会导致过大的偏差以致较差的模型表现,但有研究表明如果进行合适的调整,模型也可以正常运行,不过这些研究局限于较低维度的状态和动作空间中。将这两类方法在同意条件下进行比较于将来的研究十分有用
### 8 思考 / Reflection
* 作者对$\lambda$和$\gamma$的作用做了合理的解释,但如果将其乘积看作是一个整体,这似乎与$\gamma$没有区别?
* 进一步解释?

View File

@@ -0,0 +1,201 @@
## Proximal Policy Optimization Algorithms论文剖析
John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, Oleg Klimov from OpenAI
### . 文章信息
Proximal Policy Optimization Algorithms
John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, Oleg Klimov from OpenAI 2017
https://arxiv.org/abs/1707.06347
### 一. 写作动机
近年来人们提出了几种不同的利用神经网络函数逼近进行强化学习的方法。主要的竞争者为基于价值的方法DQN其次基于策略的方法“Vanilla Policy Gradient”也就是最基础的策略梯度方法简称VPG。*Vanilla是个有趣的词汇本意为香草因为是冰淇淋最基本的口味所以一般用其代表最基本的意思学到了*),最后是信任区域/自然策略梯度方法TRPO。然而这三种方法存在严重的缺点
1. Deep Q-Learning在解决一些**连续动作空间**的问题上表现不佳
2. VPG算法需要先根据当前策略函数采样一批次样本使用样本更新后该批次样本失效需要重新采样所以采样效率低下
3. TRPO设计复杂不兼容参数共享dropout等结构
本文的写作动机就是使用一种使用一阶优化的方法就获得了复杂TRPO的良好的性能数据采样效率鲁棒性
### 二. 背景知识简单介绍
#### 1. 策略梯度算法
策略梯度算法将策略 $\pi$ 参数化拟合成 $\pi _\theta$ ,再通过梯度上升的方法优化参数,最常用的策略梯度有这样的形式:
$$ \hat{g}=\hat{\mathbb{E}_t}[\nabla _{\theta}log \pi_\theta(a_t|s_t)\hat{A_t}] \tag{1} $$
其中,$\hat{A_t}$为优势函数Advantage Function的估计量$\mathbb{E}_t$为有限batch的平均量。可以反过来求得Loss-function
$$ L(\theta)=\hat{\mathbb{E}}_t[\pi_\theta(a_t|s_t)\hat{A_t}](这里可能和原文不同但是由于log函数单调性其实实质是一样的) \tag{2} $$
工作的过程就是重复采样与模型优化。作者在这里说道:***听起来使用同一次采样的数据来多次更新策略的参数听起来十分诱人,但是后续实验证明了这样造成的影响是破坏性的***,这里的原因在下一部分会提及到。
#### 2. 重要性采样
##### 1为什么要使用重要性采样
首先回答上一部分提出的问题:**为什么同一次采样的数据无法直接用来多次更新?**
视线退回到策略梯度的推导。按照最初始的想法,我们想要最大化的是每一条完整的交互序列$\tau :(s_1,a_1,r_1,s_2,a_2,r_2...,s_n,a_n,r_n)$的累计奖励期望$\bar{R_\theta}(\tau)=p_\theta(\tau)R(\tau)$,通过计算策略梯度的形式通过梯度上升优化方法来更新参数,其中策略梯度为:
$\nabla \bar{R}_\theta=\mathbb{E}_{\tau\sim p_\theta(\tau)}[R(\tau)\nabla log(p_\theta(\tau))] \tag{3} $
将其改写为针对动作-状态对的策略梯度,并使用优势函数:
$$\nabla \bar{R}_\theta=\mathbb{E}_{(s_t,a_t)\sim \pi_{\theta}}[\hat{A}_t\nabla log\pi_{\theta}(a_t|s_t)] \tag{4.1} $$
$$L(\theta)=\mathbb{E}_{(s_t,a_t)\sim \pi_{\theta}}[\pi_{\theta}(a_t|s_t)\hat{A}_t ] \tag{4.2} $$
具体推导可以参考我的知乎[*强化学习笔记 -6 基于策略的方法策略梯度算法PG)与REINFORCE - 于天琪的文章*](https://zhuanlan.zhihu.com/p/549583458 )。
正因公式$(4)$中,对于期望的定义(下标)要求**用来更新的的样本$(s_t, a_t)$需要是根据当前的参数化策略$\pi_\theta$来生成的**,也就意味着我们每当使用本策略采样样本进行策略参数更新后,策略已经发生了改变,所以需要重新采样改变后策略的样本。将完整序列延伸到状态-动作对也一样适用。
所以想要重复使用之前采样的数据多次更新策略,就需要使用一定的方法改变就样本的分布,使之与新策略产生的样本同分布,这个方法就是重要性采样。
##### 2什么是重要性采样
当前有分布$p(x)$与$q(x)$,从$p(x)$中随机抽取样本计算函数$f(x)$的期望:$$\mathbb{E}_{x \sim p}[f(x)]=\int f(x)p(x)dx$$,若将其乘以**一个重要性因子$\frac{q(x)}{p(x)}$**,就可以使用分布$p(x)$中的采样来计算$q(x)$分布下$f(x)$的期望,即:
$$\mathbb{E}_{x \sim p}[\frac{q(x)}{p(x)}f(x)]=\int \frac{q(x)}{p(x)}f(x)p(x)dx=\int f(x)q(x)dx=\mathbb{E}_{x \sim q}[f(x)] \tag{5}$$
上述即重要性采样。将欲求期望的函数乘以一重要性因子(目标分布与采样分布之间的比值),即可从一分布中采样数据来计算另一分布的期望等。利用重要性采样,就可以改写原有的策略梯度:
$$\nabla \bar{R}_\theta=\mathbb{E}_{(s_t,a_t)\sim \pi_{\theta '}}[\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta '}(a_t|s_t)}\hat{A}_t\nabla log\pi_{\theta}(a_t|s_t)] \tag{6.1} $$
$$L(\theta)=\mathbb{E}_{(s_t,a_t)\sim \pi_{\theta '}}[\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta '}(a_t|s_t)}\hat{A}_t ] \tag{6.2} $$
##### 3重要性采样的特殊性质
经过重要性采样之后,可以从$p(x)$采样求得$f(x)$在$q(x)$分布下的期望,如公式$(5)$,那么是否一劳永逸?。如果计算二者的方差就会发现:
$$Var_{x \sim q}[f(X)]=\mathbb{E}_{x \sim q}[f(x)^2]-[\mathbb{E}_{x \sim q}[f(x)]^2 \tag{7.1} $$
$$Var_{x\sim p}[\frac{q(x)}{p(x)}f(x)]=\mathbb{E}_{x \sim p}[(\frac{q(x)}{p(x)}f(x))^2]-[\mathbb{E}_{x \sim p}[\frac{q(x)}{p(x)}f(x)]^2=\mathbb{E}_{x \sim q}[f(x)^2\frac{q(x)}{p(x)}]-(\mathbb{E}_{x \sim q}[f(x)])^2 \tag{7.2 }$$
二者方差并不相等,其差距在重要性权重上。如果重要性权重过大,则会导致较大的方差,进一步导致采样还是失败的。
> 举一个来自蘑菇书《Easy RL》中的例子
>
> ![image-20221101210127972](image-20221101210127972.png)
>
> 这里的红线表示f(x)的曲线绿线表示不同分布的x其中纵坐标越高在该分布中越容易被取到。其中p(x)的样本分布中计算f(x)期望为负。实际上在利用重要性采样从q中采样数据估计p时有极高的几率从q(x)分布采样到的x计算f(x)为正极少采样到x计算f(x)为负。虽然在取得为负的点计算期望时会乘以一个特别大的重要性权重使得重要性采样得到f(x)期望正确,但是前提是能采样到这样的点。在现实采样中,很有可能因为采样次数不足导致无法采样到这样的点,导致最终重要性采样失败。
所以,进行重要性采样的前提就是重要性权重不能过大,也就是**两个分布之间的差距不能过大**。这里我们使用KL散度评判两个分布的相似性。
##### 4其他想说的
在面试启元RL算法岗实习生的时候问过这样一个问题**为什么Q-Learning之流使用Reply buffer不需要重要性采样呢**当时我没答上来。
南大lamda俞扬老师的回答很容易理解。[为什么DQN不需要off policy correction? - 俞扬的回答 - 知乎](https://www.zhihu.com/question/394866647/answer/1264965104)
#### 3. KL散度
KL 散度,又可称为相对熵,是一个用来衡量两个概率分布的相似性的一个度量指标。
$\begin{equation*}
\begin{aligned}
D_{KL}(P||q) &= H(P,Q)-H(P) \\
&= \sum_iP(x_i)log \frac{1}{Q(x_i)}-\sum_i P(x_i)log \frac{1}{P(x_i)} \\
&= \sum_i P(x_i)log\frac{P(x_i)}{Q(x_i)} \\
\end{aligned}
\end{equation*}
$
KL散度越小两分布越接近。为了限制使用重要性采样的更新与采样策略分布差距不过大即限制两策略分布的KL散度$D_{KL}(\pi_\theta||\pi_{\theta '})$小。TRPO就是用了这种方法。
**注意PPO/TRPO这里的KL散度指的是两个策略网络的输出策略的分布。衡量两个网络之间参数的关系是无意义的**
#### 4. 信赖域方法
TRPO使用上一次策略$\pi_{\theta_{old}}$采样的数据来更新当前的策略$\pi_\theta$
通过限制KL散度来限制两策略分布差距
$$\mathop{\mathrm{maximize}}\limits_\theta\,\,\,{\hat {\mathbb{E}}_t[\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta'(a_t|s_t)}}\hat A_t]}\\subject\,\,\,to\,\,\,\hat{\mathbb{E}}_t[KL[\pi_{\theta_{old}}(·|s_t)\pi_\theta(·|s_t)]]\leq\delta \tag{8} $$
等价于无约束优化问题:
$$\mathop{\mathrm{maximize}}\limits_\theta\,\,\,{\hat {\mathbb{E}}_t[\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta'(a_t|s_t)}}\hat A_t}-\beta KL[\pi_{\theta_{old}}(·|s_t)\pi_\theta(·|s_t)]] \tag{9} $$
后续实验表明简单地选择一个固定的惩罚系数β用SGD优化惩罚目标方程$(9)$是不够的;还需要进行其他修改。
### 三. 近端策略优化PPO
#### 1. 近端优化裁剪PPO-clip
首先定义了$r_t(\theta)=\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta _{old}}(a_t|s_t)},so\,\,\,r(\theta_{old})=1$,损失函数转化为:
$$L(\theta)=\hat{\mathbb{E}}_t[r_t(\theta) \hat A_t] \tag{10} $$
为了惩罚过大的策略更新,设计新的损失函数:
$$L^{CLIP}(\theta)=\hat{\mathbb{E}}_t[min(r_t(\theta) \hat A_t,clip(r_t(\theta),1-\epsilon,1+\epsilon)\hat{A}_t] \tag{11} $$
其中clip()函数指的是当$r_t(\theta)\in[1-\epsilon,1+\epsilon]$时,函数输出$r_t(\theta)$;当超出上/下界时,则输出上/下界。
这里如此改造损失函数是为了**限制损失函数在一定范围内**,从而**限制梯度**,最终**限制策略参数的更新幅度**,控制前后两次策略的分布差距,使得在使用上一次策略采样的样本更新有效。
PPO-clip方法并未使用KL散度作者画图对比其他函数随着更新的变化情况![image-20221102181630708](image-20221102181630708.png)
可见随着时间步增加KL散度与损失函数均在增加加了裁剪之后的损失函数可以维持在一定水平内。
作者通过实验发现,当$\epsilon=0.2$时效果最好。
#### 2. 自适应惩罚系数PPO-Penalty
传承TRPO的思想,使用KL散度来衡量新旧策略分布之间的差距。但是这里使用了一个自适应的参数$\beta$,算法的具体流程为:
- 使用SGD优化器损失函数
$L^{KLPEN}(\theta)={\hat {\mathbb{E}}_t[\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta'(a_t|s_t)}}\hat A_t}-\beta KL[\pi_{\theta_{old}}(·|s_t)\pi_\theta(·|s_t)]]\tag{12} $
来进行策略的优化更新并预先指定一个目标KL散度$d_{targ}$
- 计算$d=\hat{\mathbb{E}}_t[KL[\pi_{\theta_{old}}(·|s_t)\pi_\theta(·|s_t)]]$更新惩罚系数$\beta$的值:
- 如果$d<d_{targ}/1.5,\beta=\beta/2$
- 如果$d>d_{targ}×1.5,\beta=\beta×2$
这里的1.5和2都是启发式的超参数目的就是当散度发生剧烈的变化时能够迅速的对惩罚系数进行调整以维持策略分布。实验表明该算法对前面说的超参数不敏感。而且能够对TRPO惩罚项中固定的超参数实现自适应调整使算法性能大幅度提升。
#### 3.PPO算法总览
使用了重要性采样PPO可以重复使用上一次的采样数据多次更新。将Loss Function更换为$L^{CLIP}\,\,or\,\,L^{KLPEN}$。
结合流行的方法加入RL中的''正则化''$entropy \quad bonus\,\,S[\pi_\theta](s_t)$为了增加探索的能力。计算advantage减少方差时候也会用到状态价值函数$V_\theta(s_t)$(有时策略与价值会共享网络),所以增加了$L_{t}^{LF}(\theta)=(V_\theta(s_t)-V_t^{targ})^2$来训练网络能够学习估计出较为真实的状态价值函数。最后的损失函数就是如下形式:
$$L_t^{CLIP+VF+S}(\theta)=\hat{\mathbb{E}}_t[L_t^{CLIP}(\theta)-c_1L_t^{VF}(\theta)+c_2S[\pi_\theta](s_t)]\tag{13}$$
算法如下
![image-20221103144745532](image-20221103144745532.png)
### 四. 实验
#### 1. 对比不同损失函数之间的差距
作者对比了不加裁剪与惩罚裁剪惩罚三种损失函数这里并未使用状态价值函数共享结构与entropy bouns即公式$(6),(10),(12)$在OpenAI MuJoCo physics engine任务上使用不同超参数的效果结果如下
![image-20221103145827303](image-20221103145827303.png)
在该任务上PPO-clip算法获得了最高的分数自适应惩罚系数分数略高于固定惩罚系数。
#### 2. 对比了其他连续控制算法
![image-20221103150107326](image-20221103150107326.png)
PPO-clip基本上超越了原有的算法。
#### 3. 成功使用PPO算法训练Humanoid Running and Steering
#### 4. 在其他Atari游戏上测试PPO算法并对比
### 五. 结论
我们引入了近端策略优化这是一组利用多个随机梯度上升时期一次采样多次利用来执行每次策略更新的策略优化方法。这些方法具有TRPO的稳定性和可靠性但实现起来要简单得多只需要对普通策略梯度实现进行几行代码更改适用于更一般的设置(例如,当为策略和值函数使用联合架构时),并且具有更好的总体性能。

View File

@@ -0,0 +1,105 @@
## Scalable trust-region method for deep reinforcement learning using Kronecker-factored approximation
learning using Kronecker-factored approximation
作者Yuhuai Wu, Elman Mansimov, Roger B. Grosse, Shun Liao, Jimmy Ba
作者单位University of Toronto Vector InstituteNew York University
论文发表来源Advances in Neural Information Processing Systems 30 (NIPS 2017)
论文发表时间2017
论文查看网址https://proceedings.neurips.cc/paper/2017/hash/361440528766bbaaaa1901845cf4152b-Abstract.html
论文贡献本文扩展了自然政策梯度的框架提出使用Kronecker因子近似曲率K-FAC与信任域来优化actor和critic作者称该方法为使用Kronecker因子信任域的actor-criticACKTR。作者认为这是第一个用于actor-critic方法的可扩展信任域自然梯度方法。该方法可以学习连续控制中的非平凡任务也直接从原始像素输入中学习离散控制策略。作者在Atari游戏的离散领域以及MuJoCo环境的连续领域中测试了该方法。与以前SOTA的actor-critic方法相比本文的方法获得了更高的奖励采样效率平均提高2-3倍。
论文代码库https://github.com/openai/baselines
### Motivation(Why)
深度RL方法使用随机梯度下降(SGD)来训练控制策略。SGD和相关的一阶方法对空间的探索效率不高交互时间比较长。自然梯度使用基于曲面的Fisher指标来做为度量梯度的最陡下降方向的指标。自然策略梯度难以精确计算梯度需要对Fisher信息矩阵求逆。TRPO通过使用Fisher向量积避免了显示存储和对Fisher矩阵求逆。但是获取一步参数更新需要求多步共轭梯度准确估计梯度需要每批都有大量样本。因此TRPO不适用于大模型且样本效率很低。
Kronecker因子近似曲率(K-FAC)是一种可扩展的自然梯度近似。在监督学习中它用更大的mini-batch能加速各种最新的大规模神经网络的训练。与TRPO不同的是每次更新成本与SGD相当保持了曲率信息均值允许使用小批量样本。由此表明将K-FAC用于策略优化可以提高当前DRL方法的样本效率。
### Main idea(What)
本文介绍了一种使用Kronecker因子信任域方法的actor-critic方法(ACKTR)。该方法是针对actor-critic的可扩展信任域优化算法。该方法使用自然策略梯度的Kronecker因子使得梯度的协方差矩阵能有效求逆。本文首次通过高斯-牛顿近似扩展自然策略梯度算法来优化值函数。
### How
#### 1.背景知识
##### 1.1 强化学习和actor-critic方法
我们考虑一个与无限视界贴现马尔科夫决策过程互动的agent为一个五元组 $(X, A, \gamma, P, r)$。agent的目标是最大化策略参数为$\theta$的折扣累积回报的期望$J(\theta)$。策略梯度方法直接参数化策略$\pi_{\theta}(a \mid s_{t}$,更新$\theta$以最大化目标$J(\theta)$。策略梯度的一般形式定义为:
![插入图片](img/ACKTR-1-1.png)
其中$\psi^{t}$通常选用为优势函数$A^{\pi}(s_{t},a_{t})$。本文参考异步优势actor-critic(A3C)方法来定义优势函数如下:
![插入图片](img/ACKTR-1-2.png)
其中 $V^{\pi}_{\phi}(s_{t})$是值网络,$V^{\pi}_{t}(s_{t})=E_{\pi}[R_{t}]$。为值网络的参数本文通过更新TD来最小化自举 $k$ 步回报 $\hat{R}_{t}$ 和预测值之间的平方差,$\frac {1}{2}\left \| \hat{r}_{t} - V^{\pi}_{\phi}(s_{t}) \right \|^{2}$.
##### 1.2 使用Kronecker因子近似的自然梯度
为了最小化非凸函数$J(\theta)$,用最陡下降法计算更新 $\nabla \theta$,最小化 $J(\theta + \nabla \theta)$。然而欧氏范数的变取决于参数 $\theta$这是不合适的因为模型的参数化是一个任意选择不应该影响优化轨迹。自然梯度法利用Fisher信息矩阵$F$构造范数-KL散度的局部二次逼近。该范数独立于概率分布类上的模型参数 $\theta$提供了更稳定更有效的更新。但是由于神经网络可能包含数百网格参数计算和存储精确的Fisher矩阵及其逆是不切实际的因此需要借助近似值。
Knonecker因子近似曲率技术使用Knonecker因子近似能对Fisher矩阵的执行有效的近似自然梯度更新。细节看如下原文:
![插入图片](img/ACKTR-1-3.png)
这种近似可以解释为假设激活和反向传播导数的二阶统计量是不相关的。有了这个近似,自然梯度更新可以有效计算。
K-FAC近似自然梯度更新只需要对与w大小相当的矩阵进行计算。也有研究将K-FAC算法扩展到卷积网络及分布式网络分布式K-FAC在训练大型现代分类卷积网络时速度提高了2-3倍。
#### 2. 方法
##### 2.1 actor-critic中的自然梯度
为了定义强化学习目标的Fisher度量本文使用策略函数定义了给定当前状态下的动作分布并在轨迹分布上取期望:
![插入图片](img/ACKTR-2-1.png)
描述一种应用自然梯度来优化critic的方法。学习critic可以被认为是一个最小二乘函数逼近问题尽管这个问题的目标是移动的。在最小二乘函数逼近中常用高斯-牛顿法,它将曲率近似高斯-牛顿矩阵 $G:=E[J^{T}J]$ ,其中 $J$ 是映射参数到输出的Jacobian矩阵。高斯-牛顿矩阵等价于高斯观测模型的Fisher矩阵。这种等价性使得我们可将K-FAC也应用到critic上。假设critic $v$的Fisher矩阵被定义为高斯分布$p(v\mid s_{t})\sim N(v;V(s_{t},\sigma^{2}))$。critic的Fisher矩阵是根据这个高斯输出分布定义的。 $\sigma$ 设为1这就是普通高斯-牛顿法。
如果actor和critic是分离的可用上面定义的指标分别应用K-FAC更新。我们可以通过假设两个输出分布的独立性来定义策略和价值分布的联合分布即 $p(a,v\mid s)=\pi(a\mid s)p(v\mid s)$ ,并构建关于 $p(a,v\mid s)$ 的Fisher度量。它与标准的K-FAC没有区别只是我们需要独立对网络输出进行采样。然后我们可应用K-FAC近似Fisher矩阵 $E_{p(\tau)}[\nabla log p(a,v|s)\nabla log p(a,v|s)^{T}]$,来进行同步更新。
此外作者还采用正则化技术。作者执行Knonecker近似所需的二阶统计量和逆的异步计算以减少计算时间。
##### 2.2 步长选择和信任域优化
采用传统的自然梯度更新会导致算法过早收敛到一个接近确定性的策略。本文采用K-FAC的信任域公式选择有效步长 $\eta$ 为
$$min(\eta_{max}, \sqrt{\frac{2\delta}{\nabla \theta^{T}\hat{F}\nabla \theta}})$$
其中学习率 $\eta$ 和信任域半径 $\delta$ 是超参数。如果actior和critic是分离的这两个参数需要分别调参。
#### 3. 相关工作
自然梯度[1]由Kakade[10]首次应用于策略梯度方法。Bagnell和Schneider[3]进一步证明[10]中定义的度量是由路径分布流形推导出的协方差度量。Peters和Schaal[19]随后将自然梯度应用到actor-critic算法中。他们提出对actor的更新执行自然政策梯度对critic的更新使用最小二乘时间差分(LSTD)方法。
然而在应用自然梯度法时有效存储Fisher矩阵和计算其逆存在着巨大的计算挑战。以前的工作限制了该方法使用兼容函数逼近器(线性函数逼近器)。为了避免计算负担,信任域策略优化(TRPO)[21]近似求解线性系统使用共轭梯度和快速Fisher矩阵-向量乘积类似于Martens[13]的工作。这种方法有两个主要缺点。首先它需要重复计算Fisher向量积不利于扩展到更大的架构即用于从Atari和MuJoCo的图像观察中学习的实验。其次它需要大量的rollout以便准确估计曲率。
K-FAC通过使用易于处理的Fisher矩阵近似和在训练过程中保持曲率统计数据的运行平均值来避免这两个问题。尽管TRPO显示出比使用Adam[11]等一阶优化器训练的策略梯度方法更好的每次迭代进展,但它的样本效率通常较低。
几种提高TRPO计算效率的方法被陆续提出。为了避免重复计算Fisher向量乘积Wang等人[27]用策略网和当前策略网的运行平均值之间的KL散度的线性近似来解决约束优化问题。Heess等[8]和Schulman等[23]在目标函数中添加KL代价作为软约束而不是信任域优化器施加的硬约束。在连续和离散控制任务的样本效率方面这两篇论文都显示了对普通策略梯度的一些改进。
最近还引入了其他actor-critic模型通过引入经验重放[27]、[7]或辅助目标[9]来提高样本效率。这些方法与本文的工作是正交的可以与ACKTR结合进一步提高样本效率。
#### 4. 实验
本文进行了一系列实验来研究以下问题:
(1)在样本效率和计算效率方面ACKTR与最先进的on-policy方法和常用的二阶优化器基线相比如何?
(2)什么是更好的临界优化范数?
(3)与一阶方法相比ACKTR随批量规模缩放的性能如何?
作者在两个标准基准测试平台上评估了提出的方法ACKTR。
##### 4.1 离散控制
经过1000万时间步训练的6款Atari游戏的结果如图1所示并与A2C和TRPO2进行比较。在所有游戏中ACKTR在样本效率(即每时间步数的收敛速度)方面显著优于A2C。我们发现TRPO只能在1000万时间步内学习两款游戏即《Seaquest》和《Pong》并且在样本效率方面表现不如A2C。
![插入图片](img/ACKTR-1.png)
表1是在六款Atari 2600游戏上对离散控制任务的实验评估数据。
![插入图片](img/ACKTR-2-2.png)
##### 4.2 连续控制
作者在MuJoCo[中进行连续控制任务的模拟。由于高维动作空间和探索连续控制任务有时更具挑战性。经过100万个时间步训练的8个MuJoCo环境的结果如图3所示。本文的模型在8个MuJoCo任务中的6个任务上显著优于基线在其他两个任务(Walker2d和Swimmer)上与A2C具有竞争力。
![插入图片](img/ACKTR-2-3.png)
##### 4.3 是一个优化critic的更好范式吗
之前的自然策略梯度方法只对actor应用自然梯度更新。本文作者还建议对critic应用自然梯度更新。区别只在于选用什么范式来对critic进行最快的梯度下降;即2.2节中定义的范式 $\left \| \cdot \right \| _{B}$。此处将ACKTR应用于actor并比较了使用一阶方法(即欧氏范数)和使用ACKTR(即高斯-牛顿定义的范数)进行临界优化。图5 (a)和(b)显示了连续控制任务《HalfCheetah》和雅达利游戏《Breakout》的结果。我们观察到无论我们使用哪种范式来优化critic与基线A2C相比对actor应用ACKTR会带来改进。
![插入图片](img/ACKTR-3.png)
然而,使用高斯-牛顿范数优化critic所带来的改进在训练结束时的样本效率和情景奖励方面更为显著。此外,高斯-牛顿范数也有助于稳定训练,因为我们观察到在带有欧氏范数的随机种子上的结果有更大的差异。作者发现自适应高斯-牛顿算法并没有比普通的高斯-牛顿算法提供任何显著的改进。
##### 4.4 ACKTR在挂钟时间上与A2C相比如何?
我们将ACKTR与基准A2C和TRPO进行了比较。表3显示了6款Atari游戏和8个MuJoCo(来自状态空间)环境下的平均每秒时间步数。
![插入图片](img/ACKTR-3-1.png)
所得结果与之前的实验设置相同。注意在MuJoCo中任务片段是按顺序处理的而在Atari环境中片段是并行处理的;因此更多的帧是在Atari环境中处理的。从表中我们可以看到ACKTR每个时间步最多只增加25%的计算时间,证明了它的实用性和很大的优化效益。
##### 5.5 ACKTR和A2C在不同批处理大小下的表现如何?
我们比较ACKTR和基线A2C在不同批处理大小下的表现。我们试验了160和640的批次大小。图5 (c)显示了以时间步数表示的奖励。
![插入图片](img/ACKTR-3.png)
我们发现批次大小较大的ACKTR与批次大小较小的ACKTR表现一样好。但是随着批量的增加A2C的样本效率下降明显。这与图5 (d)中的观察结果相对应在图5 (d)中我们根据更新次数绘制了训练曲线。我们发现与使用A2C相比使用更大批处理的ACKTR的好处大大增加。这表明在分布式设置中ACKTR有很大的加速潜力在这种情况下需要使用大的mini-batch。
#### 5. 结论
本文提出了一个用于深度强化学习的样本效率高且计算成本低的信任域优化方法。作者使用一种称为K-FAC的技术来近似actor-critic方法的自然梯度更新并对稳定性进行信任域优化。本文第一个提出使用自然梯度更新优化actor-critic。作者在Atari游戏和MuJoCo环境中测试了ACKTR方法观察到与一阶梯度方法(A2C)和迭代二阶方法(TRPO)相比样本效率平均提高了2到3倍。由于本文算法的可扩展性该方法也是第一个直接从原始像素观测空间的连续控制中的训练几个非平凡任务的技术。
总结本文针对TRPO样本效率不高不易扩展的问题结合自然策略梯度kronecker因子近似技术提出了带有信任域的knonecker因子近似技术用于优化actor-critic方法。本文方法通过离散控制和连续控制实验表明明显提高了样本效率和可扩展性。
#### 6. 个人简介
汪莉娟:天津大学研究生,专业方向为控制科学与工程,主要研究方向为交通优化与智能控制。

View File

@@ -0,0 +1,165 @@
# SAC算法
原论文:[Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor](https://arxiv.org/abs/1801.01290)
SAC算法是off-policy算法此前的off-policy算法存在采样复杂性高和难收敛的问题使得超参数十分敏感SAC算法通过在最大预期return的同时最大化熵值也就是尽量获得最高累计收益的同时保持探索避免过早掉入局部最优解。SAC结合已有的off-policy模型actor-critic框架使得在不同的随机种子上都能达到SOTA效果。
## 介绍
深度强化学习的快速发展给机器人控制领域带来了许多进展。此前的工作中面向连续控制任务的算法有TRPO、PPO、DDPG等算法。
PPO是一种on-policy面向离散和连续控制的算法在许多数据集上取得了较好的效果但是存在严重的采样效率低下的问题这对于真实环境中的控制问题采样花费来说是难以接受的DDPG是一种off-policy的面向连续控制的问题比PPO采样效率高但是DDPG训练了一种确定性策略deterministic policy在每个状态下只选择一个最优的动作这样很容易掉入局部最优解的情况。
在连续控制问题中SAC算法结合已有actor-critic框架使用随机策略stochastic policy最大累计收益的同时也保持熵值最大化提升了采样效率增强了智能体的探索能力避免了过早陷入局部最优解的情况同时也增强了模型在不同初始环境的泛化能力和鲁棒性。
## 预备知识
### 最大熵强化学习
传统的强化学习是最大化累计回报值:
$$
J(\pi)=\sum_t\mathbb{E}_{(s_t,a_t)\sim\rho_\pi}[r(s_t,a_t)]
$$
而最大熵的RL算法的目标函数为
$$
J(\pi)=\sum^{T}_{t=0}\mathbb{E}_{(s_t,a_t)\sim\rho_\pi[r(s_t,a_t)+\alpha\mathcal{H}(\pi(\cdot|s_t))]}
$$
其中$\alpha$为熵的温度系数超参数,用于调整对熵的重视程度。$\mathcal{H}(\pi(\cdot|s_t))$是熵值,可表示为$\mathcal{H}(\pi(\cdot|s_t))=-\mathbb{E}_{s_t}[\log \pi(\cdot|s_t)]$。
在累计回报值中加入熵值的目的是使策略随机化stochastic在遇到一个state有多个同样优秀的动作时鼓励探索可以随机从这些动作中选出一个形成trajectory而不是总选择同一个确定性策略deterministic导致模型最终无法学到全局最优解。
## Soft policy Iteration
在model-free强化学习policy iteration中常将策略更新过程分为policy evaluation和policy improvement两个阶段。
### Soft policy evaluation
标准的Q function
$$
Q^\pi(s,a)=r(s,a)+\gamma\mathbb{E}_{(s^\prime,a^\prime)\sim\rho_\pi}[Q(s^\prime,a^\prime)]
$$
标准的V function
$$
V^\pi(s)=\mathbb{E}_{(s_t,a_t)\sim\rho_\pi}[Q(s^\prime,a^\prime)]
$$
在标准的方程中引入熵得到Soft Value Function
Soft Q function:
$$
Q^\pi_{soft}(s,a)=r(s,a)+\gamma\mathbb{E}_{(s^\prime,a^\prime)\sim\rho_\pi}[Q(s^\prime,a^\prime)-\alpha\log(\pi(a^\prime|s^\prime))]
$$
Soft V function:
$$
V^\pi_{soft}(s^\prime)=\mathbb{E}_{(s^\prime,a^\prime)\sim\rho_\pi}[Q_{soft}(s^\prime,a^\prime)-\alpha\log(\pi(a^\prime|s^\prime))]
$$
由此可得Soft Q和V的Bellman方程
$$
Q^\pi_{soft}(s,a)&=&r(s,a)+\gamma\mathbb{E}_{(s^\prime,a^\prime)\sim\rho_\pi}[Q(s^\prime,a^\prime)-\alpha\log(\pi(a^\prime|s^\prime))]\\
&=&r(s,a)+\gamma\mathbb{E}_{s^\prime\sim\rho}[V^\pi_{soft}(s^\prime)]
$$
在固定policy下使用soft Bellman equation更新Q value直到收敛。
### Soft policy improvement
stochastic policy的重要性面对多模的multimodal的Q function传统的RL只能收敛到一个选择左图而更优的办法是右图让policy也直接符合Q的分布。
![image-20221114144947405](img/SAC_1.png)
为了适应更复杂的任务MERL中的策略不再是以往的高斯分布形式而是用基于能量的模型energy-based model来表示策略:
$$
\pi(a_t|s_t)\propto exp(-\mathcal{E}(s_t,a_t))
$$
为了让EBP和值函数联系起来设置$\mathcal{E}(s_t,a_t)=-\frac{1}{\alpha}Q_{soft}(s_t,a_t)$,因此$\pi(a_t|s_t)\propto exp(-\frac{1}{\alpha}Q_{soft}(s_t,a_t))$
由soft v function变形可得
$$
\pi(s_t,a_t)&=&exp(\frac{1}{\alpha}Q_{soft}(s_t,a_t)-V_{soft}(s_t))\\
&=&\frac{exp(\frac{1}{\alpha}Q_{soft}(s_t,a_t)}{exp(\frac{1}{\alpha}V_{soft}(s_t))}
$$
定义softmax注意此处softmax和神经网络不同神经网络中的softmax实际上是求分布的最大值soft argmax
$$
softmax_af(a):=\log\int expf(a)da
$$
因此$V_{soft}(s_t)=\alpha softmax_a(\frac{1}{\alpha}Q_{soft}(s_t,a_t))$
根据Soft Q function可化为softmax形式
$$
Q_{soft}(s_t,a_t)=\mathbb{E}[r_t+\gamma softmax_aQ(s_{t+1},a_{t+1})]
$$
因此整个Policy Iteration流程可总结为
**soft policy evaluation:**固定policy使用Bellman方程更新Q值直到收敛
$$
Q^\pi_{soft}(s,a)=r(s,a)+\gamma\mathbb{E}_{(s^\prime,a^\prime)\sim\rho_\pi}[Q(s^\prime,a^\prime)-\alpha\log(\pi(a^\prime|s^\prime))]
$$
**soft policy improvement:**更新policy
$$
\pi^\prime=\arg\min_{\pi_k\in \prod}D_{KL}(\pi_k(\cdot|s_t)||\frac{exp(\frac{1}{\alpha}Q^\pi_{soft}(s_t,\cdot))}{Z_{soft}^\pi(s_t)})
$$
## Soft Actor-Critic框架
![image-20221114145922245](img/SAC_2.png)
SAC算法的构建首先是神经网络化我们用神经网络来表示Q和Policy$Q_\theta(s_t,a_t)$ 和 $\pi_\phi(a_t|s_t)$。Q网络比较简单几层的MLP最后输出一个单值表示Q就可以了Policy网络需要输出一个分布一般是输出一个Gaussian包含mean和covariance。下面就是构建神经网络的更新公式。
### Critic
构造两个Q网络参数通过每次更新Q值小的网络参数Q网络的损失函数为
$$
J_Q(\theta)=\mathbb{E}_{(s_t,a_t,s_{t+1})\sim \mathcal{D}}[\frac{1}{2}(Q_\theta(s_t,a_t)-(r(s_t,a_t)+\gamma V_{\bar{\theta}}(s_{t+1})))^2]
$$
$\bar{\theta}$是target soft Q网络的参数带入V的迭代表达式
$$
J_Q(\theta)=\mathbb{E}_{(s_t,a_t,s_{t+1})\sim \mathcal{D}}[\frac{1}{2}(Q_\theta(s_t,a_t)-(r(s_t,a_t)+\gamma (Q_{\bar \theta}(s_{t+1},a_{t+1})-\alpha\log(\pi(a_{t+1}|s_{t+1})))))^2]
$$
### Actor
Policy网络的损失函数为
$$
J_\pi(\phi)&=&D_{KL}(\pi_k(\cdot|s_t)||\frac{exp(\frac{1}{\alpha}Q^\pi_{soft}(s_t,\cdot))}{Z_{soft}^\pi(s_t)})\\
&=&\mathbb{E}_{s_t\sim\mathcal{D},a\sim\pi_\phi}[\log\pi_\phi(a_t|s_t)-\frac{1}{\alpha}Q_\theta(s_t,a_t)+\log Z(s_t)]
$$
其中策略网络的输出是一个动作分布即高斯分布的均值和方差这里的action采用重参数技巧来获得
$$
a_t=f_\phi(\epsilon_t;s_t)=f^\mu_\phi(s_t)+\epsilon_t\cdot f^\mu_\phi(s_t)
$$
### Update temperature
前面的SAC中我们只是人为给定一个固定的temperature$\alpha$作为entropy的权重但实际上由于reward的不断变化采用固定的temperature并不合理会让整个训练不稳定因此有必要能够自动调节这个temperature。当policy探索到新的区域时最优的action还不清楚应该调高temperature 去探索更多的空间。当某一个区域已经探索得差不多最优的action基本确定了那么这个temperature就可以减小。
通过构造一个带约束的优化问题让熵权重在不同状态下权重可变得到权重的loss
$$
J(\alpha)=\mathbb{E}_{a_t\sim\pi_t}[-\alpha \log \pi_t(a_t|\pi_t)-\alpha\mathcal{H}_0]
$$
soft actor-critic算法用伪代码可表示为
<img src="img/SAC_3.png" alt="image-20221114144621522" style="zoom:50%;" />
## 实验
![image-20221114144417760](img/SAC_4.png)
在连续控制的benchmark上表现效果比大多数SOTA算法DDPG、PPO、SQL、TD3好。
## 总结
基于最大熵的强化学习算法优势:
1学到policy可以作为更复杂具体任务的初始化。因为通过最大熵policy不仅仅学到一种解决任务的方法而是所有all。因此这样的policy就更有利于去学习新的任务。比如我们一开始是学走然后之后要学朝某一个特定方向走。
2更强的exploration能力这是显而易见的能够更容易的在多模态reward multimodal reward下找到更好的模式。比如既要求机器人走的好又要求机器人节约能源。
3更robust鲁棒更强的generalization。因为要从不同的方式来探索各种最优的可能性也因此面对干扰的时候能够更容易做出调整。干扰会是神经网络学习过程中看到的一种state既然已经探索到了学到了就可以更好的做出反应继续获取高reward
虽然SAC算法采用了energy-based模型但是实际上策略分布仍为高斯分布存在一定的局限性。

View File

@@ -0,0 +1,278 @@
## Trust Region Policy Optimization
## (信任域策略优化)
作者:John Schulman, Sergey Levine, Pieter Abbeel, Michael Jordan, Philipp Moritz
作者单位University of California, Berkeley, Department of Electrical Engineering and Computer Sciences
论文发表来源Proceedings of the 32nd International Conference on Machine Learning, PMLR 37:1889-1897
论文发表时间2015
论文查看网址https://proceedings.mlr.press/v37/schulman15.html
论文贡献:本文通过对理论证明的方案进行一些近似,开发了一种保证单调改进优化控制策略的方法,称为信任域策略优化(TRPO)。该方法的近似偏离了理论但是侧重于给出单调改进几乎不需要调整超参数。该方法适用于神经网络等大型非线性策略的优化。本文通过模拟机器人和Atari游戏的实验既证明了该方法在各种任务中表现很稳健也为未来训练结合感知和控制的机器人控制器提供一个可能的统一方案。该方法降低了样本复杂度为后续的复杂策略学习任务提供了算法基础。简单来说本文的单调改进方法将难以应用的策略梯度优化理论变成了可以实际应用的策略梯度优化算法。
### Motivation(why):
基于梯度的优化算法比无梯度优化算法有更好的样本复杂度,但是在连续控制问题中,基于梯度的方法对于无梯度随机搜索的表现并不令人满意。在具有大量参数的监督学习任务中,连续梯度优化对于学习函数的逼近表现非常成功。如果将连续梯度优化扩展到强化学习,将能更有效的学习出复杂而强大的控制策略。
### Main Idea(what)
本文首先证明了最小化某个代理损失函数保证了策略改进与非平凡补偿然后对理论证明的算法进行一系列逼近得到一个实用的算法本文称之为信任域策略优化。本文描述了该算法的两个变体一个是可应用于无模型设置的单路径方法另一个是vine方法该方法要求系统恢复到特定状态这通常只在仿真中可能。这些算法是可扩展的可以优化具有成千上万个参数的非线性策略。这在以前是无模型策略搜索的主要挑战。
### How
#### 1. 前提
将一个无限水平贴现马尔科夫决策过程(MDP)定义为一个元组 $<S,A,P,c,\rho_{0},\gamma>$ $S$ 是有限状态集,$A$ 是有限动作集,$P:S\times A\times S \to R$ 是转移概率分布,$c:S\to R$ 是代价函数,$\rho_{0}:S\to R$ 是初始状态 $s_{0}$ 的分布,$\gamma \in(0,1)$ 是折扣因子。
令 $\pi$ 表示随机策略 $\pi:S\times A \to [0,1]$,令 $\eta(\pi)$ 表示期望折扣代价,则有:
![在这里插入图片描述](img/TRPO-0.png#pic_center)
状态动作值函数 $Q_{\pi}$ ,值函数 $V_{\pi}$ ,优势函数 $A_{\pi}$ 标准定义如下:
![在这里插入图片描述](img/TRPO--0.png#pic_center)
则随着时间步的累积,根据 $\pi\$ 的优势表达了另一个策略 $\tilde{\pi}$ 的期望代价如公式(1):
![在这里插入图片描述](img/TRPO--1.png#pic_center)
令$\rho_{\pi}$为非归一化的折扣访问频率,则
![在这里插入图片描述](img/TRPO-2.png#pic_center)
将公式(1)重新排列为对状态求和,则有公式(2):
![在这里插入图片描述](img/TRPO--2.png#pic_center)
这个公式意味着对于任意策略更新 $\pi \to \tilde{\pi}$ 保证减少 $\eta$,或在期望优势处处为 $0$ 的情况下使其保持不变,$\tilde{\pi}$ 在每个状态 $s$ 都有一个非正的期望优势,即 $\sum_{a}\tilde{\pi}(a|s)A(\pi)(s,a)\le 0$。这意味着由精确策略迭代执行更新的经典结果。然而,在近似设置中,由于估计和近似误差,某些状态的预期优势为正通常是不可避免的,即 $\sum_{a}\tilde{\pi}(a|s)A(\pi)(s,a)\ge 0$。
$\rho_{\tilde{\pi}}$ 对 $\tilde{\pi}$ 的复杂依赖使得公式(2)难以直接优化。于是本文引入下面对 $\eta$ 的局部逼近:
![在这里插入图片描述](img/TRPO--3.png#pic_center)
然而,如果我们有一个参数化的策略 $\pi_{\theta}$ ,其中 $\pi_{\theta}(a|s)$ 是参数向量 $\theta$ 的可微函数,则 $L_{\pi}$ 对 $\eta$ 到一阶。那就是说,对于任意参数值 $\theta_{0}$,有
![在这里插入图片描述](img/trpo--4.png#pic_center)
公式(4)表明能改进 $L_{\pi_{old}}$ 的充分小一步更新 $\pi_{\theta_{0}}\to \tilde(\pi)$ 也能改进 $\eta$ ,但是我们无法知道这一步的大小如何。为解决该问题Kakade & Langford (2002)提出一种保守策略迭代的策略更新方案,为 $\eta$ 的改进提供了明确的下界。
为定义保守策略迭代更新,令 $\pi_{old}$ 表示当前策略,假设可解 $\pi'=argmin_{\pi'}L_{\pi_{old}}(\pi')$ 。新策略 $\pi_{new}$ 取为混合策略,如公式(5)
![在这里插入图片描述](img/trpo--5.png#pic_center)
Kakade and Langford证明了这个更新的下述结果
![在这里插入图片描述](img/TRPO--8.png#pic_center)
$\epsilon$是$\pi'$相对于$\pi$的最大优势(或正或负),等式(6)给出了更简单的界。这个界当$\alpha \ll 1$时有点弱。这个界只适用于等式(5)生成的混合策略。混合策略不适用于实际情况,对于所有一般随机策略需要一个实际的策略更新方案。
#### 2. 一般随机策略的单调改进保证
公式(6)意味着改进公式右边就能保证改进真实的期望代价目标 $\eta$。本文的主要理论结果是,通过用 $\pi$ 和 $\tilde{\pi}$ 之间的距离度量来替换 $\alpha$,公式(6)中的策略改进边界可以扩展到一般的随机策略,而不是仅适合于混合策略。这一结果对于将改进保证扩展到实际问题是至关重要的。对于离散概率分布 $p,q$ ,定义两个策略之间的总变分散度为:
![在这里插入图片描述](img/TRPO--9.png#pic_center)
定理1.令 $\alpha=D^{max}_{TV}(\pi_{old},\pi_{new})$,令 $\epsilon=max_{s}\left | E_{a\sim\pi'(a|s)}[A_{\pi}(s,a)]\right |$,则公式(8)成立。证明在附录。
我们注意到变分散度和KL散度之间有这样的关系$D_{TV}(p||q)^2 \le D_{KL}(p||q)$。令 $D^{max}_{KL}(\pi, \tilde{\pi}) = max_{s}D_{KL}(\pi(\cdot|s))$,可从公式(8)直接推导出下面的界,即公式(10):
![在这里插入图片描述](img/TRPO--10.png#pic_center)
![在这里插入图片描述](img/TRPO-11.png#pic_center)
算法1描述了基于公式(10)中策略改进边界的近似策略迭代方法。注意,我们假设了优势值$A_{\pi}$ 的精确评估。
由公式(10)可知算法1保证生成一系列单调改进策略 $\eta(\pi_{0})\ge\eta(\pi_{1})\eta(\pi_{2})\ge ...$。令
![在这里插入图片描述](img/TRPO--11.png#pic_center)
通过每次迭代中最小化 $M_{i}$,我们可以保证真正的目标 $\eta$ 是不增加的。这个算法是一种majorization-minimization(MM)算法这是一类包括期望最大化的方法。在MM算法中$M_{i}$ 是代理函数,优化 $\eta$ 等于 $\pi_{i}$ 。该算法也联想到近端梯度法和镜像下降法。下一节中提出的信任域策略优化是算法1的近似算法1使用对KL发散的约束而不是惩罚来健壮的允许大的更新。
#### 3.参数化策略的优化
本节讲述了在有限样本数和任意参数化的基础上,如何从理论基础得出一个应用算法。
因为我们用参数向量 $\theta$ 考虑了参数化策略 $\pi_{\theta}(a|s)$,因此我们用函数 $\theta$ 而不是 $\pi$ 重载以前的策略表示。优化目标为下式:
![在这里插入图片描述](img/TRPO-13.png#pic_center)
如果采用上式的惩罚系数 $C$ 步长会非常小以稳健方式采取更大步骤的一种方法是对新旧策略之间的KL散度使用约束即信任域约束如公式(12):
![在这里插入图片描述](img/TRPO--12.png#pic_center)
公式(12)强加了约束条件即KL散度在状态空间的每个点上都是有界的。本文使用一种考虑平均KL散度的启发式近似
![在这里插入图片描述](img/TRPO-12.png#pic_center)
由此将生成策略更新的优化问题变为公式(13):
![在这里插入图片描述](img/TRPO--13.png#pic_center)
类似的策略更新在以前的工作中已被提出,本文实验中也与以前的方法做了比较。实验表明,这种类型的约束更新与公式(12)中的最大KL散度约束具有相似的实验性能。
#### 4.基于采样的目标估计和约束
本节描述了如何使用蒙特卡洛模拟逼近目标函数和约束函数。公式(13)通过扩展 $L_{\theta_{old}}$ 可有公式(14):
![在这里插入图片描述](img/TRPO-14.png#pic_center)
用期望 $frac{1}{1-\gamma}E_{s\sim\rho_{old}}[...]$ 代替 $\sum_{s}\rho_{\theta_{old}}[...]$,用优势值 $A_{\theta_{old}}$ 代替Q值 $Q_{\theta_{old}}$。最后用一个重要性采样估计量代替动作的和,用 $q$ 表示采样分布,则单个 $s_{n}$ 对损失函数贡献为:
![在这里插入图片描述](img/TRPO-14.png#pic_center)
则公式(14)中的优化问题完全等价于公式(15)中用期望表示的优化问题:
![在这里插入图片描述](img/TRPO--15.png#pic_center)
剩下的就是用样本均值代替期望用经验估计代替Q值。
执行此估计,本文给出两种不同方法:
* 第一种称为单路径采样方法,典型用于策略梯度估计,它基于对个体轨迹的采样。
* 第二种称为vine方法它构建一个展开(rollout)集,然后从展开集中的每个状态执行多个操作。这种方法主要用于策略迭代方法。
##### 4.1 单路径方法
通过采样 $s_{0}\sim \rho_{0}$ 收集状态序列,然后模拟策略 $\pi_{\theta_{old}}$ 一定量的时间步后产生轨迹 $s_{0},a_{0},s_{1},a_{1},...,s_{T-1},a_{T-1},s_{T}$。即有 $q(a|s)=\pi_{\theta_{old}}(a|s)$。在每个 $(s_{t},a_{t})$ 上沿轨迹取未来成本折扣和来计算 $Q_{\theta_{old}}(s,a)$。
##### 4.2 vine方法
采样 $s_{0}\sim \rho_{0}$,模拟策略 $\pi_{\theta_{old}}$ 生成许多轨迹,沿轨迹选取有 $N$ 个状态的子集 $s_{1},s_{2},...,s_{N}$本文称之为“rollout集”(展开集)。在该集合中,对于每个状态 $s_{n}$,根据 $a_{n,k}\sim q(\cdot|s_{n})$ 采样 $K$ 个动作。本文发现 $q(\cdot|s_{n}=\pi_{\theta_{i}}(\cdot|s_{n})$ 在机器人动作训练的连续问题上表现很好均匀分布在像Atari游戏这样的离散任务上能有更好的探索。
对于在每个状态 $s_{n}$ 采样的每个动作 $a_{n,k}$,,我们通过执行从状态 $s_{n}$ 和动作 $a_{n,k}$ 开始的rollout(即一个短轨迹)来估计 $\hat{Q}_{\theta_{i}}(s_{n},a_{n,k})$。我们可以通过使用相同的随机数序列(即公共随机数)来处理 $K$个段短轨迹中的噪声,极大地减少了短轨迹之间 $Q$ 值差异的方差。
在小的有限动作空间中,我们可以从给定的状态为每一个可能的动作生成一个短轨迹(rollout)。从单个状态 $s_{n}$ 对 $L_{\theta_{old}}$ 的贡献如下:
![在这里插入图片描述](img/TRPO--16.png#pic_center)
在大的或连续状态空间中,我们利用重要抽样来构造代理损失的估计量。单个状态 $s_{n}$ 的自归一化估计量为
![在这里插入图片描述](img/TRPO--17.png#pic_center)
假设我们执行了来自状态 $s_{n}$ 的 $K$个动作 $a_{n,1}, a_{n,2},…, a_{n,K}$ 来自状态sn。这种自归一化估计器消除了对 $Q$ 值使用基线的需要(向q值添加一个常数梯度不变)。对 $s_{N}\sim \rho(\pi)$ 求平均值,可以得到 $L_{\theta_{old}}$ 的估计量,以及它的梯度。
图1说明了vine方法和单路径方法。
![在这里插入图片描述](img/TRPO-1.png#pic_center)
左图为单路径程序示意图。通过模拟策略生成一组轨迹,并将所有状态-动作对 $(s_{n}, a_{n})$ 合并到目标中。右图为vine方法示意图。生成一组“主干”轨迹然后从到达状态的子集生成“分支”展开。对于每个状态 $s_{n}$,执行多个操作(这里是 $a_{1}$ 和 $a_{2}$),并在每个操作之后执行一次短轨迹,使用公共随机数(CRN)来减少方差。
vine方法中用于采样的轨迹可以被比作藤蔓的茎它在不同的点(短轨迹集)上分成几个短分支(展开轨迹)。
在替代损失的 $Q$ 值样本数量相同的情况下vine方法优于单一路径方法对目标的局部估计具有更低的方差。即vine法对优势值给出了更好的估计。vine方法的缺点是对这些优势估计必须对模拟器执行更多的调用。此外vine方法要求我们从展开集中的每个状态生成多个轨迹这限制了该算法的设置系统可以重置为任意状态。相比之下单路径算法不需要状态重置可直接在物理系统上实现。
#### 5. 实用算法
基于单路径和vine采样方法本文提出两种实用的策略优化算法。算法重复执行以下步骤
1. 使用单路径或vine过程收集一组状态动作对以及对应的 $Q$ 值的蒙特卡洛估计。
2. 通过对多个样本求平均,构造公式(15)中的估计目标和约束条件。
3. 近似解这个约束优化问题,更新策略的参数向量 $\theta$。本文使用共轭梯度算法,进行直线搜索。
第3步本文通过构造费雪(Fisher)信息矩阵(FIM)来解析计算KL散度的海塞(Hessian)矩阵,不用梯度的协方差矩阵。解析估计器在每个状态 $s_{n}$ 对动作进行积分,不依赖于被采样的动作 $a_{t}$。
总结section 3参数化策略优化与本文所提算法的联系如下:
* 该理论证明了用对KL散度的惩罚可以优化替代损失。然而大的惩罚系数 $\frac{2\epsilon \gamma}{({2-\gamma})^{2}}$ 会导致非常小的步长,本文算法想减小这个系数。本文采用带有参数 $\delta$ (KL散度的界)的硬约束来代替惩罚。
* $D^{max}_{KL}(\theta_{old},\theta)$ 的约束很难进行数值优化和估计,所以本文算法约束了 $D_{KL}(\theta_{old},\theta)$。
* 本文的算法理论为了简化忽略了优势函数的估计误差但是Kakade & Langford (2002)推导中考虑了这个误差。
#### 6. 与以前工作的联系
本文推导的策略更新算法与以前的几个方法相关。
自然策略梯度:做为公式(13)更新的特例,通过对 $L$ 线性近似,对 $\bar{D}_{KL}$ 约束使用二次逼近,从而得到下式:
![在这里插入图片描述](img/TRPO--18.png#pic_center)
更新 $\theta _{new}=\theta _{old}-\lambda A(\theta _{old})^{-1} \nabla _{\theta }L(\theta )|_{\theta =\theta _{old}}$,其中拉格朗日乘子 $\lambda$ 为算法参数。该算法更新与本文的TRPO不同TRPO每次更新强制执行约束。实验证明本文算法提高了处理更大问题时的性能。
通过使用 $l_{2}$ 约束或惩罚TRPO也获得了标准策略梯度更新
![在这里插入图片描述](img/TRPO-19.png#pic_center)
通过求解无约束问题 $minimize_{\pi}L_{\pi_{old}}(\pi)$ 也可得到迭代策略更新。
相对熵策略搜索(REPS)约束了状态动作边缘 $p{s,a}$然而TRPO约束了条件 $p(s,a)$,不需要在内循环中进行非线性优化。
Levine and Abbeel (2014)使用KL发散约束TRPO不显式估计系统动态。
#### 7. 实验
![在这里插入图片描述](img/TRPO-3.png#pic_center)
图2为运动实验的二维机器人模型swimmerhopperwalker。由于欠驱动及接触连续hopper和walker比较难训练。
实验回答了几个问题:
1单路径和vine采样的性能特点是什么
2TRPO使用固定的KL散度对算法性能有什么影响
3TRPO能否用于解决具有挑战性的大规模问题当用于大规模问题时最终性能、计算时间和样本复杂度方面TRPO相比其他方法情况如何
实验结果表明单路径和vine算法都能从零开始训练出高质量的运动控制器在玩Atari游戏时这些算法性能都很不错。
##### 7.1 模拟机械运动
实验mujoco机器人移动实验三个模拟机器人如图2所示
状态:机器人的广义位置和速度
控制:关节力矩
挑战:欠驱动,高维,接触引起的摩擦力
评估模型Swimmer, Hopper, Walker再加入一个经典的cart-pole
算法对模型评估的结果看图4。图3上图为机器人动作训练的网络下图为玩Atari游戏的网络。本文用神经网络表示策略参数见文章附录。
![在这里插入图片描述](img/TRPO-4.png#pic_center)
图4为机器人训练的学习曲线每个算法随机初始化的五次运行平均结果hopper和walker 的前进速度是-1说明只学到了站立平衡没学会如何走路。
![在这里插入图片描述](img/TRPO-5.png#pic_center)
比较的方法单路径TRPO, vine TRPO, 奖励加权回归(RWR), 类EM的策略搜索方法相对熵策略搜索(REPS), 交叉熵法(CEM),无梯度法,协方差矩阵自适应(CMA), 经典自然策略梯度算法(使用固定惩罚系数-拉格朗日乘子)经验FIM(使用梯度的协方差矩阵), max KL(只适用于cart-pole使用最大KL散度)。
学习曲线显示了每种算法五次运行的平均成本如图4所示。单路径和藤蔓TRPO解决了所有问题得到了最好的解。自然梯度在两个较简单的问题上表现良好但无法产生向前发展的跳跃和步行步态。这些结果提供了实验证据与使用固定惩罚相比约束KL散度是选择步长和取得快速、一致进步的更稳健的方法。CEM和CMA是无导数算法因此它们的样本复杂度与参数数量成反比在较大的问题上表现不佳。最大KL方法的学习速度比我们的最终方法要慢一些因为约束的形式更严格但总的来说结果表明平均KL发散度约束与理论证明的最大KL发散度具有类似的效果。
TRPO学习策略的视频链接:http://sites.google.com/ site/trpopaper/。
##### 7.2 从图像中玩游戏
输入Atari游戏原始图像
学习挑战:学习各种行为,延迟奖励,复杂的行为序列,变化闪烁的背景
做法和DAN一样对图像预处理两个卷积层有16个通道stride为2一个全连接层有20个单元33500个参数。
单路径法和vine法结果如表1还包括一个人类玩家和Deep Q-Learning,蒙特卡洛树搜索与监督训练的组合。
![在这里插入图片描述](img/TRPO-6.png#pic_center)
TRPO算法(底部行)在每个任务上运行一次,使用相同的架构和参数。性能在不同的运行之间有很大的差异(策略的随机初始化不同),但由于时间限制,作者无法获得错误统计数据。
#### 8. 讨论及结论
本文提出并分析了随机控制策略优化的信任域方法。本文证明了TRPO的单调改进性该算法反复优化策略的预期成本的局部近似这个策略带有KL散度惩罚。本文表明在一系列具有挑战性的策略学习任务中对这个结合了KL散度的方法的近似取得了良好的实验结果优于以前的方法。本文的分析也为策略梯度和策略迭代方法的统一提供了一种视角表明它们是一种算法的特殊极限情况这种算法可以优化一个服从信任域约束的目标。
在机器人运动领域本文的算法在Mujoco物理模拟器中利用神经网络和最低信息成本成功学习了游泳、行走和跳跃的控制。在以往工作中还没有控制器使用通用策略搜索方法和非工程的通用策略表示从头学习这些任务。
在游戏领域本算法使用卷积神经网络CNN将原始图像做为输入。这需要优化极高维的策略。以前只有两种方法在此任务中获得成功。
#### 作者对未来的展望
本文的方法可扩展且具有强大的理论基础,作者希望以此为出发点,未来能训练大型的丰富的函数近似器,来解决一系列具有挑战性的问题。结合探索的两个实验的领域交叉,可以使用视觉和原始感官数据做为输入,有可能学习机器人的控制策略,为训练结合感知和控制的机器人控制器提供一个统一方案。可以使用更为复杂的策略,包括带有隐藏状态的循环策略,可以进一步使状态估计和控制在部分可观测的设置中滚动到相同的策略。通过将本文的方法与模型学习相结合,也有可能大幅降低样本复杂度,使其适用于样本珍贵的现实环境。
#### 个人理解
使用值函数解决连续状态空间问题,选择动作的策略通常是不变的确定性策略。有些实际问题需要的最优策略并不是确定性的,而是随机策略,策略梯度就是解决产生随机策略的问题。经典的蒙特卡罗策略梯度方法基于采样的方法,给定策略 $\pi$, 让智能体与环境互动会得到很多条轨迹每条轨迹都有对应的回报。将每条轨迹回报进行平均就可以知道某一个策略下面状态的价值。在PG算法中因为策略是一个概率不能直接用来迭代所以将策略转化为函数形式。使用带有参数 $\theta$ 的函数对策略进行近似,通过更新 $\theta$ 逼近最优策略。本人的研究内容并不是RL算法本身只是考虑应用策略梯度算法没有做过相关的项目因此对本文理解尚浅欢迎交流讨论。
汪莉娟:天津大学研究生,专业方向为控制科学与工程,主要研究方向为交通优化与智能控制。