DQN (Deep Q-Network)代理
深度q -网络(deep Q-network, DQN)算法是一种无模型、在线、非策略强化学习方法。DQN代理是一种基于价值的强化学习代理,它训练批评家估计回报或未来的回报。DQN是q学习的一种变体。有关q学习的更多信息,请参见q学习的代理.
有关不同类型的强化学习代理的更多信息,请参见强化学习代理.
DQN代理可以在具有以下观察和行动空间的环境中进行训练。
观察太空 | 行动空间 |
---|---|
连续或离散 | 离散 |
DQN代理使用以下批评。
评论家 | 演员 |
---|---|
核反应能量函数评论家问(年代,一个),您可以使用 |
DQN代理不使用参与者。 |
培训期间,代理人:
在学习过程中的每个时间步骤更新批评家属性。
使用epsilon-greedy探索动作空间。在每个控制间隔内,代理要么选择一个具有概率的随机动作ϵ或者贪婪地选择一个行为相对于概率为1-的值函数ϵ.贪婪行为是价值函数最大的行为。
使用循环经验缓冲区存储过去的经验。代理根据从缓冲区随机抽样的小批经验更新评论。
评论家函数近似者
为了估计值函数,DQN代理维护两个函数逼近器:
评论家问(年代,一个;ϕ) -批评家,有参数ϕ需要观察年代和行动一个作为投入和回报的相应期望长期回报。
目标评论家问t(年代,一个;ϕt) -为了提高优化的稳定性,agent定期更新目标临界参数ϕt使用最新的批评家参数值。
这两个问(年代,一个;ϕ),问t(年代,一个;ϕt)具有相同的结构和参数化。
有关为值函数近似创建批评者的更多信息,请参见创建政策和价值功能.
在训练过程中,代理调整参数值ϕ.训练后,参数保持在其调优值,训练后的值函数近似器存储在临界值中问(年代,一个).
代理创建
您可以在MATLAB中创建和训练DQN代理®命令行或使用强化学习设计有关使用强化学习设计,请参阅使用强化学习设计器创建代理.
在命令行中,您可以根据来自环境的观察和操作规范创建具有批评的DQN代理。为此,请执行以下步骤。
为您的环境创建观察规范。如果您已经有了一个环境接口对象,您可以使用
getObservationInfo
.为您的环境创建操作规范。如果您已经有了一个环境接口对象,您可以使用
getActionInfo
.如果需要,指定每个可学习层中的神经元数量,或者是否使用LSTM层。为此,使用创建代理初始化选项对象
rlAgentInitializationOptions
.如果需要,可以使用
rlDQNAgentOptions
对象。方法创建代理
rlDQNAgent
对象。
或者,您可以创建演员和评论家,并使用这些对象创建代理。在这种情况下,确保行动者和批评家的输入和输出维度与环境的相应动作和观察规范相匹配。
创建一个评论
rlQValueFunction
对象。方法指定代理选项
rlDQNAgentOptions
对象。方法创建代理
rlDQNAgent
对象。
DQN代理支持使用循环深度神经网络作为函数逼近器的批评者。
有关为函数近似创建参与者和批评者的更多信息,请参见创建政策和价值功能.
训练算法
DQN代理使用以下训练算法,其中它们在每个时间步更新它们的批评模型。要配置训练算法,请使用rlDQNAgentOptions
对象。
初始化批评问(年代,一个;ϕ),参数值随机ϕ,并初始化目标批评家参数ϕt有着相同的价值观。 .
对于每个训练时间步骤:
对于目前的观测年代,选择一个随机动作一个的概率ϵ.否则,选择临界值函数最大的动作。
指定ϵ它的衰减率,用
EpsilonGreedyExploration
选择。执行动作一个.观察奖励R其次观察年代.
储存经验(年代,一个,R,年代)在经验缓冲区中。
随机抽样一小批米经验(年代我,一个我,R我,年代我)的经验缓冲。指定米,可以使用
MiniBatchSize
选择。如果年代我是终端状态下,设定的价值功能目标y我来R我.否则,设置为
设置折现因子γ,可以使用
DiscountFactor
选择。若要使用双DQN,请设置UseDoubleDQN
选项真正的
.通过一步最小化损失来更新临界参数l在所有抽样的经历中。
根据目标更新方法更新目标批评家参数。有关更多信息,请参见目标更新方法.
更新概率阈值ϵ方法中指定的衰减速率来选择随机动作
EpsilonGreedyExploration
选择。
目标更新方法
DQN代理使用下列目标更新方法之一更新其目标批评者参数。
平滑—使用平滑因子在每一个时间步更新目标参数τ.要指定平滑因子,请使用
TargetSmoothFactor
选择。周期-定期更新目标参数,不平滑(
TargetSmoothFactor = 1
).命令指定更新周期TargetUpdateFrequency
参数。周期性的平滑—定期对目标参数进行平滑更新。
要配置目标更新方法,请创建rlDQNAgentOptions
对象,并设置TargetUpdateFrequency
而且TargetSmoothFactor
参数说明如下表所示。
更新方法 | TargetUpdateFrequency |
TargetSmoothFactor |
---|---|---|
平滑(默认) | 1 |
不到1 |
周期 | 大于1 |
1 |
周期性的平滑 | 大于1 |
不到1 |
参考文献
Mnih, Volodymyr, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis Antonoglou, Daan Wierstra和Martin Riedmiller。“用深度强化学习玩雅达利。”ArXiv: 1312.5602 (Cs)2013年12月19日。https://arxiv.org/abs/1312.5602.