近端策略优化代理
近端策略优化(PPO)是一种无模型、在线、非策略、策略梯度强化学习方法。该算法是一种策略梯度训练,在通过环境交互采样数据和使用随机梯度下降优化裁剪的代理目标函数之间交替进行。截断的代理目标函数通过限制每一步策略变化的大小来提高训练稳定性[1]。
PPO是TRPO的简化版。TRPO的计算成本比PPO高,但如果环境动态是确定的,且观测是低维的,TRPO往往比PPO更健壮。有关TRPO代理的更多信息,请参见信任区域策略优化代理。
有关不同类型的强化学习代理的更多信息,请参见强化学习代理。
PPO代理可以在具有以下观察和行动空间的环境中进行训练。
观察太空 | 行动空间 |
---|---|
离散的还是连续的 | 离散的还是连续的 |
PPO代理使用以下演员和评论家。
评论家 | 演员 |
---|---|
价值函数批评家V(年代),您将使用 |
随机政策参与者π(年代),您将使用 |
培训期间,一名PPO代理:
估计在动作空间中采取每个动作的概率,并根据概率分布随机选择动作。
在使用小批量在多个时期更新参与者和评论家属性之前,使用当前策略与环境进行多个步骤的交互。
如果UseDeterministicExploitation
选项rlPPOAgentOptions
设为真正的
具有最大可能性的动作总是用于sim卡
和generatePolicyFunction
。因此,模拟代理和生成的策略的行为是确定性的。
演员和评论家函数逼近器
为了估计策略和值函数,PPO代理维护两个函数逼近器。
演员π(一个|年代;θ)——演员,带有参数θ,输出采取每个动作的条件概率一个处于状态时年代作为下列之一:
离散行动空间-采取每个离散行动的概率。所有动作的概率之和是1。
连续动作空间-每个连续动作的高斯概率分布的均值和标准差。
评论家V(年代;ϕ)——批评家,带着参数ϕ需要观察年代并返回相应的贴现长期回报的期望。
有关为函数近似创建演员和评论家的更多信息,请参见创建策略和价值功能。
在训练过程中,智能体调整参数值θ。训练后,参数保持在它们的调优值,训练后的actor函数逼近器存储在π(一个|年代)。
代理创建
您可以在MATLAB中创建和培训PPO代理®命令行或使用强化学习设计师创建代理的更多信息强化学习设计师,请参阅使用强化学习设计器创建代理。
在命令行中,您可以根据来自环境的观察和操作规范,创建具有默认参与者和评论家的PPO代理。为此,执行以下步骤。
为您的环境创建观察规范。如果已经有了环境接口对象,可以使用
getObservationInfo
。为您的环境创建操作规范。如果已经有了环境接口对象,可以使用
getActionInfo
。如果需要,指定每个可学习层中的神经元数量或是否使用LSTM层。为此,使用创建代理初始化选项对象
rlAgentInitializationOptions
。指定代理选项
rlPPOAgentOptions
对象。创建代理
rlPPOAgent
对象。
或者,您可以创建演员和评论家,并使用这些对象来创建代理。在这种情况下,确保演员和评论家的输入和输出维度与环境的相应动作和观察规范相匹配。
创建一个角色
rlDiscreteCategoricalActor
对象(用于离散的动作空间)或rlContinuousGaussianActor
对象(用于连续动作空间)。创建一个批评家
rlValueFunction
对象。选项指定代理选项
rlPPOAgentOptions
对象。类创建代理
rlPPOAgent
函数。
PPO代理支持演员和评金宝app论家使用循环深度神经网络作为函数逼近器。
有关为函数近似创建演员和评论家的更多信息,请参见创建策略和价值功能。
训练算法
PPO代理使用以下训练算法。要配置训练算法,请使用参数指定选项rlPPOAgentOptions
对象。
初始化角色π(一个|年代;θ),包含随机参数值θ。
初始化批评家V(年代;ϕ),包含随机参数值ϕ。
生成N遵循现行政策的经验。经验序列是
在这里,年代t是一个状态观察,一个t是从那个状态采取的行动,年代t + 1是下一个状态,和Rt + 1离开有奖励吗年代t来年代t + 1。
处于状态时年代t,智能体计算在动作空间中采取每个动作的概率π(一个|年代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
选择。
通过最小化参与者损失函数来更新参与者参数l演员跨所有采样的小批数据。
在这里:
D我和G我优势函数和返回值是否为我分别是小批量的元素。
π(一个我|年代我;θ)是采取行动的概率一个我处于状态时年代我,给定更新的策略参数θ。
π(一个我|年代我;θ老)是采取行动的概率一个我处于状态时年代我,给定前面的策略参数θ老从现在的学习时代开始。
ε剪辑因子是否使用
ClipFactor
选择。ℋ我(θ)为熵损失w熵损失权重因子是否使用
EntropyLossWeight
选择。有关熵损失的更多信息,请参见熵损失。
重复步骤3到步骤5,直到训练集达到结束状态。
熵损失
为了促进智能体的探索,你可以添加一个熵损失项wℋ我(θ,年代我)为行为人损失函数,其中w熵的损失权值是和吗ℋ我(θ,年代我)为熵。
当agent不确定下一步该采取什么行动时,熵值就会更高。因此,最大化熵损失项(最小化负熵损失)会增加代理的不确定性,从而鼓励探索。为了促进额外的探索,这可以帮助智能体移出局部最优,您可以指定更大的熵损失权值。
对于离散动作空间,代理使用以下熵值。在这种情况下,参与者输出采取每个可能的离散动作的概率。
在这里:
P是可能的离散动作的个数。
π(一个k|年代我;θ)是采取行动的概率一个k处于状态时年代我遵循现行政策。
对于连续的动作空间,代理使用以下熵值。在这种情况下,参与者输出每个连续动作的高斯分布的均值和标准差。
在这里:
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
舒尔曼、约翰、菲利普·莫里茨、谢尔盖·莱文、迈克尔·乔丹和彼得·阿比尔。基于广义优势估计的高维连续控制。ArXiv: 1506.02438 (Cs)2018年10月20日。https://arxiv.org/abs/1506.02438。