Files
easy-rl/docs/chapter5/chapter5_questions&keywords.md
2021-05-11 10:12:42 +08:00

50 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Chapter5 Proximal Policy Optimization(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'$ 的相似程度。
## 2 Questions
- 基于on-policy的policy gradient有什么可改进之处或者说其效率较低的原因在于
答:
- 经典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。
## 3 Something About Interview
- 高冷的面试官:请问什么是重要性采样呀?
答:使用另外一种数据分布,来逼近所求分布的一种方法,算是一种期望修正的方法,公式是:
$$
\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$ 分布的期望值。也就可以使用 $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算法。
- 高冷的面试官请简述下PPO算法。其与TRPO算法有何关系呢?
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结果偏差较大而采取的算法。