概述
DQN其实是深度学习和强化学习知识的结合,也就是用Deep Networks框架来近似逼近强化学习中的Q value。其中,使用的Deep Networks有两种框架,分别如下图所示:
框架1框架1的输入是State和Action,State可以是一个游戏画面,Action可以是向下走,开火等,通过Network输出的是在State的情况下采取Action的Q value。
框架2框架2的输入是当前的State,通过Network输出的是在这个State的情况下,采取不同的Action所预测的Q value值,DQN paper中所采取的框架是框架2。
DQN是由两个Network组成,一个是Evaluation Network就是我们用来预测不同action的Q value值,另一个则是Target Network,是用来模拟真实的Q value值。DQN的loss就是一个L2 regression的loss,其公式如下:
loss functiony就是Evaluation Network要预测的Q(st, at)的值,其中st和at是已知的实验数据。剩下的减去的那一部分则是Target Network逼近的真实的Q(st, at)的值,rt,st+1是已知的,因此我们将st+1代入到Target Network中求最大的Q(st+1, at+1)的值即可。
Q-learning
Q-learning我们用到的是时序差分的方法(即TD),公式如下所示:
Q-learning formula因为,我们要通过Q value来寻找出最优的policy,所以我们应该求的是最大的Q value值,即:
优化公示我们知道,TD和Monte Carlo方法的不同在于,TD是根据multiple step(1, 2, ....)来进行训练的,而Monte Carlo方法则是根据一个一个的episode进行训练的。因此,TD方法相对来说速度会快一些。
Replay Buffer
在训练我们的Network之前,我们首先要进行多次实验,将其st, at, rt, st+1这组数据存入Buffer中,因为存的数据次序具有序列相关性,所以我们在训练的时候为了让每个trajectory相对独立,于是便对存储的数据进行随机采样进行训练,这个思想就是Replay Buffer。
Exploration
因为在实验中,我们不可能得到所有的(state,action)pair的Q value值,如果我们一直采用Q value值最大的action往往会出现问题。因为,那些我们实验中没有采取过的动作的Q value值很有可能会大于我们实验中采取过的动作。因此,我们需要有一定的探索能力,而探索的方法有很多种,比如epsilon-greedy和boltsman exploration方法。
epsilon-greedy方法是设置一个epsilon值,有1-epsilon的概率会不选用最大的Q value动作,而使用随机的动作;boltsman exploration方法相当于最后的输出加一层softmax层,根据概率分布选择相应的动作。
Reference
1. 李宏毅.DRL Lecture3
2. https://github.com/MorvanZhou/PyTorch-Tutorial/blob/master/tutorial-contents/405_DQN_Reinforcement_learning.py
3. Human-level control through deep reinforcement learning
网友评论