强化学习笔记
策略梯度
1、基本概念
policy(策略): 每一个actor中会有对应的策略,这个策略决定了actor的行为。具体来说,Policy 就是给一个外界的输入,然后它会输出 actor 现在应该要执行的行为。一般地,我们将policy写成 π。
Return(回报): 一个回合(Episode)或者试验(Trial)所得到的所有的reward的总和,也被人们称为Total reward。一般地,我们用 R 来表示它。
Trajectory: 一个试验中我们将environment 输出的 s 跟 actor 输出的行为a,把这个s跟a全部串起来形成的集合,我们称为Trajectory,即
Reward function: 根据在某一个 state 采取的某一个 action 决定说现在这个行为可以得到多少的分数,它是一个 function。也就是给一个 s1,a1,它告诉你得到 r1。给它s2,a2,它告诉你得到r2。 把所有的 r 都加起来,我们就得到了R(τ) ,代表某一个 trajectory τ 的 reward。
Expected reward:
Reinforce: 基于策略梯度的强化学习的经典算法,其采用回合更新的模式。
问题:
1、对于梯度策略的两种方法,蒙特卡洛(MC)强化学习和时序差分(TD)强化学习两个方法有什么联系和区别?
答:
两者的更新频率不同,蒙特卡洛强化学习方法是每一个episode更新一次,即需要经历完整的状态序列后再更新(比如我们的贪吃蛇游戏,贪吃蛇“死了”游戏结束后再更新),而对于时序差分强化学习方法是每一个step就更新一次 ,(比如我们的贪吃蛇游戏,贪吃蛇每移动一次(或几次)就进行更新)。相对来说,时序差分强化学习方法比蒙特卡洛强化学习方法更新的频率更快。
时序差分强化学习能够在知道一个小step后就进行学习,相比于蒙特卡洛强化学习,其更加快速、灵活。
具体举例来说:假如我们要优化开车去公司的通勤时间。对于此问题,每一次通勤,我们将会到达不同的路口。对于时序差分(TD)强化学习,其会对于每一个经过的路口都会计算时间,例如在路口 A 就开始更新预计到达路口 B、路口 C \cdots \cdots⋯⋯, 以及到达公司的时间;而对于蒙特卡洛(MC)强化学习,其不会每经过一个路口就更新时间,而是到达最终的目的地后,再修改每一个路口和公司对应的时间。
2、请详细描述REINFORCE的计算过程。
答:首先我们需要根据一个确定好的policy model来输出每一个可能的action的概率,对于所有的action的概率,我们使用sample方法(或者是随机的方法)去选择一个action与环境进行交互,同时环境就会给我们反馈一整个episode数据。对于此episode数据输入到learn函数中,并根据episode数据进行loss function的构造,通过adam等优化器的优化,再来更新我们的policy model。
3、如何理解策略梯度公式:
PPO算法
基本概念
on-policy(同策略): 要learn的agent和环境互动的agent是同一个时,对应的policy。
off-policy(异策略): 要learn的agent和环境互动的agent不是同一个时,对应的policy。
important sampling(重要性采样): 使用另外一种数据分布,来逼近所求分布的一种方法,在强化学习中通常和蒙特卡罗方法结合使用,公式如下:
Proximal Policy Optimization (PPO): 避免在使用important sampling时由于在 \thetaθ 下的pθ (at∣st) 跟在 θ′下的 pθ′ (at∣st) 差太多,导致important sampling结果偏差较大而采取的算法。具体来说就是在training的过程中增加一个constrain,这个constrain对应着 θ跟θ ′output 的 action 的KL divergence,来衡量 θ与θ′的相似程度。
问题:
1、基于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更新了多次,这样会更加有效率。
2、使用important sampling时需要注意的问题有哪些。
我们可以在important sampling中将 p 替换为任意的 q,但是本质上需要要求两者的分布不能差的太多,即使我们补偿了不同数据分布的权重q(x)/p(x)。
当我们对于两者的采样次数都比较多时,最终的结果时一样的,没有影响的。但是通常我们不会取理想的数量的sample data,所以如果两者的分布相差较大,最后结果的variance差距(平方级)将会很大。
3、基于off-policy的importance sampling中的 data 是从θ ′sample 出来的,从 θ 换成θ′有什么优势?
答:使用off-policy的importance sampling后,我们不用θ 去跟环境做互动,假设有另外一个 policy θ′,它就是另外一个actor。它的工作是他要去做demonstration,θ′
的工作是要去示范给θ 看。它去跟环境做互动,告诉θ说,它跟环境做互动会发生什么事。然后,借此来训练θ。我们要训练的是θ,θ′只是负责做 demo,负责跟环境做互动,所以 sample 出来的东西跟θ 本身是没有关系的。所以你就可以让θ′做互动 sample 一大堆的data,θ 可以update 参数很多次。然后一直到θ train到一定的程度,update 很多次以后,θ′再重新去做 sample,这就是 on-policy 换成 off-policy 的妙用。
4、在本节中PPO中的KL divergence指的是什么?
答:本质来说,KL divergence是一个function,其度量的是两个action (对应的参数分别为θ 和θ′)间的行为上的差距,而不是参数上的差距。这里行为上的差距(behavior distance)可以理解为在相同的state的情况下,输出的action的差距(他们的概率分布上的差距),这里的概率分布即为KL divergence。