强化学习第四章和第五章
参考自 datawahale打卡活动
关键词
关键词索引 | 关键词索引 |
---|---|
Policy Gradient | 策略梯度 |
一场游戏 | episode(回合) 或者 trial(试验) |
total reward | retun 回报 |
Trajectory | 状态和行为的集合 |
gradient ascent | 梯度上升 |
Discounted Return | (折扣回报) |
相对优势 | (relative advantage) |
交叉熵 | (Cross Entropy) |
on-policy | (同策略) |
off-policy | (异策略) |
Proximal Policy Optimization 近端策略优化 | (PPO) |
TRPO | (Trust Region Policy Optimization) |
PPO-Penalty | PPO算法1 |
PPO-Clip | PPO算法2 |
adaptive KL penalty | 动态KL惩罚 |
important sampling | (重要性采样 |
reinforcement learning
三要素
component | 机器玩视频游戏 | 围棋AlphaGo |
---|---|---|
actor | 去操控游戏的摇杆 | 下哪一个位置 |
environment | 游戏的主机, 负责控制游戏的画面负责控制说,怪物要怎么移动, 你现在要看到什么画面 | 对手 |
reward function | 你做什么事情,发生什么状况的时候,你可以得到多少分数, 比如说杀一只怪兽得到 20 分 | 每走一步所得分数 |
期望奖励
最大化期望-策略梯度
更新参数
最大对数似然法和最小交叉熵法
实现细节
添加baseline
选择合适的评分指标
添加discount
Monte Carlo Policy Gradient 蒙特卡洛算法
PPO
我们可以把 on-policy 换成 off-policy,但 importance sampling 有一个 issue,如果 pθ和pθ’ 差太多的话,这两个 distribution 差太多的话,importance sampling 的结果就会不好。PPO避免两个差太多。
importance sampling
on-policy----off-policy
修改θ参数
PPO算法变种
PPO-Penalty
adaptive KL penalty —动态调整β
PPO-Clip
习题思考
-
如果我们想让机器人自己玩video game, 那么强化学习中三个组成(actor、environment、reward function)部分具体分别是什么?
actor 做的事情就是去操控游戏的摇杆, 比如说向左、向右、开火等操作;environment 就是游戏的主机, 负责控制游戏的画面负责控制说,怪物要怎么移动, 你现在要看到什么画面等等;reward function 就是当你做什么事情,发生什么状况的时候,你可以得到多少分数, 比如说杀一只怪兽得到 20 分等等。
-
在一个process中,一个具体的trajectory s1,a 1,s2,a2出现的概率取决于什么?
答:一部分是 environment 的行为, environment 的 function 它内部的参数或内部的规则长什么样子。 p(s_{t+1}|s_t,a_t)这一项代表的是 environment, environment 这一项通常你是无法控制它的,因为那个是人家写好的,或者已经客观存在的。
另一部分是 agent 的行为,你能控制的是 p θ(at∣st)。给定一个 st , actor 要采取什么样的 at会取决于你 actor 的参数 \θ, 所以这部分是 actor 可以自己控制的。随着 actor 的行为不同,每个同样的 trajectory, 它就会有不同的出现的概率。
-
当我们在计算 maximize expected reward时,应该使用什么方法?
答: gradient ascent(梯度上升),因为要让它越大越好,所以是 gradient ascent。Gradient ascent 在 update 参数的时候要加。要进行 gradient ascent,我们先要计算 expected reward \bar{R} 的 gradient 。我们对 \bar{R} R 取一个 gradient,这里面只有 pθ(τ) 是跟θ 有关,所以 gradient 就放在 pθ(τ) 这个地方。 -
我们可以使用哪些方法来进行gradient ascent的计算?
用 gradient ascent 来 update 参数,对于原来的参数 \thetaθ ,可以将原始的 \thetaθ 加上更新的 gradient 这一项,再乘以一个 learning rate,learning rate 其实也是要调的,和神经网络一样,我们可以使用 Adam、RMSProp 等优化器对其进行调整。 -
对于梯度策略的两种方法,蒙特卡洛(MC)强化学习和时序差分(TD)强化学习两个方法有什么联系和区别
-
两者的更新频率不同,蒙特卡洛强化学习方法是每一个episode更新一次,即需要经历完整的状态序列后再更新(比如我们的贪吃蛇游戏,贪吃蛇“死了”游戏结束后再更新),而对于时序差分强化学习方法是每一个step就更新一次 ,(比如我们的贪吃蛇游戏,贪吃蛇每移动一次(或几次)就进行更新)。相对来说,时序差分强化学习方法比蒙特卡洛强化学习方法更新的频率更快。
-
时序差分强化学习能够在知道一个小step后就进行学习,相比于蒙特卡洛强化学习,其更加快速、灵活。
具体举例来说:假如我们要优化开车去公司的通勤时间。对于此问题,每一次通勤,我们将会到达不同的路口。对于时序差分(TD)强化学习,其会对于每一个经过的路口都会计算时间,例如在路口 A 就开始更新预计到达路口 B、路口 C \cdots \cdots⋯⋯, 以及到达公司的时间;而对于蒙特卡洛(MC)强化学习,其不会每经过一个路口就更新时间,而是到达最终的目的地后,再修改每一个路口和公司对应的时间。
-
请详细描述REINFORCE的计算过程。
答:首先我们需要根据一个确定好的policy model来输出每一个可能的action的概率,对于所有的action的概率,我们使用sample方法(或者是随机的方法)去选择一个action与环境进行交互,同时环境就会给我们反馈一整个episode数据。对于此episode数据输入到learn函数中,并根据episode数据进行loss function的构造,通过adam等优化器的优化,再来更新我们的policy model。 -
基于off-policy的importance sampling中的 data 是从 θ ’sample 出来的,从 θ 换成 θ ′,有什么优势?
答:使用off-policy的importance sampling后,我们不用 θ 去跟环境做互动,假设有另外一个 policy θ ′,它就是另外一个actor。它的工作是他要去做demonstration,θ ′ 的工作是要去示范给θ 看。它去跟环境做互动,告诉 \thetaθ 说,它跟环境做互动会发生什么事。然后,借此来训练θ。我们要训练的是θ ,θ ′,只是负责做 demo,负责跟环境做互动,所以 sample 出来的东西跟θ 本身是没有关系的。所以你就可以让θ ′,做互动 sample 一大堆的data,θ 可以update 参数很多次。然后一直到θ train 到一定的程度,update 很多次以后,θ ′ 再重新去做 sample,这就是 on-policy 换成 off-policy 的妙用。 -
在本节中PPO中的KL divergence指的是什么?
答:本质来说,KL divergence是一个function,其度量的是两个action (对应的参数分别为θ 和 θ′ )间的行为上的差距,而不是参数上的差距。这里行为上的差距(behavior distance)可以理解为在相同的state的情况下,输出的action的差距(他们的概率分布上的差距),这里的概率分布即为KL divergence。
-
基于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更新了多次,这样会更加有效率。