Q-learning
DQN
论文:Human-level control through deep reinforcement learning
DQN其实就是将深度学习与Q-learning结合起来了,建立了卷积神经网络来估计Q值。
建立了Q network,Q target network(
论文中说将Q估计跟Q target分开是因为更stable,但是具体证明并没有给。
Double DQN
论文:Deep Reinforcement Learning with Double Q-learning
Double Q-learning的想法就是将选择和评估action的网络分开,这样可以减轻overestimate.Double DQN将Double Q-learning和DQN结合起来。
Double Q-learning
在double Q-learning中有两个value function,参数分别为
在选择policy时,利用的是最近更新的
Double DQN
将Double Q-learning和DQN结合起来
Prioritized Experience Replay
论文:Prioritized Experience Replay
上面的方法都用到了replay memory来保存之前的experience,一是为了将之前有用的经历保存下来,二是连续的动作的动作不符合独立同分布,而梯度下降是要求数据独立同分布的,从memory中随机采样可以破坏数据之间的联系。但是之前的做法都是从memory中随机抽样,这样导致一些有用的样本被抽到的次数可能很少,而且存储数据的空间有限,当空间存满之后,每一次放入一个experience就要丢弃先前的一个experience.要解决这些问题有两条路,一是选择哪些experience被保存,二是选择哪些reperience被replay.这篇论文主要解决的是后者。
Prioritizing with TD-error
第一种方法是将每一步的TD-error保存下来,每次更新时,从memory中选择有较大TD-error的sample.这种方法有一些限制,首先,为了避免消耗太多资源遍历整个memory,我们只为那些被replay的experience更新TD-error;其次,如果一开始就被赋予一个很低的TD-error,在很长一段时间内可能都不会被replay;
Stochastic Prioritization
定义抽取i样本的概率为
First Variant – Proportional Variant
Second Variant – Rank-based Variant
Implementation
对于Proportional Variant,可以建立一个二叉堆来减少时间复杂度,传统的二叉堆,越往上,节点的优先级越高,而在这里,叶子节点存储transiton priority,父节点存储所有孩子节点的priorities的和。(然后怎么抽样的看不太懂,看懂之后再来修改。。)
对于Rank-based Variant,根据rank的排列计算累计密度,如果batch_size取k,则将累计密度等分为k份,从每一份中抽取一个样本。
Annealing the Bias
为了矫正偏差,加入一个权重
Dueling DQN
论文:Dueling Network Architectures for Deep Reinforcement Learning
对比前面的方法,Dueling DQN的创新之处在于将网络结构改成two stream.一条计算state value function
Advantage
- Q和V的计算同步更新,state-value function的学习更有效率
- 对于同一个状态的不同动作计算Advantage function,state-value stream都要计算一次,意味着value stream的更新频率更高了
可以有效减少Q值与V值之间尺度差异所产生的噪声(表述有待商榷)