当前位置:   article > 正文

dqn系列梳理_强化学习--从DQN到PPO, 流程详解

dqn和ppo算法讲解

说在前面

本文只讲述强化学习常见算法的实现流程, 不涉及原理推倒, 原理上的东西, 推荐看李宏毅老师的强化学习课程。

本文包括:

Nature DQN, Double DQN, Prioritized Replay DQN, Dueling DQN, Policy Gradient, Actor-Critic, DDPG, PPO算法的流程。

本文流程是基于莫凡的RL代码进行梳理。

(建议同时打开两个页面,一边看流程图, 一边看流程说明)

Nature DQN

1、将环境信息s输入到eval网络, 输出为action的Q值,选择最大Q值对应的action, 或者随机生成一个action(所谓的探索),将action输入环境, 得到奖励r和下一个环境信息s_, 存储当前环境s, 选择的action, 得到的奖励r这4个信息, 然后再将s_输入到eval网络, 循环步骤1, 直到存储了一定量的[(s, a, r, s_), …], 注意这个过程中eval网络没有更新。

2、从存储的[(s, a, r, s_), …]中sample出一部分(s, a, r, s_) ,将sample出来的多个s做为batch输入到eval 网络, 得到batch的action的Q值q_eval, 然后根据sample出来的action选出其在q_eval中对应的Q值q_action_eval(对应gather过程)。

3、将sample出来的多个s_做为batch输入到target网络(eval与target有相同的网络结构), 得到batch的action的Q值q_next, 取q_next中最大的Q值(dim=1)并乘以一个系数gamma, 然后再加上sample出来的奖励r, 得到q_target。

4、计算loss:loss 为第2步的结果q_action_eval与第3步的结果q_target的MSE, 然后根据loss反向传播更新eval网络。

5、循环1到4步骤, 每过一定的步数后,将eval网络的权重更新到target网络上。

Double DQN

Double DQN 大部分和Nature DQN是一样的, 只是在计算q_target的时候不一样:

Nature DQN计算q_target时, 直接将sample的s_输入到target网络, 得到动作的Q值, 选出最大Q值。

而Double DQN 计算q_target,是先将sample的s_输入到target网络, 得到动作的Q值q_next, 同时将sample的s_输入到eval网络,得到动作的Q值q_eval`, 选出其最大Q值对应的动作, 再通过这个动作找到对应q_next

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号