Deep Q Network是一种将神经网络和强化学习结合的算法,这里我介绍下我的理解,如果有误还请指正。
首先,该算法既然是基于Q-learning,那么我将Q-learning和更新的图放出以便对比介绍(图来源于B站UP莫烦):
Q-learning:
Deep Q Network:
首先要明确这里的神经网络到底是拿来干啥的。即对于特别复杂的问题,Q表是非常巨大和复杂的,可能存在特别多的状态和动作,比如围棋问题(可能性超过了宇宙的原子,所谓“千古无同局”),一般的电脑根本没法存储和计算这么大的Q表。而神经网络却可以解决该问题。
也就是说,神经网络用于代替Q表。
根据Q-learning算法,Q表的更新需要Q现实和Q估计,而这两个值本身也是Q表产生的。同样的思路,这里的神经网络代替Q表,那么就通过神经网络代替Q表的作用生成Q现实和Q估计,再由Q现实和Q估计的差更新神经网络。
具体的流程为(自己结合Q-learning算法和上面第二幅图的理解):
1、输入状态S,由神经网络给出S状态下的所有Q值(Q估计)。这里每个Q值对应一个动作(理论上应该会输出对应动作)。
2、根据贪婪算法,根据S状态下的所有Q值选择动作A(即可能是Q值最大的动作也可能是随机的动作)。
3、根据神经网络得到状态S选择动作A后的状态S_的所有Q值,奖励值R和对应动作A_
4、计算Q实际(R+maxQ(S_,A_))和Q估计(Q(S,A))的差更新神经网络
这里有个问题,即图2中给出的好像是根据所有输出的Q值进行更新,而实际的Q-learning只会更新选择的那个Q值。我这里介绍的思路也是更新选择的Q值,未选择的不予以更新。