Update chapter5_questions&keywords.md

This commit is contained in:
Yiyuan Yang
2022-09-21 16:02:44 +08:00
committed by GitHub
parent cfb573319b
commit 72b2d5047a

View File

@@ -1,51 +1,57 @@
# Chapter5 Proximal Policy Optimization(PPO)
# 第五章 近端策略优化 (PPO) 算法
## 1 Keywords
## 关键词
- **on-policy(同策略)** 要learn的agent和环境互动的agent是同一个时对应的policy
- **off-policy(异策略)** 要learn的agent和环境互动的agent不是同一个时对应的policy。
- **important sampling重要性采样** 使用另外一种数据分布,来逼近所求分布的一种方法,在强化学习中通常和蒙特卡罗方法结合使用,公式如下:$\int f(x) p(x) d x=\int f(x) \frac{p(x)}{q(x)} q(x) d x=E_{x \sim q}[f(x){\frac{p(x)}{q(x)}}]=E_{x \sim p}[f(x)]$ 我们在已知 $q$ 的分布后,可以使用上述公式计算出从 $p$ 这个distribution sample x 代入 $f$ 以后所算出来的期望值。
- **Proximal Policy Optimization (PPO)** 避免在使用important sampling时由于在 $\theta$ 下的 $p_{\theta}\left(a_{t} | s_{t}\right)$ 跟 在 $\theta '$ 下的 $p_{\theta'}\left(a_{t} | s_{t}\right)$ 差太多导致important sampling结果偏差较大而采取的算法。具体来说就是在training的过程中增加一个constrain这个constrain对应着 $\theta$ 跟 $\theta'$ output 的 action 的 KL divergence来衡量 $\theta$ 与 $\theta'$ 的相似程度。
- **同策略(on-policy**:要学习的智能体和与环境交互的智能体是同一个时对应的策略
## 2 Questions
- **异策略off-policy**:要学习的智能体和与环境交互的智能体不是同一个时对应的策略。
- 基于on-policy的policy gradient有什么可改进之处或者说其效率较低的原因在于
- **重要性采样important sampling**:使用另外一种分布,来逼近所求分布的一种方法,在强化学习中通常和蒙特卡洛方法结合使用,公式如下:
$$
\int f(x) p(x) \mathrm{d} x=\int f(x) \frac{p(x)}{q(x)} q(x) \mathrm{d} x=E_{x \sim q}[f(x){\frac{p(x)}{q(x)}}]=E_{x \sim p}[f(x)]
$$
我们在已知 $q$ 的分布后,可以使用上式计算出从 $p$ 这个分布采样 $x$ 代入 $f$ 以后得到的期望值。
答:
- 经典policy gradient的大部分时间花在sample data处即当我们的agent与环境做了交互后我们就要进行policy model的更新。但是对于一个回合我们仅能更新policy model一次更新完后我们就要花时间去重新collect data然后才能再次进行如上的更新。
- 所以我们的可以自然而然地想到使用off-policy方法使用另一个不同的policy和actor与环境进行互动并用collect data进行原先的policy的更新。这样等价于使用同一组data在同一个回合我们对于整个的policy model更新了多次这样会更加有效率。
- 使用important sampling时需要注意的问题有哪些。
我们可以在important sampling中将 $p$ 替换为任意的 $q$,但是本质上需要要求两者的分布不能差的太多,即使我们补偿了不同数据分布的权重 $\frac{p(x)}{q(x)}$ 。 $E_{x \sim p}[f(x)]=E_{x \sim q}\left[f(x) \frac{p(x)}{q(x)}\right]$ 当我们对于两者的采样次数都比较多时最终的结果时一样的没有影响的。但是通常我们不会取理想的数量的sample data所以如果两者的分布相差较大最后结果的variance差距平方级将会很大。
- 基于off-policy的importance sampling中的 data 是从 $\theta'$ sample 出来的,从 $\theta$ 换成 $\theta'$ 有什么优势?
使用off-policy的importance sampling后我们不用 $\theta$ 去跟环境做互动,假设有另外一个 policy $\theta'$它就是另外一个actor。它的工作是他要去做demonstration$\theta'$ 的工作是要去示范给 $\theta$ 看。它去跟环境做互动,告诉 $\theta$ 说,它跟环境做互动会发生什么事。然后,借此来训练$\theta$。我们要训练的是 $\theta$ $\theta'$ 只是负责做 demo负责跟环境做互动所以 sample 出来的东西跟 $\theta$ 本身是没有关系的。所以你就可以让 $\theta'$ 做互动 sample 一大堆的data$\theta$ 可以update 参数很多次。然后一直到 $\theta$ train 到一定的程度update 很多次以后,$\theta'$ 再重新去做 sample这就是 on-policy 换成 off-policy 的妙用。
- 在本节中PPO中的KL divergence指的是什么
本质来说KL divergence是一个function其度量的是两个action (对应的参数分别为$\theta$ 和 $\theta'$ 间的行为上的差距而不是参数上的差距。这里行为上的差距behavior distance可以理解为在相同的state的情况下输出的action的差距他们的概率分布上的差距这里的概率分布即为KL divergence。
- **近端策略优化proximal policy optimizationPPO**:避免在使用重要性采样时由于在 $\theta$ 下的 $p_{\theta}\left(a_{t} | s_{t}\right)$ 与在 $\theta '$ 下的 $p_{\theta'}\left(a_{t} | s_{t}\right)$ 相差太多,导致重要性采样结果偏差较大而采取的算法。具体来说就是在训练的过程中增加一个限制,这个限制对应 $\theta$ 和 $\theta'$ 输出的动作的KL散度来衡量 $\theta$ 与 $\theta'$ 的相似程度。
## 3 Something About Interview
## 习题
- 高冷的面试官:请问什么是重要性采样呀
**5-1** 基于同策略的策略梯度有什么可改进之处?或者说其效率较低的原因在于什么
答:使用另外一种数据分布,来逼近所求分布的一种方法,算是一种期望修正的方法,公式是:
$$\begin{aligned}
\int f(x) p(x) d x &= \int f(x) \frac{p(x)}{q(x)} q(x) d x \\
&= E_{x \sim q}[f(x){\frac{p(x)}{q(x)}}] \\
&= E_{x \sim p}[f(x)]
\end{aligned}$$
我们在已知 $q$ 的分布后,可以使用上述公式计算出从 $p$ 分布的期望值。也就可以使用 $q$ 来对于 $p$ 进行采样了,即为重要性采样。
经典策略梯度的大部分时间花在数据采样上,即当我们的智能体与环境交互后,我们就要进行策略模型的更新。但是对于一个回合我们仅能更新策略模型一次,更新完后我们就要花时间重新采样数据,然后才能再次进行如上的更新。
- 高冷的面试官请问on-policy跟off-policy的区别是什么
所以我们可以使用异策略的方法,即使用另一个不同的策略和演员,与环境进行交互并用所采样的数据进行原先策略的更新。这样等价于使用同一组数据,在同一个回合,我们对整个策略模型更新了多次,这样会更加有效率。
用一句话概括两者的区别生成样本的policyvalue-funciton和网络参数更新时的policyvalue-funciton是否相同。具体来说on-policy生成样本的policyvalue function跟网络更新参数时使用的policyvalue function相同。SARAS算法就是on-policy的基于当前的policy直接执行一次action然后用这个样本更新当前的policy因此生成样本的policy和学习时的policy相同算法为on-policy算法。该方法会遭遇探索-利用的矛盾仅利用目前已知的最优选择可能学不到最优解收敛到局部最优而加入探索又降低了学习效率。epsilon-greedy 算法是这种矛盾下的折衷。优点是直接了当速度快劣势是不一定找到最优策略。off-policy生成样本的policyvalue function跟网络更新参数时使用的policyvalue function不同。例如Q-learning在计算下一状态的预期收益时使用了max操作直接选择最优动作而当前policy并不一定能选择到最优动作因此这里生成样本的policy和学习时的policy不同即为off-policy算法。
**5-2** 使用重要性采样时需要注意的问题有哪些?
- 高冷的面试官请简述下PPO算法。其与TRPO算法有何关系呢?
我们可以在重要性采样中将 $p$ 替换为任意的 $q$,但是本质上要求两者的分布不能差太多,即使我们补偿了不同数据分布的权重 $\frac{p(x)}{q(x)}$ 。 $E_{x \sim p}[f(x)]=E_{x \sim q}\left[f(x) \frac{p(x)}{q(x)}\right]$ ,当我们对于两者的采样次数都比较多时,最终的结果会是较为接近的。但是通常我们不会取理想数量的采样数据,所以如果两者的分布相差较大,最后结果的方差将会很大。
PPO算法的提出旨在借鉴TRPO算法使用一阶优化在采样效率、算法表现以及实现和调试的复杂度之间取得了新的平衡。这是因为PPO会在每一次迭代中尝试计算新的策略让损失函数最小化并且保证每一次新计算出的策略能够和原策略相差不大。具体来说在避免使用important sampling时由于在 $\theta$ 下的 $p_{\theta}\left(a_{t} | s_{t}\right)$ 跟 在 $\theta'$ 下的 $ p_{\theta'}\left(a_{t} | s_{t}\right) $ 差太多导致important sampling结果偏差较大而采取的算法。
**5-3** 基于异策略的重要性采样中的数据是从 $\theta'$ 中采样出来的,从 $\theta$ 换成 $\theta'$ 有什么优势?
使用基于异策略的重要性采样后,我们不用 $\theta$ 与环境交互,而是由另外一个策略 $\theta'$ 进行示范。 $\theta'$ 的任务就是示范给 $\theta$ 看,它和环境交互,告诉 $\theta$ 它与环境交互会发生什么事,以此来训练 $\theta$ 。我们要训练的是 $\theta$ $\theta'$ 只负责做示范,负责与环境交互,所以采样出来的数据与 $\theta$ 本身是没有关系的。所以就可以让 $\theta'$ 与环境交互采样大量数据,$\theta$ 可以更新参数多次。一直到 $\theta$ 训练到一定的程度、参数更新多次以后,$\theta'$ 再重新采样,这就是同策略换成异策略的妙处。
**5-4** 在本节中近端策略优化中的KL散度指的是什么
本质来说KL散度是一个函数其度量的是两个动作对应的参数分别为 $\theta$ 和 $\theta'$ 间的行为距离而不是参数距离。这里的行为距离可以理解为在相同状态下输出动作的差距概率分布上的差距概率分布即KL散度。
## 面试题
**5-1** 友善的面试官:请问什么是重要性采样呀?
使用另外一种分布,来逼近所求分布的一种方法,算是一种期望修正的方法,公式如下:
$$
\int f(x) p(x) \mathrm{d} x=\int f(x) \frac{p(x)}{q(x)} q(x) \mathrm{d} x=E_{x \sim q}[f(x){\frac{p(x)}{q(x)}}]=E_{x \sim p}[f(x)]
$$
我们在已知 $q$ 的分布后,可以使用上式计算出从 $p$ 分布的期望值。也就可以使用 $q$ 来对 $p$ 进行采样了,即重要性采样。
**5-2** 友善的面试官:请问同策略和异策略的区别是什么?
我可以用一句话概括两者的区别,即生成样本的策略(价值函数)和网络参数更新时的策略(价值函数)是否相同。具体来说,同策略,生成样本的策略价值函数与网络更新参数时使用的策略价值函数相同。Sarsa算法就是同策略的其基于当前的策略直接执行一次动作然后用价值函数的值更新当前的策略因此生成样本的策略和学习时的策略相同算法为同策略算法。该算法会遭遇探索-利用窘境,仅利用目前已知的最优选择,可能学不到最优解,不能收敛到局部最优,而加入探索又降低了学习效率。 $\varepsilon$-贪心算法是这种矛盾下的折中其优点是直接了当、速度快缺点是不一定能够找到最优策略。异策略生成样本的策略价值函数与网络更新参数时使用的策略价值函数不同。例如Q学习算法在计算下一状态的预期奖励时使用了最大化操作直接选择最优动作而当前策略并不一定能选择到最优动作因此这里生成样本的策略和学习时的策略不同即异策略算法。
**5-3** 友善的面试官:请简述一下近端策略优化算法。其与信任区域策略优化算法有何关系呢?
近端策略优化算法借鉴了信任区域策略优化算法,通过采用一阶优化,在采样效率、算法表现以及实现和调试的复杂度之间取得了新的平衡。这是因为近端策略优化算法会在每一次迭代中尝试计算新的策略,让损失函数最小化,并且保证每一次新计算出的策略能够和原策略相差不大。换句话说,其为在避免使用重要性采样时由于在 $\theta$ 下的 $p_{\theta}\left(a_{t} | s_{t}\right)$ 与在 $\theta'$ 下的 $p_{\theta'}\left(a_{t} | s_{t}\right)$ 差太多,导致重要性采样结果偏差较大而采取的算法。