主体内容

rlPPOAGI

准政策优化强化学习代理

自R2019b

描述性

Proximes政策优化是一种免模型在线政策梯度学习法算法通过环境交互取采样数据与使用随机梯度下降优化剪切代谢目标函数动作空间可以是离散或连续连续动作空间代理符不强制执行动作规范中设置的限制需要强制操作约束时,必须在环境内执行约束

详情见PPO代理准政策优化代理.更多各类增强学习代理信息见强化学习代理.

创建

描述性

从观察动作规范创建代理

示例类

代理程序RlPPOAgent观察Info,动作Info)使用默认初始化选项创建近似策略优化代理行为方和评论家代理使用默认深度神经网络观察Info和动作规范动作Info.上头观察InfoActionInfo属性解析代理程序设置为观察Info动作Info互输入参数

示例类

代理程序RlPPOAgent观察Info,动作Info,initOpts)PPO代理环境代理使用默认网络配置initOpts对象.更多初始化选项信息见rlAgentInitializationOptions.

创建代理从Actor和Critic

示例类

代理程序RlPPOAgent演艺圈,评论家)PPO代理程序,使用代理程序默认选项创建PPO代理程序

指定代理选项

示例类

代理程序RlPPOAgent.,代理选项)PPO代理并设置代理选项属性对代理选项输入参数前语法中输入参数后使用此语法

输入参数

扩展全部

代理初始化选项rlAgentInitializationOptions对象.

Actor执行策略rlDiscreteCategoricalActorrlContinuousGaussianActor函数近似对象欲了解更多创建角色近似者信息,见创建策略和值函数.

批评估计贴现长期奖励rlvalue功能对象.更多创建评论近似器信息见创建策略和值函数.

批评者可用循环神经网络函数近似在这种情况下,你的演员 还必须使用循环神经网络举个例子,见PPO代理.

属性

扩展全部

观察规范rlFiteSetspec内文特征对象或数组混合这些对象数组中每个元素定义环境观察通道的属性,如维度、数据类型和名称

如果您通过定义演艺人和评论家创建代理观察Info匹配动作器和评论器对象中指定的值

可提取观察Info从现有环境或代理使用getObservationInfo.手动构建规范rlFiteSetspec内文特征.

动作规范rlFiteSetspec内文特征连续动作空间对象对象定义环境动作通道属性,例如维度、数据类型和名称

注解

只允许一个动作通道

如果您通过定义演艺人和评论家创建代理ActionInfo匹配动作器和评论器对象中指定的值

可提取动作Info从现有环境或代理使用获取ActionInfo.手动构建规范rlFiteSetspec内文特征.

代理选项,指定为rlPPOAgentOptions对象.

选项选择模拟或部署后动作时使用探索策略,指定为下列逻辑值之一

  • 真实性基础代理探索策略选择动作sim系统generatePolicyFunction.具体地说,在这种情况下代理使用rlStochasticActorPolicy策略带UseMaxLikelihoodAction属性集虚伪.自代理选择动作采样概率分布以来,保单是随机化的,代理探索其动作和观察空间

  • 虚伪强制代理程序选择动作时使用基代理贪婪策略sim系统generatePolicyFunction.具体地说,在这种情况下代理使用rlStochasticActorPolicy策略带UseMaxLikelihoodAction属性集真实性.代理商贪心选择行为后,保单行为定型化,代理商不探索其动作和观察空间

注解

选项只影响模拟部署不影响训练训练代理使用火车代理方常使用其勘探策略 独立于此属性的价值

样本时间代理,指正标量或-1.设置此参数-1允许事件模拟

万博1manbetx内模链路®环境类RL代理块指定代理执行样本时间秒模拟时间if样本时间华府市-1区块继承取样本时间

内MATLAB®环境,代理每次环境提升执行以本案为例样本时间表示输出经验返回时连续元素之间的时间间隔sim系统火车.if样本时间华府市-1时段返回输出经验中连续元素的时段反映触发代理执行事件时间

示例:样本时间=-1

对象函数

火车 列车强化学习器
sim系统 模拟特定环境内训练增强学习代理
获取动作 从代理器、操作器或策略对象获取动作给定环境观察
GetAct 摘取增强学习代理
集Actor 角色加固学习代理
获取批评 抽取强化学习代理
setCritic 集评增强学习代理
generatePolicyFunction 生成式MATLAB函数评价代理或策略对象策略

实例

全部崩溃

