强化学习原理与python实现原理pdf_深度强化学习笔记——DQN原理与实现(pytorch+gym)...

本文介绍了深度强化学习中的DQN算法,包括基本原理、目标网络、经验重放等关键元素,并探讨了Double DQN、Dueling DQN和优先级经验重放等优化技巧。此外,还提供了DQN在PyTorch环境下的实现及训练结果。
摘要由CSDN通过智能技术生成

概要

本文主要总结深度强化学习中无模型基于值方法的DQN算法,说明其算法原理并用该算法在gym提供的cartpole上进行实现。

有任何不准确或错误的地方望指正!

1. DQN(Deep Q-Network)基本原理

DQN算法相当于对传统Q-learning算法的改进,与之不同的是,DQN使用了神经网络(结构可以自行设计)对action value(即Q值)进行估计。

1.1 DQN算法的基本组成元素

DQN的伪代码如下,从中可以看出几个关键步骤:目标网络,

-greedy选择动作和经验重放机制。 (摘自《Human-level control through deep reinforcement learning》)

34d7ad8a47c7807434f5adb7ae84efd2.png

A. 目标网络(Target Network)

首先,目标网络解决的是一个「回归问题」(与分类问题中网络产生一个分布不同),其输入是环境的状态,输出是多个动作产生的不同值,也就是动作值。(实际过程中,我们需要通过索引来获取这个Q值,即

,这里的
代表网络中的参数)。确定了网络的输入输出之后,就需要解决如何更新网络中的这些参数的问题。

其思路就是基于贝尔曼方程,并利用temporal difference的方法,让target network和用于训练的网络(这里就简记为agent网络)的差值尽可能近似于收益值,该收益值指的是从当前状态经过决策之后到达下一个状态所获取的收益。需要注明的是,DQN中的target network的参数就是直接拷贝agent网络的参数,使用的是一样的网络结构。但是在实际训练中,只能通过固定target network的输出来训练agent,而固定该网络的输出的方法就是延迟更新target network的参数,使其在固定步骤内输出不变,这样能够有效化agent网络的参数更新过程。

f3ee5dfa79f5261857c8e49475942850.png

B. 经验重放(Experience Replay Buffer)

如果agent每次更新参数的时候都要与环境互动,这就大大降低了模型参数更新的效率,所以经验重放机制被提出。该机制就类似于一个有固定空间大小的存储器,把agent与环境互动所产生的部分结果(

)进行存储,其每一行的维数就是
(每次只能选取一个动作,得到的收益值也是一个标量)。等到了训练阶段的时候,每一次训练过程都会从该存储器中
「均匀采样」出一批 (batch) 数量的样本(总量远小于存储器的最大容量),用于agent网络模型参数的更新。

7dfcb4ef1da449c6c0901bfbf3c0b49d.png

C.

-greedy(策略的选择)

Q-learning中策略的选择(假设这里是确定性策略)就是选取能够使动作值达到最大的那个动作,用数学形式表示就是:

-greedy方法是贪心算法的一个变体。具体实现的方法就是先让程序由均匀分布生成一个
区间内的随机数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值