主要内容

近端策略优化代理

近端策略优化(PPO)是一种无模型、在线、非策略、策略梯度强化学习方法。该算法是一种策略梯度训练,在通过环境交互采样数据和使用随机梯度下降优化裁剪的代理目标函数之间交替进行。截断的代理目标函数通过限制每一步策略变化的大小来提高训练稳定性[1]

PPO是TRPO的简化版。TRPO的计算成本比PPO高,但如果环境动态是确定的,且观测是低维的,TRPO往往比PPO更健壮。有关TRPO代理的更多信息,请参见信任区域策略优化代理

有关不同类型的强化学习代理的更多信息,请参见强化学习代理

PPO代理可以在具有以下观察和行动空间的环境中进行训练。

观察太空 行动空间
离散的还是连续的 离散的还是连续的

PPO代理使用以下演员和评论家。

评论家 演员

价值函数批评家V年代),您将使用rlValueFunction

随机政策参与者π年代),您将使用rlDiscreteCategoricalActor(用于离散的活动空间)或rlContinuousGaussianActor(适用于连续动作空间)

培训期间,一名PPO代理:

  • 估计在动作空间中采取每个动作的概率,并根据概率分布随机选择动作。

  • 在使用小批量在多个时期更新参与者和评论家属性之前,使用当前策略与环境进行多个步骤的交互。

如果UseDeterministicExploitation选项rlPPOAgentOptions设为真正的具有最大可能性的动作总是用于sim卡generatePolicyFunction。因此,模拟代理和生成的策略的行为是确定性的。

演员和评论家函数逼近器

为了估计策略和值函数,PPO代理维护两个函数逼近器。

  • 演员π一个|年代θ)——演员,带有参数θ,输出采取每个动作的条件概率一个处于状态时年代作为下列之一:

    • 离散行动空间-采取每个离散行动的概率。所有动作的概率之和是1。

    • 连续动作空间-每个连续动作的高斯概率分布的均值和标准差。

  • 评论家V年代ϕ)——批评家,带着参数ϕ需要观察年代并返回相应的贴现长期回报的期望。

有关为函数近似创建演员和评论家的更多信息,请参见创建策略和价值功能

在训练过程中,智能体调整参数值θ。训练后,参数保持在它们的调优值,训练后的actor函数逼近器存储在π一个|年代)。

代理创建

您可以在MATLAB中创建和培训PPO代理®命令行或使用强化学习设计师创建代理的更多信息强化学习设计师,请参阅使用强化学习设计器创建代理

在命令行中,您可以根据来自环境的观察和操作规范,创建具有默认参与者和评论家的PPO代理。为此,执行以下步骤。

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

  2. 为您的环境创建操作规范。如果已经有了环境接口对象,可以使用getActionInfo

  3. 如果需要,指定每个可学习层中的神经元数量或是否使用LSTM层。为此,使用创建代理初始化选项对象rlAgentInitializationOptions

  4. 指定代理选项rlPPOAgentOptions对象。

  5. 创建代理rlPPOAgent对象。

或者,您可以创建演员和评论家,并使用这些对象来创建代理。在这种情况下,确保演员和评论家的输入和输出维度与环境的相应动作和观察规范相匹配。

  1. 创建一个角色rlDiscreteCategoricalActor对象(用于离散的动作空间)或rlContinuousGaussianActor对象(用于连续动作空间)。

  2. 创建一个批评家rlValueFunction对象。

  3. 选项指定代理选项rlPPOAgentOptions对象。

  4. 类创建代理rlPPOAgent函数。

PPO代理支持演员和评金宝app论家使用循环深度神经网络作为函数逼近器。

有关为函数近似创建演员和评论家的更多信息,请参见创建策略和价值功能

训练算法

