主要内容

rlddpgagent.

深度确定性政策梯度加固学习代理

描述

深度确定性政策梯度(DDPG)算法是一个演员 - 评论家,无模型,在线,禁止策略加强学习方法,这些禁止措施方法计算了最大化长期奖励的最佳政策。动作空间只能是连续的。

有关更多信息,请参阅深度确定性政策梯度代理。有关不同类型的强化学习代理商的更多信息,请参阅加固学习代理人

创建

描述

从观察和行动规范创建代理

例子

代理人= rlddpgagent(观察税收ActionInfo.使用默认初始化选项创建具有给定观察和操作规范的环境的深度确定性策略梯度代理。代理商中的演员和批评者表示从观察规范内建造的默认深神经网络观察税收和行动规范ActionInfo.

例子

代理人= rlddpgagent(观察税收ActionInfo.初学者为具有给定观察和动作规范的环境创建一个深度确定的政策梯度代理。代理使用使用指定的选项配置的默认网络初学者目的。有关初始化选项的详细信息,请参阅rlagentinitializationOptions.

从演员和批评者表示创建代理商

例子

代理人= rlddpgagent(演员评论家代理选项使用默认DDPG代理选项创建具有指定演员和批评网络的DDPG代理。

指定代理选项

代理人= rlddpgagent(___代理选项创建一个ddpg代理并设置代理选项财产到代理选项输入参数。在上一个语法中的任何输入参数后使用此语法。

输入参数

展开全部

观察规范,指定为钢筋学习规范对象或规范对象数组,定义诸如尺寸,数据类型和观察信号的名称等属性。

你可以提取观察税收从现有的环境或代理商使用getobservationInfo.。您还可以使用手动构造规范rlfinitesetspec.或者rlnumericspec.

操作规范,指定为钢筋学习规范对象,定义尺寸,数据类型和动作信号的名称等属性。

由于DDPG代理在连续动作空间中运行,因此必须指定ActionInfo.作为A.rlnumericspec.目的。

你可以提取ActionInfo.从现有的环境或代理商使用getActionInfo.。您还可以使用手动构造规范rlnumericspec.

代理初始化选项,指定为一个rlagentinitializationOptions.目的。

Actor网络表示,指定为RLDETerminyActorRepresentation。有关创建演员表示的更多信息,请参阅创建策略和值函数表示

批评网络表示,指定为rlqvalueerepresentation目的。有关创建批评识别的更多信息,请参阅创建策略和值函数表示

特性

展开全部

代理选项,指定为rlddpgagentoptions.目的。

如果您创建具有默认演员和使用经常性神经网络的批评者的DDPG代理,则默认值AgentOptions.SequencElength.32.

经验缓冲区,指定为一个经验缓慢目的。在培训期间,代理商存储其每个经验(S.一种R.S')在缓冲区中。这里:

  • S.是目前对环境的观察。

  • 一种是代理人采取的行动。

  • R.是采取行动的奖励一种

  • S'采取行动后的下一次观察一种

有关代理样本如何在培训期间从缓冲区体验的更多信息,请参阅深度确定性政策梯度代理

对象功能

火车 在指定环境中列车加固学习代理
SIM 在指定环境中模拟培训的钢筋学习代理
努力 从代理商或演员代表获取行动给定环境观察
工作者 获取钢筋学习代理人的演员代表
setActor. 设置钢筋学习代理的演员代表
透镜 获取钢筋学习代理人的批评奖学金
setcritic. 设定批评批评学习代理的代表
生成policyfunction. 创建评估培训的强化学习代理策略的功能

例子

全部收缩

创建具有连续动作空间的环境,并获得其观察和动作规范。对于此示例,请加载示例中使用的环境火车DDPG代理控制双积分系统。从环境中观察是含有质量的位置和速度的载体。该动作是代表一种力的标量,从而连续地测量 -22牛顿。

%加载预定义环境Env = Rlpredefinedenv(“双凝胶组连续”);%获得观察和行动规范ObsInfo = GetobservationInfo(ENV);Actinfo = GetActionInfo(Env);

代理创建函数随机初始化演员和批评网络。您可以通过固定随机发生器的种子来确保再现性。为此,取消注释以下行。

%rng(0)

从环境观察和操作规范中创建一个策略渐变代理。

代理= rlddpgagent(Obsinfo,Actinfo);

检查您的代理人,使用努力从随机观察返回动作。

GetAction(代理,{rand(ObsInfo(1).dimension)})
ans =.1x1细胞阵列{[0.0182]}

您现在可以在环境中测试和培训代理人。

创建具有连续动作空间的环境,并获得其观察和操作规范。对于此示例,请加载示例中使用的环境培训DDPG代理以摇摆和平衡摆动图像观察。该环境有两个观察结果:50×50灰度图像和标量(摆动的角速度)。动作是表示扭矩连续的标量 -22纳米。

%加载预定义环境Env = Rlpredefinedenv(“SimpleEdpulumWithimage-insult”);%获得观察和行动规范ObsInfo = GetobservationInfo(ENV);Actinfo = GetActionInfo(Env);

创建代理初始化选项对象,指定网络中的每个隐藏的完全连接图层必须具有128.神经元(而不是默认号码,256.)。

Initopts = rlagentinitializationOptions('numhidendentunit',128);

代理创建函数随机初始化演员和批评网络。您可以通过固定随机发生器的种子来确保再现性。为此,取消注释以下行。

%rng(0)

从环境观测和操作规范中创建DDPG代理。

代理= rlddpgagent(Obsinfo,Actinfo,Enitopts);

将批评评论率降低到1E-3。

评论家=克罗里特(代理人);批评.Options.Learnrate = 1E-3;代理= setcritic(代理商,批评者);

从代理演员和评论家中提取深度神经网络。

ActORNET = GetModel(GetAttor(代理));批评= getModel(accritic(代理));

显示批评网络的层,并验证每个隐藏的完全连接层是否有128个神经元

批评
ANS = 14x1层阵列具有层数:1'求解'沿尺寸3的输入串联连接3 2'Relu_Body'Relu 3'FC_Body'完全连接的128完全连接的第4层Body_Output'Relu Relu 5'Infum_1'图像输入50x50x1图像6'conv_1'卷积64 3x3x1卷曲升级[1 1]和填充[0 0 0 0] 7'Relu_Input_1'Relu Relu 8'FC_1'完全连接的128完全连接的第9层Input_2'图像输入1x1x1图像10'FC_2'完全连接的128完全连接层11'Input_3'图像输入1x1x1图像12'fc_3'完全连接的128完全连接的层13'输出'完全连接的1完全连接的第14层'表示数值均值均值

情节演员和批评网络

情节(ACTORNET)

图包含轴。轴包含Type Graphplot的对象。

情节(批评)

图包含轴。轴包含Type Graphplot的对象。

检查您的代理人,使用努力从随机观察返回动作。

GetAction(代理,{rand(ObsInfo(1).dimiles),Rand(Obsinfo(2).dimension)})
ans =.1x1细胞阵列{[-0.0364]}

您现在可以在环境中测试和培训代理人。

创建具有连续动作空间的环境,并获得其观察和操作规范。对于此示例,请加载示例中使用的环境火车DDPG代理控制双积分系统。从环境中观察是含有质量的位置和速度的载体。动作是表示连续测距的标量 -22牛顿。

Env = Rlpredefinedenv(“双凝胶组连续”);ObsInfo = GetobservationInfo(ENV);Actinfo = GetActionInfo(Env);

创造批评者代表。

%创建一个用于用作底层批评的网络近似值equentpath = imageInputLayer([ObsInfo.dimension(1)1],'正常化''没有任何''名称''状态');ActionPath = ImageInputLayer([Numel(ActInfo)1 1],'正常化''没有任何''名称''行动');commonpath = [concatenationlayer(1,2,'名称''concat')四raticallayer('名称''二次')全康连接层(1,'名称''endicevalue''biaslearnratefactor',0,'偏见',0)];批判性=图表图(州路);批评网络= addlayers(批判性,ActionPath);批评网络= addlayers(批判性,commonpath);批评网络= ConnectLayers(批评者,'状态''concat / In1');批评网络= ConnectLayers(批评者,'行动''concat / In2');%为评论家设置一些选项批评= rlrepresentationOptions('学习',5e-3,'gradientthreshold',1);%基于网络近似器创建批评者评论家= rlqvalueerepresentation(批评,undernfo,Actinfo,......'观察',{'状态'},'行动',{'行动'},批评);

创建一个演员表示。

%创建一个用于用作底层演员近似器的网络ActorNetWork = [ImageInputLayer([ObsInfo.dimension(1)1 1],'正常化''没有任何''名称''状态')全连接列(Numel(Actinfo),'名称''行动''biaslearnratefactor',0,'偏见',0)];%为演员设置一些选项Actoropts = RlR​​epresentationOptions('学习',1e-04,'gradientthreshold',1);%基于网络近似器创建ActorActor = RLDETerminyActorRepresentation(Actornetwork,Obsinfo,Actinfo,......'观察',{'状态'},'行动',{'行动'},actoropts);

指定代理选项,并使用环境,演员和批评者创建DDPG代理。

代理= rlddpgagentoptions(......'采样时间',env.ts,......'targetsmoothfactor',1e-3,......'经验BufferLength',1E6,......'贴花因子',0.99,......'minibatchsize',32);代理= rlddpgagent(演员,批评者,代理商);

检查您的代理人,使用努力从随机观察返回动作。

GetAction(代理,{rand(2,1)})
ans =.1x1细胞阵列{[-0.4719]}

您现在可以在环境中测试和培训代理人。

对于此示例,请加载示例中使用的环境火车DDPG代理控制双积分系统。从环境中观察是含有质量的位置和速度的载体。动作是表示连续测距的标量 -22牛顿。

Env = Rlpredefinedenv(“双凝胶组连续”);

获取观察和行动规范信息。

ObsInfo = GetobservationInfo(ENV);Actinfo = GetActionInfo(Env);

创造批评者代表。创建经常性神经网络,使用sequenceInputlayer.作为输入层并包括一个lstmlayer.作为其他网络层之一。

equentpath = sequenceInputlayer(ObsInfo.dimension(1),'正常化''没有任何''名称''myobs');ActionPath = sequenceInputLayer(Numel(ActInfo),'正常化''没有任何''名称'“界面”);commonpath = [concatenationlayer(1,2,'名称''concat')剥离('名称''relu')LSTMLAYER(8,'OutputMode''顺序''名称''lstm')全康连接层(1,'名称''endicevalue''biaslearnratefactor',0,'偏见',0)];批判性=图表图(州路);批评网络= addlayers(批判性,ActionPath);批评网络= addlayers(批判性,commonpath);批评网络= ConnectLayers(批评者,'myobs''concat / In1');批评网络= ConnectLayers(批评者,“界面”'concat / In2');

为评论家设置一些选择。

批评= rlrepresentationOptions('学习',5e-3,'gradientthreshold',1);

基于网络近似器创建批评者。

评论家= rlqvalueerepresentation(批评,undernfo,Actinfo,......'观察',{'myobs'},'行动',{“界面”},批评);

创建一个演员表示。

由于评论家有一个经常性网络,因此演员也必须具有经常性网络。为演员定义反复性神经网络。

ACTORNETWORK = [sequenceInputlayer(ObsInfo.dimension(1),'正常化''没有任何''名称''myobs')LSTMLAYER(8,'OutputMode''顺序''名称''lstm')全连接列(Numel(Actinfo),'名称'“界面”'biaslearnratefactor',0,'偏见',0)];

设置actor选项。

Actoropts = RlR​​epresentationOptions('学习',1e-04,'gradientthreshold',1);

创建演员。

Actor = RLDETerminyActorRepresentation(Actornetwork,Obsinfo,Actinfo,......'观察',{'myobs'},'行动',{“界面”},actoropts);

指定代理选项,并使用环境,演员和批评者创建DDPG代理。要使用具有复制神经网络的DDPG代理,您必须指定一个Sequencelength.大于1。

代理= rlddpgagentoptions(......'采样时间',env.ts,......'targetsmoothfactor',1e-3,......'经验BufferLength',1E6,......'贴花因子',0.99,......'sequencelength'20,......'minibatchsize',32);代理= rlddpgagent(演员,批评者,代理商);

检查您的代理人,使用努力从随机观察返回动作。

GetAction(代理,{ObsInfo.dimension})
ans =.1x1细胞阵列{[-0.1483]}

您现在可以在环境中测试和培训代理人。

在R2019A介绍