创建环境分立动作空间并获取观察动作规范实例中加载环境DQN代理使用深网络设计师培训使用图像观察.环境有两种观察方式:50x50灰度图像和标量器(钟角速度)。动作标量五大元素(套用-2-1-0、0或2Nm

env=rl预定义env"SimplePendulumWithImage-Discrete");

从环境获取观察动作规范

ObsInfo=获取ObservationInfoactionInfo-env

代理创建函数随机初始化作用器和评论器网络通过修复随机生成器种子确保可复制性

rng(0)

PPO代理环境观察和动作规范

代理程序 = rPPOAgent(opsInfo,actInfo);

检查代理使用获取动作从随机观察返回动作

getAction(agent,{rand(obsInfo(1).Dimension),rand(obsInfo(2).Dimension)})
ss=1x1单元格数组{-2}

可测试训练代理环境您也可以使用GetAct获取批评提取演员和评论家,获取模式取近似神经元模型(默认深度神经元网络)

创建环境持续活动空间并获取观察和动作规范实例中加载环境火车DDPG代理向上平衡分页并带图像观察.环境有两种观察方式:50x50灰度图像和标量器(钟角速度)。动作标量表示托盘持续从-2到2Nm

env=rl预定义env"SimplePendulumWithImage-Continuous")!ObsInfo=获取ObservationInfoactionInfo-env

创建代理初始化选项对象,具体说明网络中每个隐藏全连通层必须128神经元数(代之以默认数)256)

initOpts = rlAgentInitializationOptions(NumHiddenUnit=128);

代理创建函数随机初始化作用器和评论器网络通过修复随机生成器种子确保可复制性

rng(0)

PPO从环境观察和动作规范创建行为-评论代理

代理程序 rlPPOAgent(opsInfo,actInfo,initOpts);

提取深度神经网络 从代理行为家和评论家

activeNet= getmodel(getActor(代理))注释Net= getmodel(getCriticr(代理));

验证每个隐藏全连通层有128个神经元, 您可以显示MATLABQ命令窗口层

criticNet.Layers

可视化结构交互使用分析Network.

analyzeNetwork(criticNet)

画家和评论家网络

plot(layerGraph(actorNet))

图中包含轴对象轴对象包含类型图图对象

plot(layerGraph(criticNet))

图中包含轴对象轴对象包含类型图图对象

检查代理使用获取动作从随机观察返回动作

getAction(agent,{rand(obsInfo(1).Dimension),rand(obsInfo(2).Dimension)})
ss=1x1单元格数组{0.9228}

可测试训练代理环境

创建环境接口并获取观察操作规范

env=rl预定义env"CartPole-Discrete")!ObsInfo=获取ObservationInfoactionInfo-env

PPO代理器使用折值函数评分值函数评论器取当前观察为输入并返回单标量输出

模型化评论器内值函数使用神经网络并带输入层(它接收观察通道内容,如蒙布斯所描述)信息学和一输出层(它返回标量值)注意prod(obsInfo.Dimension)返回观察空间总维度,无论观察空间是列向量、行向量或矩阵

定义网络为层对象数组

jectiveNet =putlayer全ContedLayer全全ContedLayer全CentedLayer

转换为dl网络并显示参数数

批注网=dlnet网summary(criticNet)
初始化:实学数:601输入:1输入4特征

创建评论家使用评语网和观察规范对象更多信息见rlvalue功能.

评论家=rvalueFunction(criticNet,obsInfo);

检查评论家随机观察输入

getValue(critic,{rand(obsInfo.Dimension)})
ss=单片0.2479

政策梯度代理使用准整片策略,分片动作空间由离散绝对行为方执行函数取观察输入并返回输出随机动作采样(在有限可能的动作数中)从绝对概率分布中取出

模拟作用器内半称化策略时使用神经网络并带输入层(接收环境观察通道内容,按环境观察通道定义)opsInfo和输出层输出层必须返回概率矢量ActInfo.注意numel(actInfo.Dimension)返回离散动作空间元素数

定义网络为层对象数组

activeLayer全网/nume/cinfo.Dimension

转换为dl网络并显示参数数

activeNet=dlnetworksummary(actorNet)
初始化:实学数:1.4k输入:1输入4特征

创建角色使用ActiveNet环境规范对象更多信息见rlDiscreteCategoricalActor.

actor = rlDiscreteCategoricalActor(actorNet,obsInfo,actInfo);

检查演员随机观察输入

getAction(actor,{rand(obsInfo.Dimension)})
ss=1x1单元格数组{[10]}

PPO代理使用

