DQN解析
·
DQN使用神经网络来近似值函数,即神经网络的输入是state s,输出是Q(s,a),
通过神经网络计算出值函数后,DQN使用ϵ−greedy策略来输出action。值函数网络与ϵ−greedy策略之间的联系是这样的:首先环境会给出一个obs,智能体根据值函数网络得到关于这个obs的所有Q(s,a)Q(s,a),然后利用ϵ−greedy选择action并做出决策,环境接收到此action后会给出一个奖励Rew及下一个obs。这是一个step。此时我们根据Rew去更新值函数网络的参数。接着进入下一个step。如此循环下去,直到我们训练出了一个好的值函数网络。
相比于Q-Learning,DQN做的改进:一个是使用了卷积神经网络来逼近行为值函数,一个是使用了target Q network来更新target,还有一个是使用了经验回放Experience replay。
由于在强化学习中,我们得到的观测数据是有序的,step by step的,用这样的数据去更新神经网络的参数会有问题。回忆在有监督学习中,数据之间都是独立的。因此DQN中使用经验回放,即用一个Memory来存储经历过的数据,每次更新参数的时候从Memory中抽取一部分的数据来用于更新,以此来打破数据间的关联。
算法整体流程

DQN设计了两个网络,评估网络和目标网络,这两个网络在一开始拥有相同的结构和参数配置。在训练过程中,评估网络的参数不断地更新优化,只在一定间隔时间点将评估网络的参数赋给目标网络。评估网络根据输入的s状态给出预测的q_value,目标网络根据s_next的输入给出q_next,再将q_next代入Q-learning的核心递推式中可以得到q_target,最后loss(q_value,q_target)反向传播并优化参数即可不断地得到更好的神经网络,这样经过反复的训练优化后,智能体基本可以掌握各种状态下的action决策。
详细代码解析
https://blog.csdn.net/weixin_45552370/article/details/119788711
更多推荐



所有评论(0)