DL入门(四)powered by @李宏毅
第十课(DRL概念)
1 Proximal Policy Optimization(PPO,近端策略优化)
(1) Policy Gradient
如上图所示:policy为一个network,输入为一个vector或者matrix,输出为每种行为执行的概率。
上图为Expected Reward的计算方法。
上图为具体的演算法。
(2) From on-policy to off-policy
on-policy的意思是训练出来的Agent和与环境互动的Agent是同一个,off-policy的意思是训练出来的Agent和与环境互动的Agent不是同一个。
1 Importance Sampling
重要性采样属于众多采样方法中的一种,核心思想是当我们无法在原定的p(x)中进行sample的时候,我们可以找到一个q(x)分布,通过从q(x)中进行采样之后再乘上一定的权重使其分布非常接近p(x)。
但是当p(x)和q(x)相差特别大时,在sample次数有限的情况下p(x)和q(x)求出的方差将会相差较大。
下图是on-policy向off-policy转换的过程,利用Importance Sampling的思想,训练出来的Agent为p(x),与环境交互的Agent为q(x),在q(x)上sample数据最终乘上一定的权值便可以训练p(x)。
下图为PPO的公式,在上图式子的基础下加上了一个Constrain,使得p(x),q(x)在最后不会差的太多,其中的KL divergence代表的不是两个参数之间的距离,而是指带入两个参数输出的action之间的不同。
(3) PPO2
下图为PPO2的相关公式。没有计算KL的过程,计算速度更快,更加的simple。
2 Q-Learning
(1) Basic Idea
1 Critic
Critic的作用在与给定一个State和Actor,去预测最终会得到的Reward。
How to estimate V(s) ?
(1) MC-base,使V(s)求出的值和最终episode结束后计算出的reward的值越接近越好。此方法必须计算G,意味着必须玩到游戏结束。
(2) TD-base,前一个V(s)的值等于V(s+1)的值加上前一次得到的Rt。
2 Another Critic
Q function,核心思想是当遇到某个state s时强制操作action π(在正常情况下不一定执行action a),之后再一直train下去。
下图为Q-Learning的一般思想。
(2) Q-Learning 中所使用的特性
1 target network
由于Q这两个neural初始是一样的,在训练时两个会同时update参数,这样会导致最终的参数会是两次update相加的结果,Target Network提供的思想就是先固定住后一个neural的参数,只update前一个neural的参数,在update若干次后再将前一个的参数赋给后面的那个neural,这样就需要重新train,之后再不断往复。
2 Exploration
在原来的Q-Learning思想中是选取Q(s,a)最大的那个action,但是会出现只sample某一个action,而其他action都不会被sample,就像去某个餐厅吃饭点了一个菜很好吃,那么之后去这个餐厅都只点这个菜,然后我们就不会知道其他菜好不好吃。所以我们需要有一定的几率去exploration其他action。
3 Replay Buffer
核心思想是拿Agent与环境做交互,产出大量的Experience放到一个比较大的buffer里,之后使用迭代训练,每一次迭代都从buffer中随机sample一个batch的数据进行训练。
下图为典型的Q-Learning算法
(3) Tips of Q-Learning
1 Double DQN
在实际训练中使用Q function的值总是会被高估,原因在于Q function选择的为value最大的值,那么一旦某个action被高估,Q function就会选择那个action。
下图为Double DQN的思想
2 Dueling DQN
该tip的核心思想为修改network在输出位置的架构。如下图所示,第一幅图是一般Q-Learning的网络架构,第二幅为改进的network。
如下图所示,在实做上,我们会给A(s,a)加上一个Constrain使得其中每个Colum的值加起来都为0,这样做的好处在于可以强迫network倾向去更新V(s)的值,这样将会更有效率地使用data。
(4) Q-Learning For Continues Action
如下图所示:在连续的情况下我们无法穷举所有的可能去算出Q(s,a)。
方法一:sample一部分的actions,但是这样计算量较大且效率不高,最终的performance也不好。
方法二:利于gradient ascent去求出最大值,但是有可能并不是全局最大值,计算量也非常大。
方法三:设计一个新的Network架构,如下图右侧事例。