Multi-step DQN(多步DQN)是一种强化学习算法,是在经典的深度Q网络(DQN)的基础上进行扩展的。它通过引入多步回报(multi-step return)来加速学习和提高样本效率。
传统的DQN算法使用一步回报(one-step return),即在每个时间步只考虑当前奖励和下一个状态的Q值。而Multi-step DQN则通过考虑未来多个时间步的奖励来计算回报,从而更充分地利用了环境的延迟奖励信号。
Multi-step DQN的核心思想是使用一个固定的步数n来定义多步回报,记为n-step return。在每个时间步,从当前状态开始,执行n步动作,累积对应的奖励,并以n步后的状态的Q值作为目标值进行训练。
算法步骤如下:
-
初始化一个深度神经网络作为值函数近似器,用于估计状态动作值函数Q(s, a)。
-
初始化经验回放缓冲区,用于存储交互数据。
-
对于每个时间步,执行以下步骤:
a. 根据当前状态选择动作,可以使用ε-greedy等策略。
b. 执行选定的动作,观察下一个状态和奖励。
c. 将当前状态、动作、奖励、下一个状态和终止状态信息存储到经验回放缓冲区中。
d. 如果经验回放缓冲区中的样本数量达到一定阈值,从缓冲区中随机抽样一批样本用于训练。
对于每个样本,计算n-step return,即从当前步开始执行n步动作后的累积奖励。
使用n-step后的状态的Q值作为目标值,计算损失并更新值函数近似器的参数。e. 更新当前状态为下一个状态。
-
重复步骤3直到达到预设的训练轮数或收敛条件。
Multi-step DQN通过引入多步回报来增加了学习的速度和效率,同时更好地利用了环境中的延迟奖励信号。通过在训练过程中使用n-step return作为目标值,可以减少更新的方差,从而提高训练的稳定性和效果。
仿真的时候要倒序写,因为要算n-steps的reward,step越靠前面,乘的$\gamma$的次方就越多,所有先从最后面的step数据,然后依次累加