主要内容

rlPrioritizedReplayMemory

优先采样重放记忆体验缓冲区

    描述

    非策略强化学习代理将经验存储在循环经验缓冲区中。在训练过程中,代理从缓冲区中提取小批量的经验,并使用这些小批量更新它的角色函数和临界函数逼近器。

    缺省情况下,内置的off-policy代理(DQN、DDPG、TD3、SAC、MBPO)使用rlReplayMemory对象作为他们的经验缓冲。代理统一地从该缓冲区采样数据。执行非均匀优先抽样[1],可以在训练代理时提高样本效率rlPrioritizedReplayMemory对象。有关优先抽样的更多信息,请参见算法

    创建

    描述

    例子

    缓冲= rlPrioritizedReplayMemory (obsInfoactInfo中的观察和操作规范兼容的优先重放记忆体验缓冲区obsInfo而且actInfo,分别。

    缓冲= rlPrioritizedReplayMemory (obsInfoactInfo最大长度属性来设置缓冲区的最大长度最大长度财产。

    输入参数

    全部展开

    观测规范,指定为强化学习规范对象或定义属性(如尺寸、数据类型和观测信号名称)的规范对象数组。

    可以从现有环境或代理中提取观察规范getObservationInfo.还可以使用手动构造规范rlFiniteSetSpecrlNumericSpec

    动作规范,指定为强化学习规范对象,定义诸如尺寸、数据类型和动作信号的名称等属性。

    可以从现有环境或代理中提取操作规范getActionInfo.您还可以使用手动构造规范rlFiniteSetSpecrlNumericSpec

    属性

    全部展开

    此属性是只读的。

    最大缓冲区长度,指定为正整数。

    此属性是只读的。

    缓冲区中的经验数,指定为非负整数。

    优先级指数,用于控制概率计算中优先级的影响,指定为小于或等于1的非负标量。

    如果优先级指数为零,则代理采用统一采样。

    重要性抽样指数的初始值,指定为小于或等于1的非负标量

    更新重要性抽样指数的退火步骤数,指定为正整数。

    此属性是只读的。

    重要性抽样指数的当前值,指定为小于或等于1的非负标量。

    在培训期间,ImportanceSamplingExponentInitialImportanceSamplingExponent1 /NumAnnealingSteps步骤。

    对象的功能

    附加 将经验附加到回放内存缓冲区
    样本 回放记忆缓冲区中的经验样本
    调整 调整重放记忆体验缓冲区的大小
    allExperiences 返回回放内存缓冲区中的所有经验
    getActionInfo 从强化学习环境、代理或经验缓冲区获取动作数据规范
    getObservationInfo 从强化学习环境、agent或经验缓冲区获取观测数据规格
    重置 重置环境、代理、经验缓冲区或策略对象

    例子

    全部折叠

    为培训代理创建一个环境。对于本例,加载一个预定义的环境。

    env = rlPredefinedEnv (“SimplePendulumWithImage-Discrete”);

    从代理中提取观察和操作规范。

    obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);

    根据环境规范创建DQN代理。

    代理= rlDQNAgent (obsInfo actInfo);

    默认情况下,代理使用带有统一采样的重放记忆体验缓冲区。

    将默认体验缓冲区替换为优先重放记忆缓冲区。

    代理。ExperienceBuffer = rlPrioritizedReplayMemory (obsInfo actInfo);

    配置优先重放内存选项。例如,设置初始重要性抽样指数为0.5以及在训练过程中更新指数的退火步骤数1 e4

    agent.ExperienceBuffer.NumAnnealingSteps = 1 e4;agent.ExperienceBuffer.PriorityExponent = 0.5;agent.ExperienceBuffer.InitialImportanceSamplingExponent = 0.5;

    限制

    • 优先体验回放不支持使用循环神经网络的代理。

    算法

    根据经验优先级优先重放记忆样本经验。对于一个给定的经验,优先级被定义为相关的时间差异(TD)误差的绝对值。一个较大的TD误差表明批评网络没有得到相应经验的良好训练。因此,在批评家更新过程中对这些经验进行抽样,有助于有效地提高批评家的性能,这往往提高了agent训练的样本效率。

    当使用优先重放记忆时,代理在抽样小批经验和更新评论时使用以下过程。

    1. 计算抽样概率P对于基于经验优先级的缓冲区中的每个经验。

      P j p j α 1 N p α

      在这里:

      • N重放内存缓冲区中的经验数是多少

      • p是经验优先级。

      • α是优先级指数。设置α,可以使用PriorityExponent参数。

    2. 根据计算出的概率抽样一小批经验。

    3. 计算重要抽样权重(w)为抽样经验。

      w j N P j β w j w j 马克斯 mini-batch w

      在这里,β为重要性抽样指数。的ImportanceSamplingExponent参数的当前值β.控制β,设置ImportanceSamplingExponent而且NumAnnealingSteps参数。

    4. 利用重要抽样权值计算加权损失w和TD误差δ更新评论

    5. 根据TD错误更新采样经验的优先级。

      p j | δ |

    6. 更新重要性抽样指数β通过对指数值进行线性退火,直到它达到1。

      β β + 1 β 0 N 年代

      在这里:

      • β0为初始重要性抽样指数。指定β0,可以使用InitialImportanceSamplingExponent参数。

      • N年代是退火步骤数。指定N年代,可以使用NumAnnealingSteps参数。

    参考文献

    [1] Schaul, Tom, John Quan, Ioannis Antonoglou和David Silver。“优先体验重演”。arXiv: 1511.05952 (Cs)2016年2月25日。https://arxiv.org/abs/1511.05952

    版本历史

    介绍了R2022b

    另请参阅

    Baidu
    map