rlACAgent
Actor-critic强化学习代理
描述
Actor-critic (AC)代理实现Actor-critic算法如A2C和A3C,模范自由,在网上,在政策强化学习方法。actor-critic代理直接优化政策(演员),并使用一个评论家估计返回或未来的回报。可以是离散或连续的行动空间。
有关更多信息,请参见Actor-Critic代理。更多信息在不同类型的强化学习代理,看看强化学习代理。
创建
语法
描述
从观察和行动规范创建代理
创建一个actor-critic代理一个环境与给定的观察和操作规范,使用默认初始化选择。代理使用默认的演员兼评论家深层神经网络由观测规范代理
= rlACAgent (observationInfo
,actionInfo
)observationInfo
和操作规范actionInfo
。的ObservationInfo
和ActionInfo
的属性代理
是设置为observationInfo
和actionInfo
分别输入参数。
创建一个actor-critic代理一个环境与给定的观察和操作规范。代理使用默认的网络中,每个隐藏完全连接层单位中指定的数量代理
= rlACAgent (observationInfo
,actionInfo
,initOpts
)initOpts
对象。Actor-critic代理不支持递归神经网络。金宝app初始化选项的更多信息,请参阅rlAgentInitializationOptions
。
指定代理选项
创建一个actor-critic代理并设置AgentOptions财产代理
= rlACAgent (___,agentOptions
)agentOptions
输入参数。使用这个语法的任何输入参数后以前的语法。
输入参数
initOpts
- - - - - -代理初始化选项
rlAgentInitializationOptions
对象
代理初始化选项,指定为一个rlAgentInitializationOptions
对象。Actor-critic代理不支持递归神经网络。金宝app
演员
- - - - - -演员
rlDiscreteCategoricalActor
对象|rlContinuousGaussianActor
对象
演员实现政策,指定为一个rlDiscreteCategoricalActor
或rlContinuousGaussianActor
函数近似者对象。创建演员接近者的更多信息,请参阅创建政策和价值功能。
评论家
- - - - - -评论家
rlValueFunction
对象
评论家估计折现长期回报,作为一个指定rlValueFunction
对象。创建评论家合拢器的更多信息,请参阅创建政策和价值功能。
属性
ObservationInfo
- - - - - -观测规范
规范对象|规范对象的数组
观测规范,指定为强化学习规范对象或规范对象数组定义属性,如尺寸,数据类型和名称的观察信号。
如果您创建代理通过指定一个演员和评论家的价值ObservationInfo
匹配指定的值在演员和批评的对象。
您可以提取observationInfo
从现有的环境或代理使用getObservationInfo
。您还可以手动构建规范使用rlFiniteSetSpec
或rlNumericSpec
。
ActionInfo
- - - - - -操作规范
规范对象
动作规范,指定为强化学习规范对象定义属性,如尺寸,数据类型和名称的行动信号。
一个离散的行动空间,您必须指定actionInfo
作为一个rlFiniteSetSpec
对象。
一个持续的行动空间,您必须指定actionInfo
作为一个rlNumericSpec
对象。
如果您创建代理通过指定一个演员和评论家的价值ActionInfo
匹配指定的值在演员和批评的对象。
您可以提取actionInfo
从现有的环境或代理使用getActionInfo
。您还可以手动构建规范使用rlFiniteSetSpec
或rlNumericSpec
。
AgentOptions
- - - - - -剂的选择
rlACAgentOptions
对象
代理选项,指定为一个rlACAgentOptions
对象。
UseExplorationPolicy
- - - - - -选择使用探索政策
真正的
(默认)|假
选择使用探索政策选择行为时,指定为以下之一的逻辑值。
真正的
——代理探索政策选择行为时使用基地。假
——使用基本代理贪婪策略在选择行动。
SampleTime
- - - - - -样本的代理
积极的标量|1
对象的功能
例子
创建离散Actor-Critic代理从观察和操作规范
创造一个环境,一个离散的行动空间,并获得其观察和操作规范。对于这个示例,负载在示例中使用的环境使用深度网络设计师创建代理和培训使用图像的观察。这个环境有两个观察:50-by-50灰度图像和一个标量(摆的角速度)。行动是一个标量和五个可能的元素(一个力矩的-2
,1
,0
,1
,或2
纳米应用于摆动杆)。
%负载预定义的环境env = rlPredefinedEnv (“SimplePendulumWithImage-Discrete”);%获得观察和操作规范obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);
代理创建函数初始化演员和评论家网络随机。可以通过修复确保再现性的种子随机发生器。为此,取消注释以下行。
% rng (0)
创建一个actor-critic代理从环境中观察和操作规范。
代理= rlACAgent (obsInfo actInfo);
检查您的代理,使用getAction
返回操作从一个随机的观察。
getAction(代理,{兰特(obsInfo (1) .Dimension),兰德(obsInfo (2) .Dimension)})
ans =1 x1单元阵列{[2]}
您现在可以测试和培训环境内的代理。
使用初始化选项创建连续Actor-Critic代理
创造一个环境,一个连续的操作空间和获得其观察和操作规范。对于这个示例,负载在示例中使用的环境火车DDPG代理摇摆起来,平衡摆与图像观察。这个环境有两个观察:50-by-50灰度图像和一个标量(摆的角速度)。行动是一个标量代表一个力矩范围从-不断2
来2
Nm。
%负载预定义的环境env = rlPredefinedEnv (“SimplePendulumWithImage-Continuous”);%获得观察和操作规范obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);
创建一个代理对象初始化选项,指定每个隐藏在网络必须完全连接层128年
神经元(而不是默认的号码,256年
)。Actor-critic代理不支持的网络,所以设置金宝appUseRNN
选项真正的
创建代理时生成一个错误。
initOpts = rlAgentInitializationOptions (“NumHiddenUnit”,128);
代理创建函数初始化演员和评论家网络随机。可以通过修复确保再现性的种子随机发生器。为此,取消注释以下行。
% rng (0)
创建一个actor-critic代理从环境中观察和操作规范。
代理= rlACAgent (obsInfo actInfo initOpts);
提取深层神经网络代理的演员和评论家。
actorNet = getModel (getActor(代理));criticNet = getModel (getCritic(代理));
评论家的显示层网络,验证每个隐藏完全连接层有128个神经元
criticNet.Layers
ans x1 = 11层与层:数组1的concat串联连接2输入沿着维度1 2的relu_body ReLU ReLU 3 fc_body完全连接128完全连接层4的body_output ReLU ReLU 5 input_1的图像输入50 x50x1图片6 conv_1卷积64 3 x3x1旋转步[1]和填充[0 0 0 0]7‘relu_input_1 ReLU ReLU 8“fc_1”完全连接128完全连接层9“input_2”功能输入1功能10“fc_2”完全连接128完全连接层11“输出”完全连接1完全连接层
情节演员和评论家网络
情节(layerGraph (actorNet))
情节(layerGraph (criticNet))
检查您的代理,使用getAction
返回操作从一个随机的观察。
getAction(代理,{兰特(obsInfo (1) .Dimension),兰德(obsInfo (2) .Dimension)})
ans =1 x1单元阵列{[0.9228]}
您现在可以测试和培训环境内的代理。
创建离散Actor-Critic代理从演员和评论家
创造一个环境,一个离散的操作空间和获得其观察和操作规范。对于这个示例,负载在示例中使用的环境火车DQN代理Cart-Pole平衡系统。这个环境中有一个四维的观测向量(车的位置和速度、极角和极角导数),和一个标量行动(一个力的两种可能的元素10
或+10
N应用于车)。
%负载预定义的环境env = rlPredefinedEnv (“CartPole-Discrete”);%获得观测规范obsInfo = getObservationInfo (env)
obsInfo = rlNumericSpec属性:LowerLimit:无穷UpperLimit:正的名字:“CartPole国家”描述:“x, dx,θ,dtheta”维度:[4 1]数据类型:“替身”
%获得行动规范actInfo = getActionInfo (env)
actInfo = rlFiniteSetSpec属性:元素:-10[10]的名字:“CartPole行动”描述:[0 x0字符串]维度:[1]数据类型:“替身”
代理创建函数初始化演员和评论家网络随机。可以通过修复确保再现性的种子随机发生器。
rng (0)
创建一个深层神经网络作为近似模型内的评论家。actor-critic代理,评论家估计价值函数,因此必须采取观察信号作为输入,并返回一个标量值。
criticNetwork = [featureInputLayer (prod (obsInfo.Dimension),“归一化”,“没有”)fullyConnectedLayer (1,“名字”,“CriticFC”));
创建一个评论家使用criticNetwork
。Actor-critic代理使用一个rlValueFunction
对象实现评论家。
评论家= rlValueFunction (criticNetwork obsInfo);
设置一些评论家培训选项。
criticOpts = rlOptimizerOptions (…“LearnRate”,8 e - 3,“GradientThreshold”1);
创建一个深层神经网络作为近似模型内的演员。actor-critic代理,演员执行随机策略,实现离散行动空间的离散分类的演员。在这种情况下,网络必须采取观察信号作为输入,并返回一个概率为每一个行动。因此,输出层必须尽可能多的元素的数量可能的行动。
actorNetwork = [featureInputLayer (prod (obsInfo.Dimension),“归一化”,“没有”)fullyConnectedLayer(元素个数(actInfo.Dimension),“名字”,“行动”));
创建一个演员使用actorNetwork
。Actor-critic代理使用一个rlDiscreteCategoricalActor
对象实现演员离散行动空间。
演员= rlDiscreteCategoricalActor (actorNetwork obsInfo actInfo);
设置一些演员培训选项。
actorOpts = rlOptimizerOptions (…“LearnRate”,8 e - 3,“GradientThreshold”1);
指定代理选项,并创建一个AC代理使用演员和评论家。
agentOpts = rlACAgentOptions (…“NumStepsToLookAhead”32岁的…“DiscountFactor”,0.99,…“CriticOptimizerOptions”criticOpts,…“ActorOptimizerOptions”,actorOpts);代理= rlACAgent(演员、评论家、agentOpts)
代理= rlACAgent属性:AgentOptions: [1 x1 rl.option。rlACAgentOptions] UseExplorationPolicy: 1 ObservationInfo: [1x1 rl.util.rlNumericSpec] ActionInfo: [1x1 rl.util.rlFiniteSetSpec] SampleTime: 1
检查您的代理,使用getAction
返回操作从一个随机的观察。
getAction(代理,{兰德(obsInfo.Dimension)})
ans =1 x1单元阵列{[-10]}
您现在可以测试和培训环境内的代理。
创建连续Actor-Critic代理从演员和评论家
创造一个环境,一个持续的行动空间,获得其观察和操作规范。对于这个示例,加载双积分器连续行动空间环境中使用的例子火车DDPG剂来控制双积分器系统。
%负载预定义的环境env = rlPredefinedEnv (“DoubleIntegrator-Continuous”);%获得观测规范obsInfo = getObservationInfo (env)
obsInfo = rlNumericSpec属性:LowerLimit:无穷UpperLimit:正的名字:“状态”的描述:“x, dx”维度:[2 1]数据类型:“替身”
%获得行动规范actInfo = getActionInfo (env)
actInfo = rlNumericSpec属性:LowerLimit:无穷UpperLimit:正的名字:“力”描述:[0 x0字符串]维度:[1]数据类型:“替身”
在这个例子中,这个动作是一个标量范围从-输入代表力量2
来2
牛顿,所以它是一个好主意来设置相应的行动信号的上、下限,所以我们可以很容易地获取他们在构建演员网络。
%确定行动的空间是有限的上限和下限actInfo.LowerLimit = 2;actInfo.UpperLimit = 2;
演员和评论家网络随机初始化。可以通过修复确保再现性的种子随机发生器。
rng (0)
创建一个深层神经网络作为近似模型内的评论家。actor-critic代理,评论家估计价值函数,因此必须采取观察信号作为输入,并返回一个标量值。
criticNet = [featureInputLayer (prod (obsInfo.Dimension),…“归一化”,“没有”,“名字”,“状态”)fullyConnectedLayer (10“名字”,“fc_in”)reluLayer (“名字”,“relu”)fullyConnectedLayer (1,“名字”,“出”));
创建一个评论家使用criticNet
。Actor-critic代理使用一个rlValueFunction
对象实现评论家。
评论家= rlValueFunction (criticNet obsInfo);
设置一些评论家培训选项。
criticOpts = rlOptimizerOptions (…“LearnRate”,8 e - 3,“GradientThreshold”1);
创建一个深层神经网络作为近似模型内的演员。actor-critic代理,演员执行随机策略,实现连续操作空间的连续高斯的演员。在这种情况下,网络必须采取观察信号作为输入,并返回一个平均值和标准偏差值为每一个行动。因此它必须有两个输出层(一个用于平均值标准差的其他值),各有尽可能多的元素行为空间的维数。
注意,必须负的值和均值标准差必须在范围之内的所有行动。因此输出层返回必须softplus或标准差ReLU层,执行nonnegativity,而输出层返回平均值必须扩展层,按比例输出范围的平均值。
%的输入路径层inPath = [featureInputLayer (prod (obsInfo.Dimension),…“归一化”,“没有”,“名字”,“netObsIn”)fullyConnectedLayer (prod (actInfo.Dimension),…“名字”,“infc”));%路径层平均值meanPath = [tanhLayer (“名字”,“tanhMean”);fullyConnectedLayer(刺激(actInfo.Dimension));scalingLayer (“名字”,“规模”,…“规模”actInfo.UpperLimit)];%比例范围%路径层标准差sdevPath = [tanhLayer (“名字”,“tanhStdv”);fullyConnectedLayer(刺激(actInfo.Dimension));softplusLayer (“名字”,“splus”));%非负%添加层网络对象网= layerGraph (inPath);网= addLayers(净,meanPath);网= addLayers(净,sdevPath);%连接层网= connectLayers(网络,“infc”,“tanhMean /”);网= connectLayers(网络,“infc”,“tanhStdv /”);%的阴谋网络情节(净)
创建一个演员使用净
。Actor-critic代理使用一个rlContinuousGaussianActor
对象实现参与者连续操作空间。
演员= rlContinuousGaussianActor(净、obsInfo actInfo,…“ActionMeanOutputNames”,“规模”,…“ActionStandardDeviationOutputNames”,“splus”,…“ObservationInputNames”,“netObsIn”);
设置一些演员培训选项。
actorOpts = rlOptimizerOptions (…“LearnRate”,8 e - 3,“GradientThreshold”1);
指定代理选项,并创建一个AC代理使用演员,评论家,和代理的选择。
agentOpts = rlACAgentOptions (…“NumStepsToLookAhead”32岁的…“DiscountFactor”,0.99,…“CriticOptimizerOptions”criticOpts,…“ActorOptimizerOptions”,actorOpts);代理= rlACAgent(演员、评论家、agentOpts)
代理= rlACAgent属性:AgentOptions: [1 x1 rl.option。rlACAgentOptions] UseExplorationPolicy: 1 ObservationInfo: [1x1 rl.util.rlNumericSpec] ActionInfo: [1x1 rl.util.rlNumericSpec] SampleTime: 1
检查您的代理,使用getAction
返回操作从一个随机的观察。
getAction(代理,{兰德(2,1)})
ans =1 x1单元阵列{[1.6791]}
您现在可以测试和培训环境内的代理。
创建一个离散Actor-Critic代理与递归神经网络
对于这个示例加载用于预定义的环境火车DQN代理Cart-Pole平衡系统的例子。
env = rlPredefinedEnv (“CartPole-Discrete”);
获得观察和操作信息。这个环境中有一个四维的观测向量(车的位置和速度、极角和极角导数),和一个标量行动有两种可能的元素(-10或+ 10 N的力应用于购物车)。
obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);
代理创建函数初始化演员和评论家网络随机。可以通过修复确保再现性的种子随机发生器。
rng (0)
创建一个深层神经网络作为近似模型内的评论家。actor-critic代理,评论家估计价值函数,因此必须采取观察信号作为输入,并返回一个标量值。创建一个递归神经网络,使用sequenceInputLayer
作为输入层,包括一个lstmLayer
的另一个网络层。
criticNetwork = [sequenceInputLayer (prod (obsInfo.Dimension),…“归一化”,“没有”)lstmLayer (8,“OutputMode”,“序列”,“名字”,“lstm”)fullyConnectedLayer (1,“名字”,“CriticFC”));
创建一个评论家使用criticNetwork
。Actor-critic代理使用一个rlValueFunction
对象实现评论家。
评论家= rlValueFunction (criticNetwork obsInfo);
设置一些评论家培训选项。
criticOpts = rlOptimizerOptions (…“LearnRate”,8 e - 3,“GradientThreshold”1);
创建一个神经网络作为近似模型内的演员。评论家有复发性网络以来,演员必须有复发性网络。actor-critic代理,演员执行随机策略,实现离散行动空间的离散分类的演员。在这种情况下,网络必须采取观察信号作为输入,并返回一个概率为每一个行动。因此,输出层必须尽可能多的元素的数量可能的行动。
actorNetwork = [sequenceInputLayer (prod (obsInfo.Dimension),“归一化”,…“没有”,“名字”,“myobs”)lstmLayer (8,“OutputMode”,“序列”,“名字”,“lstm”)fullyConnectedLayer(元素个数(actInfo.Elements),“名字”,“行动”));
创建一个演员使用actorNetwork
。Actor-critic代理使用一个rlDiscreteCategoricalActor
对象实现演员离散行动空间。
演员= rlDiscreteCategoricalActor (actorNetwork obsInfo actInfo);
设置一些演员培训选项。
actorOpts = rlOptimizerOptions (…“LearnRate”,8 e - 3,“GradientThreshold”1);
指定代理选项,并创建一个AC代理使用演员,评论家和代理的选择对象。由于代理使用递归神经网络,NumStepsToLookAhead
被视为训练轨迹长度。
agentOpts = rlACAgentOptions (…“NumStepsToLookAhead”32岁的…“DiscountFactor”,0.99,…“CriticOptimizerOptions”criticOpts,…“ActorOptimizerOptions”,actorOpts);代理= rlACAgent(演员、评论家、agentOpts);
检查您的代理,使用getAction
返回操作从一个随机的观察。
getAction(代理,{兰德(obsInfo.Dimension)})
ans =1×1单元阵列{[-10]}
您现在可以测试和培训环境内的代理。
提示
连续操作空间,
rlACAgent
对象不执行规定的约束行动规范,所以您必须执行行动空间中约束环境。
版本历史
打开举例
你们possedez一个版本modifiee de cet(中央东部东京)为例。Souhaitez-vous打开cet(中央东部东京)为例用vos修改吗?
对MATLAB
你们有派对在联合国留置权,对应这个对MATLAB:
倒实行la对saisissez-la在fenetre德对MATLAB。Les navigateurs web不sup金宝appportent Les MATLAB命令。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。