基于模型的策略优化代理
基于模型的策略优化(MBPO)是一种基于模型的、在线的、非策略强化学习算法。有关不同类型的强化学习代理的更多信息,请参见强化学习代理.
下图显示了MBPO代理的组件和行为。agent通过环境交互对真实的经验数据进行采样,并利用这些经验训练出一个环境模型。然后,该代理使用环境模型生成的真实经验数据和经验更新其基础代理的策略参数。
MBPO代理可以在具有以下观察和行动空间的环境中进行训练。
观察太空 | 行动空间 |
---|---|
连续 | 离散或连续 |
您可以使用以下非策略代理作为MBPO代理中的基本代理。
行动空间 | 基地Off-Policy代理 |
---|---|
离散 |
|
连续 |
|
MBPO代理使用一个环境模型,您可以使用rlNeuralNetworkEnvironment
对象,该对象包含以下组件。一般来说,这些组件在训练过程中使用深度神经网络学习环境行为。
一个或多个转换函数,根据当前的观测和动作预测下一个观测。可以使用定义确定性转换函数
rlContinuousDeterministicTransitionFunction
对象或随机转移函数使用rlContinuousGaussianTransitionFunction
对象。基于当前观察、当前行动和下一次观察的组合来预测来自环境的奖励函数。你可以定义一个确定性奖励函数使用
rlContinuousDeterministicRewardFunction
对象或随机奖励函数使用rlContinuousGaussianRewardFunction
对象。您还可以使用自定义函数定义一个已知的奖励函数。基于当前观察、当前动作和下一个观察的组合来预测终止信号的已完成函数。还可以使用自定义函数定义已知的终止信号。
在培训期间,MBPO代理:
通过训练过渡函数、奖励函数和完成函数,在每一集开始时更新环境模型
使用训练过的环境模型生成样本,并将样本存储在循环经验缓冲区中
使用基本代理中单独的循环体验缓冲区存储来自代理与环境之间交互的真实样本
使用从生成的经验缓冲区和真实经验缓冲区中随机抽样的小批经验更新基本代理的参与者和批评者
训练算法
MBPO代理使用以下训练算法,其中它们定期更新环境模型和基本的off-policy代理。要配置训练算法,请使用rlMBPOAgentOptions
对象。
初始化基本代理的参与者和批评者。
在环境模型中初始化转换函数、奖励函数和已完成函数。
在每一期训练开始时:
对于每个模型训练阶段,执行以下步骤。要指定时代的数量,请使用
NumEpochForTrainingModel
选择。训练转换函数。如果相应的
LearnRate
优化器选择是0
,跳过此步。用一个半均值损失
rlContinuousDeterministicTransitionFunction
对象的最大似然损失rlContinuousStochasticTransitionFunction
对象。为了使每个观测通道同等重要,首先计算每个观测通道的损失。然后,将每个损耗除以相应观测规范中元素的数量。
例如,如果环境的观察规范是由
[rlNumericSpec ([10.1]) rlNumericSpec ([4 1])]
,然后No是2,米o1是10,米o2是4。训练奖励功能。如果相应的
LearnRate
优化器选择是0
或者定义一个基本真理的自定义奖励函数,跳过这一步。用一个半均值损失
rlContinuousDeterministicRewardFunction
对象的最大似然损失rlContinuousStochasticRewardFunction
对象。
训练is-done函数。如果相应的
LearnRate
优化器选择是0
或者定义了一个基本的自定义已完成函数,请跳过此步骤。使用加权交叉熵损失函数。一般情况下,终端条件(
结束= 1
)发生的频率远低于非终末状态(结束= 0
).要处理严重不平衡的数据,可以使用下面的权重和损失函数。
在这里,米是小批量尺寸,T我是目标,和Y我这是奖励网络的输出吗我这批样品中的第一个。T我= 1当
结束
是1,T我= 0当结束
是0。
使用训练过的环境模型生成样本。下图显示了视界为2的两个滚出轨迹的示例。
控件中定义的水平更新设置的基础上增加水平
ModelRolloutOptions
对象。随机抽样一批NR来自真实经验缓冲的观察。指定NR,可以使用
ModelRolloutOptions。NumRollout
选择。对于每个水平步:
随机将观察结果分成N米组,N米是转换模型的数量,并将每个组分配给一个转换模型。
对于每一个观察o我,生成一个动作一个我控件定义的探测策略
ModelRolloutOptions。NoiseOptions
对象。如果ModelRolloutOptions。NoiseOptions
为空时,使用基本代理的探测策略。对于每个观察-动作对,预测下一个观察o '2使用相应的转换模型。
利用环境模型的奖励函数,预测奖励值r我基于观察、行动和下一次观察。
利用环境模型的完成函数,预测终端信号完成我基于观察、行动和下一次观察。
增加经验(o我,一个我,r我,o '我,完成我)到生成的经验缓冲区。
对于下一个视界步骤,将每个观测值替换为预测的下一个观测值。
对于每个训练章节的每一步:
提示
MBPO代理可以比无模型代理更有效地处理样本,因为模型可以生成大量不同的体验。然而,MBPO代理比无模型代理需要更多的计算时间,因为除了训练基本代理外,它们还必须训练环境模型并生成样本。
为了克服建模的不确定性,最佳实践是使用多个环境转换模型。
如果它们是可用的,最好使用已知的地面真相奖励和已完成函数。
最好是生成大量的轨迹(数以千计或数以万计)。这样做会生成许多样本,这降低了在训练集中多次选择相同样本的可能性。
由于建模误差会累积,因此在生成样本时最好使用较短的视界。较短的视野通常足以产生多样化的经验。
一般来说,使用
rlMBPOAgent
不适合有图像观测的环境。在使用SAC基代理时,采取更多的渐变步骤(由
NumGradientStepsPerUpdate
SAC代理选项)使MBPO代理更有效的采样。但是,这样做会增加计算时间。中的MBPO实现
rlMBPOAgent
是基于原始MBPO论文中的算法吗[1]但其差异如下表所示。原始论文 rlMBPOAgent
在每个环境步骤生成样本 在每个训练集的开始生成样本 训练演员和评论家只使用生成的样本 训练演员和评论家使用真实数据和生成数据 使用随机环境模型 使用随机或确定性的环境模型 使用囊代理 是否可以使用SAC、DQN、DDPG和TD3药物
参考文献
詹纳,迈克尔,贾斯汀·傅,马文·张和谢尔盖·莱文。《何时信任你的模型:基于模型的策略优化》在第33届神经信息处理系统国际会议论文集, 12519 - 30。1122.美国纽约红钩区:Curran Associates Inc., 2019。
另请参阅
rlMBPOAgent
|rlMBPOAgentOptions
|rlNeuralNetworkEnvironment