近端策略优化(PPO)是一种无模型、在线、基于策略的策略梯度强化学习方法。该算法是一种策略梯度训练,它通过环境交互来交替采样数据和使用随机梯度下降来优化修剪过的代理目标函数。剪切的代理目标函数通过限制每一步策略变化的大小来提高训练的稳定性[1].
PPO是TRPO的简化版。在计算上,TRPO比PPO更昂贵,但如果环境动力学是确定性的,且观察是低维的,TRPO往往比PPO更稳健。有关TRPO代理的更多信息,请参见信任区域策略优化代理.
有关不同类型的强化学习代理的更多信息,请参见强化学习代理.
PPO代理人可以在以下观察和行动空间的环境中进行训练。
观察太空 | 行动空间 |
---|---|
离散或连续 | 离散或连续 |
PPO代理使用以下演员和评论家表示。
评论家 | 演员 |
---|---|
价值函数的评论家V(年代),您可以使用 |
随机政策演员π(年代),您可以使用 |
在培训期间,PPO代理人:
估计行动空间中采取每个行动的概率,并根据概率分布随机选择行动。
在使用小批量在多个时期内更新actor和影评属性之前,使用当前策略与环境进行多步骤交互。
如果UseDeterministicExploitation
选项rlPPOAgentOptions
被设置为真正的
动作的最大可能性总是用在sim卡
和generatePolicyFunction
.因此,模拟的代理和生成的策略的行为是确定的。
为了估计策略和价值功能,PPO代理维持两个功能近似器:
演员π(年代|θ) -演员,有参数θ需要观察年代并返回:
当处于状态时,在行动空间中采取每个行动的概率年代(对于离散的动作空间)
每个动作的高斯概率分布的均值和标准差(对于连续动作空间)
评论家V(年代|ϕ)——有参数的批评家ϕ需要观察年代并返回相应的贴现后长期回报的期望。
当训练完成时,训练后的最优策略存储在actor中π(年代).
有关为函数近似创建actor和批评者的更多信息,请参见创建策略和价值功能表示.
您可以在MATLAB中创建和培训PPO代理®命令行或使用强化学习设计应用程序。
有关使用强化学习设计,请参阅使用强化学习设计器创建代理.
在命令行中,您可以根据环境中的观察和操作规范,创建具有默认参与者和批评者表示形式的PPO代理。为此,请执行以下步骤。
为您的环境创建观察规范。如果您已经有了一个环境接口对象,您可以使用以下方法获取这些规范getObservationInfo
.
为您的环境创建操作规范。如果您已经有了一个环境接口对象,您可以使用以下方法获取这些规范getActionInfo
.
如果需要,指定每个可学习层的神经元数量或是否使用LSTM层。为此,使用以下方法创建代理初始化选项对象rlAgentInitializationOptions
.
指定代理选项rlPPOAgentOptions
对象。
使用rlPPOAgent
对象。
或者,您可以创建参与者和批评者表示,并使用这些表示创建您的代理。在这种情况下,确保参与者和批评者表示的输入和输出维度与环境的相应操作和观察规范相匹配。
创建一个批评家使用rlValueRepresentation
对象。
如果需要,使用rlPPOAgentOptions
对象。
属性创建代理rlPPOAgent
函数。
PPO代理支持使用循环金宝app深度神经网络作为函数近似器的行动者和批评者。
有关为函数近似创建actor和批评者的更多信息,请参见创建策略和价值功能表示.
PPO代理使用以下训练算法。要配置训练算法,请使用rlPPOAgentOptions
对象。
初始化的演员π(年代),使用随机参数值θ.
初始化批评V(年代),使用随机参数值ϕ.
生成N遵循当前政策的经验。经验序列是
在这里,年代t是一种状态观察,一个t是从那个州采取的行动,年代t + 1是下一个州,和Rt + 1是否收到搬家的奖励年代t来年代t + 1.
在国家年代t, agent利用动作空间计算采取每个动作的概率π(年代t)和随机选择行动一个t基于概率分布。
ts当前集的起始时间步长是否为N的经历。在训练开始时,ts= 1。对于每个后续的集合N在同一训练阶段的经历,ts←ts+N.
对于每一个不包含终结状态的体验序列,N等于ExperienceHorizon
选项值。否则,N小于ExperienceHorizon
和年代N是终端状态。
对于每个发作步骤t=ts+ 1,ts+ 2,…,ts+N,使用指定的方法计算返回和优势函数AdvantageEstimateMethod
选择。
指定折扣因子γ对于这两种方法,使用DiscountFactor
选择。
从小批量的经验中学习K时代的发展。指定K,可以使用NumEpoch
选择。对于每个学习时期:
抽样大小的随机小批量数据集米从目前的经验来看。指定米,可以使用MiniBatchSize
选择。迷你批处理数据集的每个元素都包含一个当前经验以及相应的返回和优势函数值。
通过最小化损失来更新批评家参数l评论家跨越所有抽样的小批数据。
使优势价值正常化D我基于近期未归一化的优势值。
如果NormalizedAdvantageMethod
选择是“没有”
,不要使优势价值正常化。
如果NormalizedAdvantageMethod
选择是“当前”
,根据当前小批处理中的未归一化优势对优势值进行归一化。
如果NormalizedAdvantageMethod
选择是“移动”
,在非归一化优势的基础上对优势值进行归一化N最近的优势,包括当前的优势价值。以指定窗口大小N,可以使用AdvantageNormalizingWindow
选择。
通过最小化actor损失函数来更新actor参数l演员跨越所有抽样的小批数据。
在这里:
D我和G我是否为优势函数和返回值我小批量的元素,分别。
π我(年代我|θ)是采取行动的概率一个我在国家年代我,给定更新的策略参数θ.
π我(年代我|θ老)是采取行动的概率一个我在国家年代我,给定前面的策略参数θ老在当前的学习时代之前。
ε是否使用ClipFactor
选择。
ℋ我(θ)为熵损失和w是熵损失重量因子,使用EntropyLossWeight
选择。有关熵损失的更多信息,请参见熵损失.
重复步骤3到步骤5,直到训练阶段到达终点。
为了促进agent的探索,可以添加熵损失项wℋ我(θ,年代我)为actor损失函数,其中w熵损失是重量和吗ℋ我(θ,年代我)是熵。
当agent对下一步的动作不确定时,熵值越大。因此,最大化熵损失项(最小化负熵损失)会增加agent的不确定性,从而鼓励探索。为了促进额外的探索(这可以帮助代理移出局部最优),您可以指定更大的熵损失权重。
对于离散的动作空间,代理使用如下的熵值。在这种情况下,行动者输出采取每个可能的离散行动的概率。
在这里:
P为可能的离散动作的数量。
πk(年代我|θ)是采取行动的概率一个k在国家年代我按照现行政策。
对于连续的动作空间,代理使用下面的熵值。在这种情况下,actor输出每个连续动作的高斯分布的均值和标准偏差。
在这里:
C是参与者输出的连续动作的数量。
σ凯西,我是否有行动的标准偏差k在国家年代我按照现行政策。
[1]舒尔曼、约翰、菲利普·沃尔斯基、普拉富拉·达里瓦尔、亚历克·雷德福和奥列格·克里莫夫。“近端策略优化算法”。ArXiv: 1707.06347 (Cs), 2017年7月19日。https://arxiv.org/abs/1707.06347.
[2] Mnih, Volodymyr, Adrià Puigdomènech Badia, Mehdi Mirza, Alex Graves, Timothy P. lilliicrap, Tim Harley, David Silver, Koray Kavukcuoglu。深度强化学习的异步方法ArXiv: 1602.01783 (Cs), 2016年2月4日。https://arxiv.org/abs/1602.01783.
[3]舒尔曼,约翰,菲利普·莫里茨,谢尔盖·莱文,迈克尔·乔丹和彼得·阿比尔。“利用广义优势估计的高维连续控制”。ArXiv: 1506.02438 (Cs)2018年10月20日。https://arxiv.org/abs/1506.02438.