参考:感觉这篇写的挺详细了,按照自己的思路整理了一下
强化学习-----DQN(Deep Q-network)-CSDN博客
简单来说:就是把Q-learning中的Q-table变成了神经网络
以下图片为复制:
(复制)如图,神经网络的的输入是状态s,输出是对所有动作a的打分(Q-value)
(复制)神经网络的训练是一个最优化问题,把网络输出和标签值之间的差值作为损失函数,目标是让损失函数最小化,手段是通过反向传播使用梯度下降的方法来更新神经网络的参数。
这里就有一个问题了,正常情况下的标签值是固定的、确定的,那么这里目标网络具体是什么情况呢,如何运作的呢,有什么作用呢???
先简单有个印象:
Q-estimate:根据当前的状态s选择动作a;一直更新
Q-target:用于计算TD Target(Temporal-Difference Target),即下一个状态s'的最大Q值;定期更新
相同点:网络结构和初始权重相同
不同点:权重的更新频率不同;用处也不同
是什么:就是下面TD target公式里面的Q,即Q-target
下面step4&5的Q是Q-estimate
注:step1: 不是greddy,是greedy
为什么:这玩意用来干啥的?
总结:稳定学习过程
解释:正如前面所说一般神经网络的目标都是不动的,但是这里我们又不知道目标表是啥,我们要是知道目标是啥就不用训练了,直接出结果!
但又由于二者都在变化,直观感受收敛较慢,比如跑步比赛,我去追苏炳添,我还不如直接躺平,但如果他跑个一百米歇个二三十秒,我还能看到点希望。Q-target是苏,俺是Q-estimate。
怎么用:具体如何操作的?
Q-estimate:主要通过agent与环境的交互进行参数学习
(1)根据当前状态,由Q-estimate给出行动
(2)与环境交互后得到新状态和奖励,即有样本(当前状态,动作,奖励,新状态),基于此更新网络的参数
(3)为了逼近TD Target: r + γ * max_a' Q_target(s', a'):使用梯度下降算法,最小化TD Target与Q-estimate的平方差
Q-target:不用学,参数定期从Q-estimate复制。