service = rPPOAgent
actionInfo:[1x1rl.rlfiteSetspec]采样时间:1

指定代理选项,包括面向演员和评论家的培训选项

代理代理Objects.ExperienceHorizon代理代理Objects.DiscountFactors=0.95agent.AgentOptions.CriticOptimizerOptions.LearnRate = 8e-3!agent.AgentOptions.CriticOptimizerOptions.GradientThreshold = 1!agent.AgentOptions.ActorOptimizerOptions.LearnRate = 8e-3!agent.AgentOptions.ActorOptimizerOptions.GradientThreshold = 1;

检查代理使用获取动作从随机观察返回动作

getAction(agent,{rand(obsInfo.Dimension)})
ss=1x1单元格数组{[10]}

测试训练代理环境

造环境持续动作空间并获取观察动作规范示例中加载双集成持续动作空间环境DDPG代理比较LQR控制器.从环境观察为矢量,内含质位速率动作标量表示力,应用到质量上,持续从-2到2牛顿不等

env=rl预定义env"DoubleIntegrator-Continuous")!ObsInfo= getObservationInfo
obsInfo=RlNumeric特征属性:下Limit:-Inf上Limit:inf名称:States描述:xxx
actionInfo=e
ActInfo=RlNumeric特征属性:下Limit:-Inf上Limit:Inf名称:Force描述:[0x0字符串]

举此例子中,动作是一个标量值表示从2到2牛顿不等的力要确保代理输出值在此范围内,您可执行适当的缩放操作存储这些限值以便日后很容易访问

actInfo.LowerLimit=-2!actInfo.UpperLimit=2;

演员和评论家网络随机初始化通过修复随机生成器种子确保可复制性

rng(0)

PPO代理器使用折值函数评分值函数评论器取当前观察为输入并返回单标量输出

模型化评论器内值函数使用神经网络并分二层输入信息学)和一输出层(返回标量值)。注意prod(obsInfo.Dimension)返回观察空间总维度,无论观察空间是列向量、行向量或矩阵

定义网络为层对象数组

jectiveNet =putlayer全ContedLayer全全ContedLayer全CentedLayer

转换为dl网络并显示参数数

批注网=dlnet网summary(criticNet)
初始化:实学数:401输入:1输入2特征

创建近似比对对象使用评语网并观察规范更多信息见rlvalue功能.

评论家=rvalueFunction(criticNet,obsInfo);

检查评论家随机观察输入

getValue(critic,{rand(obsInfo.Dimension)})
ss=单片0.0899

PPO代理程序使用假分解随机策略,持续动作空间由连续高斯演算符执行函数取观察输入并返回输出随机动作取取高斯概率分布

近似平均值和高斯分布标准偏差时,你必须使用神经网络双输出层,每个输出层有与动作空间维度相同的多元素。输出层必须返回矢量,内含每个动作维度的平均值另一方必须返回矢量,内含每个动作维度的标准偏差

注意标准偏差必须是非负值,平均值必须属于动作范围输出层返回标准偏差必须是软+或reLU图层,强制非负值化,输出层返回平均值必须是缩放层,平均值缩放至输出范围

环境只有一个观察通道,网络只有一个输入层

定义网络路径为层对象数组,并分配路径输入输出层的名称名称允许连接路径并随后将网络输入输出层与适当的环境通道明确连接

定义常用输入路径层公共页面=[特征Inputlayer(prod(obsInfo.Dimension),NamecomPathin完全联通Layer(100)全联通Layer(1,NamecomPathout) ];定义平均值路径均值Path=[全联通Layer(15)Name表示Pathinreluayer全联通Layer/prod(actInfo.Dimension)腾哈耶尔scalingLayer(Name=表示平面标度=actInfo.UpperLimit定义标准偏差路径sdevPathss名词,stdPathinreluayer全联通Layer/prod(actInfo.Dimension)softplusLayer(Name=stdPathout) ];%向层图对象添加层actorNet=层GraphActNet+LayersactorNet=addLayers(actorNetsdevPath);连接路径actorNet=连接LayerscomPathout,表示PathIn/in)!actorNet=连接LayerscomPathout,stdPathin/in);线程网绘图(actorNet)

图中包含轴对象轴对象包含类型图图对象

转换为dlnetwork并显示权数activeNet=dlnetworksummary(actorNet)
初始化:实学数:493输入:1'comPathin'2特征

使用代理对象创建ActiveNet环境规范,网络输入层名称连接环境观察通道,网络输出层名称计算动作标准偏差值

