主要内容

软演员批评者

软演员 - 评论家(SAC)算法是一种无型号,在线,违规政策演员 - 批评批评学习方法。SAC算法计算了最佳策略,最大化了长期预期奖励和策略的熵。政策熵是鉴于国家的政策不确定性的衡量标准。更高的熵值促进了更多的探索。最大化预期的累积长期奖励和熵余额以及环境的开发和探索。

有关不同类型的强化学习代理商的更多信息,请参阅加固学习代理人

加固学习工具箱™软件中SAC代理的实现使用了两个Q值函数批评,这可以防止高估值函数。SAC算法的其他实现使用额外的值函数批评。

囊试剂可以在具有以下观察和行动空间的环境中培训。

观察空间 行动空间
离散或连续 连续的

SAC Agents使用以下演员和批评者表示。

评论家 演员

Q值功能评论家q(s,a),您创建使用rlqvalueerepresentation

随机政策演员π(s),您创建使用rlstochastorrepresentation

在培训期间,囊代理:

  • 在学习期间以定期的间隔更新演员和批评者属性。

  • 估计连续动作空间的高斯概率分布的均值和标准差,然后根据该分布随机选择动作。

  • 更新熵权序,该熵权限余额余额余额和策略的熵。

  • 使用圆形经验缓冲区存储过去的经验。代理使用从缓冲区随机采样的迷你批次体验更新演员和批评者。

如果是Usedeterministicexploitation.选项rlsacagentoptions.被设置为真的始终使用最大可能性的动作SIM生成policyfunction..这将导致模拟的代理和生成的策略具有确定性的行为。

演员和评论家功能

要估算策略和值函数,SAC代理维护以下功能近似器:

  • 随机的演员μ.S.) - 演员采取观察S.并返回动作概率密度函数。代理随机选择基于该密度函数的动作。

  • 一个或两个Q值批评者问:K.S.一种) - 批评者采取观察S.和行动一种作为输入并返回值函数的相应期望,包括长期奖励和熵。

  • 一个或两个目标批评者问的K.S.一种) - 为了提高优化的稳定性,代理将根据批评者的最新参数值定期更新目标批评。目标批评人数符合批评人数的数量。

当你使用两个批评者时,问:1S.一种) 和问:2S.一种),每个评论家都可以具有不同的结构。当批评者具有相同的结构时,它们必须具有不同的初始参数值。

对于每一个评论家,问:K.S.一种) 和问的K.S.一种)具有相同的结构和参数化。

培训完成后,培训的最佳策略存储在演员中μ.S.)。

行动的一代

SAC Agent中的演员产生平均值和标准偏差输出。为了选择一个动作,Actor首先随机地从高斯分布与这些参数选择无限的动作。在培训期间,SAC代理使用无限的概率分布来计算给定观察的策略的熵。

如果SAC代理的动作空间被界定,则该actor通过应用生成有界动作塔尼缩放对无限行动的操作。

从高斯分布中随机选择的无界动作产生有界行动

代理创作

您可以根据来自环境的观察和行动规范创建具有默认演员和批评者表示的SAC代理。为此,请执行以下步骤。

  1. 为您的环境创建观察规范。如果您已有环境界面对象,可以使用环境界面对象getObservationInfo

  2. 为环境创建动作规范。如果您已有环境界面对象,可以使用环境界面对象getActionInfo.

  3. 如果需要,请指定每个学习层中的神经元数或是否使用经常性神经网络。为此,请使用Agent初始化选项对象使用rlagentinitializationOptions.

  4. 如果需要,请使用一个指定代理选项rlsacagentoptions.目的。

  5. 使用一个创建代理rlsacagent.目的。

或者,您可以创建Actor和批评批读表示,并使用这些表示来创建代理。在这种情况下,确保演员和批评者表示的输入和输出尺寸与环境的相应动作和观察规范匹配。

  1. 使用一个创建一个随机演员rlstochastorrepresentation目的。对于囊代理,演员网络不得包含一个Tanhlayer.scalinglayer.在平均输出路径中。

  2. 使用一个或两个批评者使用rlqvalueerepresentation对象。

  3. 使用一个指定代理选项rlsacagentoptions.目的。

  4. 使用一个创建代理rlsacagent.目的。

囊代理不支持使用经常性深神经网络作为万博1manbetx功能近似器的演员和批评者。

有关创建函数近似的演员和批评者的更多信息,请参阅创建策略和值函数表示

