深Q-Network (DQN)代理
深Q-network (DQN)算法是一个模范自由,在网上,off-policy强化学习方法。DQN代理是一个基于价值观的强化学习代理列车评论家估计返回或未来的回报。DQN q学习的变种。q学习的更多信息,请参阅q学习的代理。
更多信息在不同类型的强化学习代理,看看强化学习代理。
DQN代理可以用下面的训练环境中观察和行动空间。
观察太空 | 行动空间 |
---|---|
连续或离散 | 离散 |
DQN代理使用下面的评论家。
评论家 | 演员 |
---|---|
核反应能量函数评论家问(年代,一个),您将创建使用 |
DQN代理不使用一个演员。 |
在培训期间,代理:
更新评论家属性在每个时间步在学习。
探讨了使用epsilon-greedy勘探行动空间。在每个控制区间,代理的概率随机选择一个行动ϵ或选择一个行动贪婪地对值函数与概率1 -ϵ。这个贪婪的行动的行动值函数是最大的。
商店过去的经验使用循环缓冲区的经验。代理更新评论家基于mini-batch经历随机取样的缓冲区。
评论家函数近似者
估计的价值函数,DQN代理维护两个函数近似者:
评论家问(年代,一个;ϕ)——评论家,参数ϕ需要观察年代和行动一个作为输入,并返回相应的预期的长期回报。
目标评论家问t(年代,一个;ϕt)——提高稳定性的优化,代理定期更新目标评论家参数ϕt使用最新的评论家参数值。
这两个问(年代,一个;ϕ),问t(年代,一个;ϕt)具有相同的结构和参数。
更多信息为价值创造批评者函数近似,明白了创建政策和价值功能。
在培训期间,代理曲调的参数值ϕ。培训后,参数保持在其调谐值和训练价值函数近似者存储在评论家问(年代,一个)。
代理创建
您可以创建和训练在MATLAB DQN代理®命令行或使用强化学习设计应用。有关创建代理使用的更多信息强化学习设计,请参阅使用强化学习设计师创建代理。
在命令行上,您可以创建一个DQN代理与评论家从环境中基于观察和操作规范。为此,执行以下步骤。
为您的环境创建观测规范。如果你已经有一个环境接口对象,您可以获得这些规范使用
getObservationInfo
。为您的环境创建动作规范。如果你已经有一个环境接口对象,您可以获得这些规范使用
getActionInfo
。如果需要,指定数量的神经元在每个可学的层或者是否使用一个LSTM层。为此,创建一个代理初始化选项对象使用
rlAgentInitializationOptions
。如果需要,使用一个指定代理选项
rlDQNAgentOptions
对象。使用一个创建代理
rlDQNAgent
对象。
或者,您可以创建演员和评论家和使用这些对象来创建你的代理。在这种情况下,确保演员和评论家的输入和输出维度匹配相应的行动和观测环境的规范。
创建一个使用一个评论家
rlQValueFunction
对象。使用一个指定代理选项
rlDQNAgentOptions
对象。使用一个创建代理
rlDQNAgent
对象。
DQN代理支持批评家使金宝app用复发性深层神经网络函数的估计值。
更多信息为函数近似创造演员和批评者,明白了创建政策和价值功能。
训练算法
DQN代理使用下面的训练算法,在每个时间步他们更新他们的批评模式。配置训练算法,使用一个指定选项rlDQNAgentOptions
对象。
初始化批评问(年代,一个;ϕ)和随机参数值ϕ和初始化目标评论家参数ϕt使用相同的值。 。
对于每一个培训时间步骤:
为当前的观测年代,选择一个随机的行动一个的概率ϵ。否则,选择行动的批评价值函数是最大的。
指定ϵ和它的衰变率,使用
EpsilonGreedyExploration
选择。执行动作一个。观察奖励R其次观察年代。
存储经验(年代,一个,R,年代在缓冲区的经验。
样本的随机mini-batch米经验(年代我,一个我,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 |
引用
[1]Mnih之上,Koray Kavukcuoglu,大卫银,亚历克斯·坟墓Ioannis Antonoglou,她女儿Wierstra,马丁Riedmiller。“玩雅达利与深度强化学习。”ArXiv: 1312.5602 (Cs),2013年12月19日。https://arxiv.org/abs/1312.5602。