综述
DQN是将深度神经网络学习与Q-learning相结合的一种方法。在使用Q-learning学习时,需要记录一张表,表由状态和动作两个维度组成。当状态数很大或动作数很大时,当状态和动作不是离散值而是连续值时,Q-learning的表是很难去存储Q值的。这时候就可以使用深度神经网络的学习方法,将Q表压缩成神经网络的参数表示。
模型架构
输入层-输出层
使用向量表示状态和动作,输入层可以是状态向量和动作向量的拼接,对应的输出层是状态和动作的Q值。输入层还可以是状态向量,输出层是该状态下各个动作的Q值或是这个状态的值函数值。当状态是离散值时可以输入one-hot向量,当状态是连续值,可以直接输入状态的连续值表示。
中间层
中间层是深度神经网络的层,可以是全连接层,CNN,RNN,LSTM,GRU,Transformer等等
学习过程
DQN和Q-learning的学习过程是一样的,只是将Q-learning查Q表的过程变成将输入送入神经网络得到输出的过程,将Q表的更新变成神经网络参数的更新。参数更新有下面的式子:
我们可以将常数$\alpha$融入到学习率中,所以有:
求$e$关于参数$\theta$的梯度用于更新参数$\theta$。当我们不使用采样单步更新,而是采样单条路径更新时,有:
其中$e_t$表示采样路径第$t$时刻的目标函数值,$R_t(\tau)$表示将路径$\tau$第$t$时刻看作是开始时刻时的收益,使用上式对参数求导并更新参数。