Deep Q-Network (DQN)代理商
深度q -网络(deep Q-network, DQN)算法是一种无模型、在线、非策略强化学习方法。DQN代理是一种基于价值的强化学习代理,它训练评论家来估计回报或未来的奖励。DQN是q学习的一种变体。有关q学习的更多信息,请参见q学习的代理.
有关不同类型的强化学习代理的更多信息,请参见强化学习代理.
DQN智能体可以在具有以下观察和行动空间的环境中进行训练。
观察太空 | 行动空间 |
---|---|
连续或离散 | 离散 |
DQN代理使用以下批评家。
评论家 | 演员 |
---|---|
q值函数评论家问(年代,一个),您可以使用它来创建 |
DQN代理不使用参与者。 |
培训期间,代理:
在学习过程中的每个时间步骤更新批评属性。
使用贪心探索来探索动作空间。在每个控制区间内,智能体要么有概率地选择一个随机动作ϵ或者贪婪地选择一个行动相对于概率为1-的值函数ϵ.贪心行为是价值函数最大的行为。
使用循环经验缓冲区存储过去的经验。代理根据从缓冲区随机抽样的一小批经验更新评论。
临界函数逼近器
为了估计值函数,DQN代理维护两个函数逼近器:
评论家问(年代,一个;ϕ——批评家,带着参数ϕ,进行观察年代和行动一个作为投入和回报的相应期望的长期回报。
目标评论家问t(年代,一个;ϕt) -为了提高优化的稳定性,agent定期更新目标临界参数ϕt使用最新的批评家参数值。
这两个问(年代,一个;ϕ),问t(年代,一个;ϕt)具有相同的结构和参数化。
有关为值函数近似创建评论家的更多信息,请参见创建策略和值函数.
在训练期间,代理调整参数值ϕ.训练后,参数保持在其调谐值,训练后的值函数逼近器存储在批评家中问(年代,一个).
代理创建
您可以在MATLAB中创建和训练DQN代理®命令行或使用强化学习设计师使用. app创建代理的详细信息强化学习设计师,请参阅使用强化学习设计器创建代理.
在命令行上,您可以根据来自环境的观察和操作规范创建带有评论家的DQN代理。为此,请执行以下步骤。
为您的环境创建观察规范。如果已经有了环境接口对象,可以使用
getObservationInfo
.为您的环境创建操作规范。如果已经有了环境接口对象,可以使用
getActionInfo
.如果需要,指定每个可学习层中的神经元数量,或者是否使用LSTM层。为此,使用创建代理初始化选项对象
rlAgentInitializationOptions
.类型指定代理选项(如果需要)
rlDQNAgentOptions
对象。类创建代理
rlDQNAgent
对象。
或者,您可以创建actor和critic,并使用这些对象来创建您的代理。在这种情况下,确保参与者和评论家的输入和输出维度与环境的相应操作和观察规范相匹配。
创建一个评论家使用
rlQValueFunction
对象。属性指定代理选项
rlDQNAgentOptions
对象。类创建代理
rlDQNAgent
对象。
DQN代理支持使用循环万博1manbetx深度神经网络作为函数逼近器的评论家。
有关为函数近似创建actor和批评家的详细信息,请参见创建策略和值函数.
训练算法
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.