更多信息见rlContinuousGaussianActor.

actoryGaussianActor(actorNet,ObsInfo,ActInfo,ActInfo."ActionMeanOutputNames",表示平面,."ActionStandardDeviationOutputNames",stdPathout,.ObservationInputNames=comPathin);

检查演员随机观察输入

getAction(actor,{rand(obsInfo.Dimension)})
ss=1x1单元格数组{0.2267}

PPO代理使用

service = rPPOAgent
actionInfo:[1x1rl.rl

指定代理选项,包括面向演员和评论家的培训选项

代理代理Objects.ExperienceHorizon代理代理Objects.DiscountFactors=0.95agent.AgentOptions.CriticOptimizerOptions.LearnRate = 8e-3!agent.AgentOptions.CriticOptimizerOptions.GradientThreshold = 1!agent.AgentOptions.ActorOptimizerOptions.LearnRate = 8e-3!agent.AgentOptions.ActorOptimizerOptions.GradientThreshold = 1;

指定评论家培训选项

批注Opts=rlOpti.LearnRate=8e-3,GradientThreshold=1);

检查代理使用获取动作从随机观察返回动作

getAction(agent,{rand(obsInfo.Dimension)})
ss=1x1单元格数组{0.719}

可测试训练代理环境

示例加载预定义环境trainDQN代理平衡板系统实例。

env=rl预定义env"CartPole-Discrete");

获取观察动作信息环境有连续四维观察空间(马车和极的方位和速度)和离散单维动作空间,即应用2种可能力-10N或10N

ObsInfo=获取ObservationInfoactionInfo-env

演员和评论家网络随机初始化通过修复随机生成器种子确保可复制性

rng(0)

PPO代理器使用折值函数评分模型化评论家内值函数使用循环神经网络

定义网络为层对象数组创建循环神经网络使用sequenceInputLayer即输入层并包含至少一个伊斯特拉耶尔.

counteLayer(8) reluLayerIstLayer(8)全ConteLayer(1)

转换为dl网络并显示可学习参数数

批注网=dlnet网summary(criticNet)
初始化式:实数可学性:593输入式:1单序输入式4维

创建评论家使用评语网和观察规范对象更多信息见rlvalue功能.

评论家=rvalueFunction(criticNet,obsInfo);

检查评论家随机观察输入

getValue(critic,{rand(obsInfo.Dimension)})
ss=单片0.0017

因为评论家有复用网络 演员也必须有复用网络定义网络为层对象数组

actimeLayer(8)全cteLayer(nume(actInfo.Ements))软maxLayer

转换网络dl网络并显示可学习参数数

activeNet=dlnetworksummary(actorNet)
初始化:实学数4k输入:1序列输入4维

创建角色使用ActiveNet环境规范对象更多信息见rlDiscreteCategoricalActor.

actor = rlDiscreteCategoricalActor(actorNet,obsInfo,actInfo);

检查演员随机观察输入

getAction(actor,{rand(obsInfo.Dimension)})
ss=1x1单元格数组{[10]}

设置点训练选项评论家

批注OprimizerObjects.学习Rate=1e-2.GradientThreshold=1);

设置一些培训选项为演员

actorOptizeops =rlOprimizerObjects.学习Rate=1E3.GradientThreshold=1);

创建代理选项对象

代理Objects =rlPPOAgentObjects.AdvantageEstimateMethod="finite-horizon",.ClipFactor=0.1.CriticOptimizerOptions=criticOptions,.ActorOptimizerOptions=actorOptions);

循环神经网络使用时最小批量大小属性学习轨迹长度

agentOptions.MiniBatchSize
s=128

代理器使用演算器和批注器并使用代理选项对象创建代理器

代理程序 = RPPOAgent
actionInfo:[1x1rl.rlfiteSetspec]采样时间:1

检查代理随机观察输入

getAction(agent,rand(obsInfo.Dimension))
ss=1x1单元格数组{[10]}

使用序列长度(时间)维度评估代理举例说,获取动作序列九九观察结果

Action(代理商).{Rand([obsInfo.Dimention19]}}

显示对应第七元素的动作

动作=动作{{1}动作(1,1,1,7)
s=-10

可测试训练代理环境

小技巧

  • 连续动作空间,代理不强制执行动作规范设置的限制在此情况下,您必须强制执行环境内动作空间约束

  • 调整角色网络学习率对PPO代理器是必要的,对TRPO代理器则没有必要

版本历史

R2019b介绍