双延迟深度确定性策略梯度(TD3)算法是一种无模型、在线、非策略强化学习方法。TD3代理是一个行动者-批评者强化学习代理,它搜索一个最优策略,使预期累积的长期回报最大化。
有关不同类型的强化学习代理的更多信息,请参见强化学习代理。
TD3算法是对DDPG算法的扩展。DDPG代理可能会过高估计价值函数,从而产生次优策略。为了减少值函数的过高估计,对DDPG算法进行了如下修改。
TD3 agent学习两个q值函数,并在策略更新时使用最小值函数估计。
TD3代理更新策略和目标的频率低于Q函数。
当更新策略时,TD3代理将噪声添加到目标操作中,这使得策略不太可能利用具有高q值估计的操作。
您可以使用TD3代理实现以下训练算法之一,具体取决于您指定的批评者数量。
TD3 -用两个q值函数训练agent。该算法实现了上述所有三种修改。
延迟DDPG -用单q值函数训练agent。该算法训练一个具有目标策略平滑、延迟策略和目标更新的DDPG代理。
TD3代理可以在具有以下观察和行动空间的环境中进行培训。
观察太空 | 行动空间 |
---|---|
连续的还是离散的 | 连续 |
TD3代理使用以下演员和评论家表示。
评论家 | 演员 |
---|---|
核反应能量函数评论家问(,),您可以使用 |
确定的政策的演员π(S),您可以使用 |
在培训期间,TD3 agent:
在学习过程中的每个时间步更新演员和评论家属性。
使用循环体验缓冲区存储过去的体验。代理使用从缓冲区中随机抽取的一小批经验来更新演员和评论家。
在每个训练步骤使用随机噪声模型扰动策略所选择的动作。
为了估计策略和价值函数,TD3代理维护以下函数近似器:
确定的演员μ(年代)演员需要观察年代并回报相应的行动,使长期回报最大化。
目标的演员μ'(年代)—为了提高优化的稳定性,agent根据最新的actor参数值定期更新目标actor。
一两个q值批评家问k(年代,一个) -评论家需要观察年代和行动一个作为输入并返回相应的长期回报期望。
有一两个批评的目标Q'k(年代,一个)—为了提高优化的稳定性,agent根据批评家最新的参数值定期更新目标批评家。目标批评者的数量与批评者的数量相匹配。
这两个μ(年代),μ'(年代)具有相同的结构和参数化。
对于每一位评论家,问k(年代,一个),Q'k(年代,一个)具有相同的结构和参数化。
当使用两个批评者时,问1(年代,一个),问2(年代,一个),每个评论家可以有不同的结构,尽管当评论家有相同的结构时,TD3效果最好。当评论器具有相同的结构时,它们的初始参数必须不同。
当训练完成时,训练后的最优策略存储在actor中μ(年代).
有关为函数近似创建actor和批评者的更多信息,请参见创建策略和价值功能表示。
您可以根据环境中的观察和操作规范,创建具有默认参与者和批评者表示的TD3代理。为此,请执行以下步骤。
为您的环境创建观察规范。如果您已经有了一个环境接口对象,您可以使用以下方法获取这些规范getObservationInfo
。
为您的环境创建操作规范。如果您已经有了一个环境接口对象,您可以使用以下方法获取这些规范getActionInfo
。
如果需要,指定每个可学习层的神经元数量或是否使用LSTM层。为此,使用以下方法创建代理初始化选项对象rlAgentInitializationOptions
。
如果需要,使用rlTD3AgentOptions
对象。
使用rlTD3Agent
对象。
或者,您可以创建参与者和批评者表示,并使用这些表示创建您的代理。在这种情况下,确保参与者和批评者表示的输入和输出维度与环境的相应操作和观察规范相匹配。
创建一个或两个批评家使用rlQValueRepresentation
对象。
指定代理选项rlTD3AgentOptions
对象。
使用rlTD3Agent
对象。
有关为函数近似创建actor和批评者的更多信息,请参见创建策略和价值功能表示。
TD3 agents使用如下的训练算法,在每个时间步更新它们的actor和critic模型。要配置训练算法,请使用rlDDPGAgentOptions
对象。在这里,K= 2是多少批评家和k是批评家索引。
初始化每个评论家问k(年代,一个),使用随机参数值θQk,并使用相同的随机参数值初始化每个目标批评家: 。
初始化参与者μ(年代),使用随机参数值θμ,并使用相同的参数值初始化目标参与者: 。
对于每个训练时间步:
对于当前的观测年代,选择行动一个=μ(年代) +N,在那里N为噪声模型中的随机噪声。要配置噪声模型,请使用ExplorationModel
选择。
执行动作一个。观察奖励R其次观察年代。
储存经验(年代,一个,R,年代)在经验缓冲区中。
随机抽取一小批样品米经验(年代我,一个我,R我,年代我)从经验缓冲区。指明米,可以使用MiniBatchSize
选择。
如果年代我是终端状态,设定值函数的目标吗y我来R我。否则,设置为
价值功能目标是经验奖励的总和R我以及来自批评者的最低折扣未来奖励。指定折扣系数的步骤γ,可以使用DiscountFactor
选择。
为了计算累积奖励,代理首先通过传递下一个观察值来计算下一个动作年代我从抽样的经验到目标参与者。然后,代理添加噪音ε的计算动作TargetPolicySmoothModel
,并根据上、下噪声限制剪辑动作。代理通过将下一个动作传递给目标批评者来获得累积奖励。
在每次训练步骤中,更新每个批评家的参数,使损失最小化lk所有抽样的经验。
每一个D1步骤,使用以下抽样策略梯度更新参与者参数,以最大化预期的折扣奖励。设置D1,可以使用PolicyUpdateFrequency
选择。
在这里,G人工智能是否由行动者网络计算出最小批评家输出相对于动作的梯度,和Gμ我是演员输出相对于演员参数的梯度。这两种梯度都是为了观察而评估的年代我。
每一个D2步骤,根据目标更新方法更新目标参与者和批评者。指定D2,可以使用TargetUpdateFrequency
选择。有关更多信息,请参见目标更新方法。
为简单起见,该算法的演员和评论家更新显示了使用基本随机梯度下降梯度更新。实际的梯度更新方法取决于您指定使用的优化器rlRepresentationOptions
。
TD3代理使用以下目标更新方法之一更新它们的目标参与者和批评者参数。
平滑-使用平滑因子在每个时间步骤更新目标参数τ。要指定平滑因子,请使用TargetSmoothFactor
选择。
周期定期更新目标参数,不需要平滑(TargetSmoothFactor = 1
).要指定更新周期,请使用TargetUpdateFrequency
参数。
周期性的平滑-使用平滑定期更新目标参数。
要配置目标更新方法,请创建rlTD3AgentOptions
对象,并设置TargetUpdateFrequency
和TargetSmoothFactor
参数如下表所示。
更新方法 | TargetUpdateFrequency |
TargetSmoothFactor |
---|---|---|
平滑(默认) | 1 |
不到1 |
周期 | 大于1 |
1 |
周期性的平滑 | 大于1 |
不到1 |
Fujimoto, Scott, Herke van Hoof和David Meger。“处理行为者-批评方法中的函数近似错误”。ArXiv: 1802.09477 (Cs,统计)2018年10月22日。https://arxiv.org/abs/1802.09477。