深度确定性策略梯度(deep deterministic policy gradient, DDPG)算法是一种无模型、在线、无策略的强化学习方法。DDPG代理是一个行动者-批评者强化学习代理,它寻找一个最优策略,使预期累积的长期回报最大化。
有关不同类型的强化学习代理的更多信息,请参见强化学习代理.
DDPG代理人可以在以下观察和行动空间的环境中进行训练。
观察太空 | 行动空间 |
---|---|
连续或离散 | 连续 |
DDPG代理商使用以下演员和评论家代表。
评论家 | 演员 |
---|---|
核反应能量函数评论家问(年代,一个),您可以使用 |
确定的政策的演员π(年代),您可以使用 |
培训期间,DDPG代理人:
在学习过程中的每个时间步骤更新演员和评论家属性。
使用循环体验缓冲区存储过去的体验。代理使用从缓冲区中随机抽取的一小批经验来更新演员和评论家。
在每个训练步骤使用随机噪声模型扰动策略所选择的动作。
为了估计策略和价值函数,DDPG代理维护四个函数近似器:
演员π(年代|θ) -演员,有参数θ需要观察年代并回报相应的行动,使长期回报最大化。
目标的演员πt(年代|θt)—为了提高优化的稳定性,代理定期设置目标actor参数θt更改为最新的actor参数值。
评论家问(年代,一个|ϕ)——有参数的批评家ϕ需要观察年代和行动一个作为输入并返回相应的长期回报期望。
目标评论家问t(年代,一个|ϕt)—为了提高优化的稳定性,agent定期设置目标批评家参数ϕt给最新的批评家参数值。
这两个问(年代,一个),问t(年代,一个)具有相同的结构和参数化π(年代),πt(年代)具有相同的结构和参数化。
当训练完成时,训练后的最优策略存储在actor中π(年代).
有关为函数近似创建actor和批评者的更多信息,请参见创建策略和价值功能表示.
您可以在MATLAB中创建和培训DDPG代理®命令行或使用强化学习设计应用程序。
有关使用强化学习设计,请参阅使用强化学习设计器创建代理.
在命令行中,您可以根据环境中的观察和操作规范,创建具有默认参与者和批评者表示形式的DDPG代理。为此,请执行以下步骤。
为您的环境创建观察规范。如果您已经有了一个环境接口对象,您可以使用以下方法获取这些规范getObservationInfo
.
为您的环境创建操作规范。如果您已经有了一个环境接口对象,您可以使用以下方法获取这些规范getActionInfo
.
如果需要,指定每个可学习层的神经元数量或是否使用LSTM层。为此,使用以下方法创建代理初始化选项对象rlAgentInitializationOptions
.
如果需要,使用rlDDPGAgentOptions
对象。
使用rlDDPGAgent
对象。
或者,您可以创建参与者和批评者表示,并使用这些表示创建您的代理。在这种情况下,确保参与者和批评者表示的输入和输出维度与环境的相应操作和观察规范相匹配。
创建一个批评家使用rlQValueRepresentation
对象。
指定代理选项rlDDPGAgentOptions
对象。
使用rlDDPGAgent
对象。
有关为函数近似创建actor和批评者的更多信息,请参见创建策略和价值功能表示.
DDPG代理使用以下训练算法,在每个时间步骤中更新他们的actor和critic模型。要配置训练算法,请使用rlDDPGAgentOptions
对象。
初始化批评问(年代,一个),使用随机参数值ϕ,并初始化目标批评家参数ϕt具有相同的值: .
初始化的演员π(年代),使用随机参数值θ,并初始化目标参与者参数θt具有相同的值: .
对于每个训练时间步:
对于当前的观测年代,选择行动一个=π(年代) +N,在那里N为噪声模型中的随机噪声。要配置噪声模型,请使用NoiseOptions
选择。
执行动作一个.观察奖励R其次观察年代.
储存经验(年代,一个,R,年代)在经验缓冲区中。属性中指定了经验缓冲区的长度ExperienceBufferLength
财产的rlDDPGAgentOptions
对象。
随机取样一小批M经验(年代我,一个我,R我,年代我)从经验缓冲区。指定M,可以使用MiniBatchSize
财产的rlDDPGAgentOptions
对象。
如果年代我是终端状态,设定值函数的目标吗y我来R我.否则,设置为
价值功能目标是经验奖励的总和R我以及贴现后的未来回报。指定折扣因子γ,可以使用DiscountFactor
选择。
为了计算累积奖励,代理首先通过传递下一个观察值来计算下一个动作年代我从抽样的经验到目标参与者。代理通过将下一个动作传递给目标批评者来获得累积奖励。
通过最小化损失来更新批评家参数l所有抽样的经验。
使用以下抽样策略梯度更新参与者参数,以最大化预期的折扣奖励。
在这里,G人工智能评论家输出相对于行为的梯度是由行动者网络计算的吗,和Gπ我是行动者输出相对于行动者参数的梯度。两个梯度都被评估以供观察年代我.
根据目标更新方法更新目标actor和批评家参数。有关更多信息,请参见目标更新方法.
为简单起见,该算法的演员和评论家更新显示了使用基本随机梯度下降梯度更新。实际的梯度更新方法取决于您指定使用的优化器rlRepresentationOptions
.
DDPG代理使用以下目标更新方法之一更新它们的目标actor和批评家参数。
平滑-使用平滑因子在每个时间步骤更新目标参数τ.要指定平滑因子,请使用TargetSmoothFactor
选择。
周期定期更新目标参数,不需要平滑(TargetSmoothFactor = 1
).要指定更新周期,请使用TargetUpdateFrequency
参数。
周期性的平滑—定期平滑更新目标参数。
要配置目标更新方法,请创建rlDDPGAgentOptions
对象,并设置TargetUpdateFrequency
和TargetSmoothFactor
参数如下表所示。
更新方法 | TargetUpdateFrequency |
TargetSmoothFactor |
---|---|---|
平滑(默认) | 1 |
不到1 |
周期 | 大于1 |
1 |
周期性的平滑 | 大于1 |
不到1 |
Lillicrap, Timothy P, Jonathan J. Hunt, Alexander Pritzel, Nicolas Heess, Tom Erez, Yuval Tassa, David Silver和Daan Wierstra。“深度强化学习的连续控制”。ArXiv: 1509.02971 (Cs,统计), 2015年9月9日。https://arxiv.org/abs/1509.02971.
rlDDPGAgent
|rlDDPGAgentOptions