PPO代理使用以下训练算法。要配置训练算法,请使用参数指定选项rlPPOAgentOptions对象。

  1. 初始化角色π一个|年代θ),包含随机参数值θ

  2. 初始化批评家V年代ϕ),包含随机参数值ϕ

  3. 生成N遵循现行政策的经验。经验序列是

    年代 t 年代 一个 t 年代 R t 年代 + 1 年代 t 年代 + 1 年代 t 年代 + N 1 一个 t 年代 + N 1 R t 年代 + N 年代 t 年代 + N

    在这里,年代t是一个状态观察,一个t是从那个状态采取的行动,年代t + 1是下一个状态,和Rt + 1离开有奖励吗年代t年代t + 1

    处于状态时年代t,智能体计算在动作空间中采取每个动作的概率π一个|年代tθ),并随机选择动作一个t基于概率分布。

    ts当前集合的起始时间步长是N的经历。在训练的一开始,ts= 1。对于后续的每一组N同样的训练经历,tsts+N

    对于每一个不包含终结状态的体验序列,N等于ExperienceHorizon选项值。否则,N小于ExperienceHorizon年代N是终端状态。

  4. 对于每一个情节步骤t=ts+ 1,ts+ 2,…,ts+N中指定的方法计算返回值和优势函数AdvantageEstimateMethod选择。

    • 有限的地平线advantageestimatemmethod = " limited -horizon") -计算返回值Gt,即该步骤的奖励和贴现后的未来奖励之和[2]

      G t = k = t t 年代 + N γ k t R k + b γ N t + 1 V 年代 t 年代 + N ϕ

      在这里,b0如果年代t + N终末状态是和1否则。也就是说,如果年代t + N是不是一个终端状态,贴现的未来奖励包括贴现状态值函数,使用评论家网络计算V

      计算优势函数Dt

      D t = G t V 年代 t ϕ

    • 广义优势估计量advantageestimatemmethod = "gae") -计算优势函数Dt,即时间差误差的折现和[3]

      D t = k = t t 年代 + N 1 γ λ k t δ k δ k = R t + b γ V 年代 t ϕ

      在这里,b0如果年代t + N终末状态是和1否则。λ平滑因子是否使用GAEFactor选择。

      计算回报Gt

      G t = D t + V 年代 t ϕ

    来指定贴现因子γ对于这两种方法,都使用DiscountFactor选择。

  5. 从小批量的经验中学习K时代的发展。指定K,使用NumEpoch选择。对于每个学习阶段:

    1. 对大小的随机小批量数据集进行抽样从目前的经验中。指定,使用MiniBatchSize选择。小批数据集的每个元素都包含当前经验值和相应的返回值和优势函数值。

    2. 通过最小化损失来更新批评家参数l评论家跨所有采样的小批数据。

      l c r t c ϕ = 1 = 1 G V 年代 ϕ 2

    3. 标准化优势值D基于最近未标准化的优势值。

      • 如果NormalizedAdvantageMethod选择是“没有”,不要将优势值规范化。

        D D

      • 如果NormalizedAdvantageMethod选择是“当前”,根据当前小批量中未归一化的优势对优势值进行归一化。

        D D e 一个 n D 1 D 2 D 年代 t d D 1 D 2 D

      • 如果NormalizedAdvantageMethod选择是“移动”,将基于未归一化优势的优势值归一化N最近的优势,包括当前的优势价值。指定窗口大小N,使用AdvantageNormalizingWindow选择。

        D D e 一个 n D 1 D 2 D N 年代 t d D 1 D 2 D N

    4. 通过最小化参与者损失函数来更新参与者参数l演员跨所有采样的小批数据。

      l 一个 c t o r θ = 1 = 1 最小值 r θ D c θ D + w θ 年代 r θ = π 一个 | 年代 θ π 一个 | 年代 θ o l d c θ = 马克斯 最小值 r θ 1 + ε 1 ε

      在这里:

      • DG优势函数和返回值是否为分别是小批量的元素。

      • π一个|年代θ)是采取行动的概率一个处于状态时年代,给定更新的策略参数θ

      • π一个|年代θ)是采取行动的概率一个处于状态时年代,给定前面的策略参数θ从现在的学习时代开始。

      • ε剪辑因子是否使用ClipFactor选择。

      • θ)为熵损失w熵损失权重因子是否使用EntropyLossWeight选择。有关熵损失的更多信息,请参见熵损失

  6. 重复步骤3到步骤5,直到训练集达到结束状态。

熵损失

为了促进智能体的探索,你可以添加一个熵损失项wθ年代)为行为人损失函数,其中w熵的损失权值是和吗θ年代)为熵。

当agent不确定下一步该采取什么行动时,熵值就会更高。因此,最大化熵损失项(最小化负熵损失)会增加代理的不确定性,从而鼓励探索。为了促进额外的探索,这可以帮助智能体移出局部最优,您可以指定更大的熵损失权值。

对于离散动作空间,代理使用以下熵值。在这种情况下,参与者输出采取每个可能的离散动作的概率。

θ 年代 = k = 1 P π 一个 k | 年代 θ ln π 一个 k | 年代 θ

在这里:

  • P是可能的离散动作的个数。

  • π一个k|年代θ)是采取行动的概率一个k处于状态时年代遵循现行政策。

对于连续的动作空间,代理使用以下熵值。在这种情况下,参与者输出每个连续动作的高斯分布的均值和标准差。

θ 年代 = 1 2 k = 1 C ln 2 π e σ k 2

在这里:

  • C是参与者输出的连续动作的数量。

  • σ凯西,我行动的标准差是多少k处于状态时年代遵循现行政策。

参考文献

bbb Schulman, John, philip Wolski, Prafulla Dhariwal, Alec Radford和Oleg Klimov。“近端策略优化算法”。ArXiv: 1707.06347 (Cs)2017年7月19日。https://arxiv.org/abs/1707.06347

[2] Mnih, Volodymyr, adricomuigdom nech Badia, Mehdi Mirza, Alex Graves, Timothy P. Lillicrap, Tim Harley, David Silver和Koray Kavukcuoglu。深度强化学习的异步方法。ArXiv: 1602.01783 (Cs)2016年2月4日。https://arxiv.org/abs/1602.01783

舒尔曼、约翰、菲利普·莫里茨、谢尔盖·莱文、迈克尔·乔丹和彼得·阿比尔。基于广义优势估计的高维连续控制。ArXiv: 1506.02438 (Cs)2018年10月20日。https://arxiv.org/abs/1506.02438

另请参阅

|

相关的话题