培训算法

SAC agent使用以下训练算法,定期更新其actor和critic模型以及熵权。要配置训练算法,请使用rlsacagentoptions.目的。这里,K.= 2是批评者的数量和K.是批评索引。

  • 初始化每个评论家问:K.S.一种)随机参数值θ.QK.,并用相同的随机参数值初始化每个目标批评家: θ. 问: K. ' = θ. 问: K.

  • 初始化的演员μ.S.)随机参数值θ.μ.

  • 通过在初始随机策略之后采取一系列动作来执行温暖的开始μ.S.)。对于每个动作,存储在体验缓冲区中的经验。要指定热身操作的数量,请使用NumWarmStartSteps选项。

  • 对于每个培训时间步骤:

    1. 目前的观察S.,选择Action.一种使用政策μ.S.)。

    2. 执行动作一种.观察奖励R.和下一次观察S'

    3. 存储体验(S.一种R.S')在经验缓冲区中。

    4. 随机取样一小批m经验(S.一世一种一世R.一世S'一世)从经验缓冲区。指定m, 使用小匹匹匹匹配选项。

    5. 每一个D.C时间步骤,通过最大限度地减少损耗来更新每个批评的参数L.K.所有抽样的经验。指定D.C, 使用批判频繁选项。

      L. K. = 1 m σ. 一世 = 1 m y 一世 - 问: K. S. 一世 一种 一世 | θ. 问: K. 2

      如果S'一世是终端状态,值函数目标y一世等于经验奖励R.一世.否则,值函数目标是总和R.一世,批评者的最低折扣未来奖励,以及加权熵H

      y 一世 = R. 一世 + γ. * K. 问: K. ' S. 一世 ' 一种 一世 ' | θ. 问: K. ' + α. H μ. S. 一世 ' | θ. μ.

      这里:

      • 一种'一世是源自actor的无限输出的有界动作μ.S'一世)。

      • γ.是您使用贴纸物选项。

      • H为策略熵,它是对参与者的无界输出进行计算的。

      • α.是熵调整重量,赛后训练期间的曲调。

    6. 每一个D.一种时间步骤,通过最小化以下目标函数来更新Actor参数。设置D.一种, 使用policyupdateFrequency选项。

      j μ. = 1 m σ. 一世 = 1 m - K. 问: K. ' S. 一世 一种 一世 | θ. 问: K. ' - α. H μ. S. 一世 | θ. μ.

    7. 每一个D.一种时间步骤,还通过最小化以下损耗函数来更新熵权。

      L. α. = 1 m σ. 一世 = 1 m α. H ' - α. H μ. S. 一世 | θ. μ. 2

      这里,H'是目标熵,您使用该目标熵使用entroptweightoptions.targetentropy.选项。

    8. 每一个D.T.步骤,根据目标更新方法更新目标批评。指定D.T., 使用TargetupdateFrequency.选项。有关更多信息,请参阅目标更新方法

    9. 重复步骤4到8NG次,在哪里NG是您使用的渐变步骤的数量,您可以使用该步骤数numgradientstepsperupdate.选项。

目标更新方法

SAC代理使用以下目标更新方法之一更新其目标批读参数。

  • 平滑-使用平滑因子在每次步骤中更新目标批评家参数τ.要指定平滑系数,请使用targetsmoothfactor.选项。

    θ. 问: K. ' = τ θ. 问: K. + 1 - τ θ. 问: K. '

  • 定期 - 定期更新目标批读参数而不进行平滑(targetsmoothfactor = 1)。要指定更新期间,请使用TargetupdateFrequency.范围。

    θ. 问: K. ' = θ. 问: K.

  • 定期平滑 - 通过平滑定期更新目标参数。

要配置目标更新方法,请创建rlsacagentoptions.对象,并设置TargetupdateFrequency.targetsmoothfactor.参数如下表所示。

更新方法 TargetupdateFrequency. targetsmoothfactor.
平滑(默认) 1 小于1
定期 大于1 1
定期平滑 大于1 小于1

参考文献

[1] Haarnoja,Tuomas,Aurick Zhou,Kristian Hartikainen,乔治Tucker,Sehoon Ha,Jie Tan,Vikash Kumar,等。“软演员 - 评论家算法和应用。”预印文,2019年1月29日提交。https://arxiv.org/abs/1812.05905

也可以看看

|

相关的话题