主要内容

rlDDPGAgent

深决定性策略梯度强化学习代理

描述

深决定性策略梯度(DDPG)算法是一种actor-critic,模范自由,在网上,off-policy强化学习方法计算最优政策,最大化的长期回报。操作空间只能是连续的。

有关更多信息,请参见深决定性策略梯度代理。更多信息在不同类型的强化学习代理,看看强化学习代理

创建

描述

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

例子

代理= rlDDPGAgent (observationInfo,actionInfo)创建一个深决定性策略梯度代理一个环境与给定的观察和操作规范,使用默认初始化选择。代理的演员和评论家表示使用默认深层神经网络由观测规范observationInfo和操作规范actionInfo

例子

代理= rlDDPGAgent (observationInfo,actionInfo,initOpts)创建一个深决定性策略梯度代理一个环境与给定的观察和操作规范。代理使用默认使用选项中指定的网络配置initOpts对象。初始化选项的更多信息,请参阅rlAgentInitializationOptions

从演员和评论家表示创建代理

例子

代理= rlDDPGAgent (演员,评论家,agentOptions)创建一个DDPG与指定的演员兼评论家网络代理,使用默认DDPG代理选项。

指定代理选项

代理= rlDDPGAgent (___,agentOptions)创建一个DDPG代理并设置AgentOptions财产agentOptions输入参数。使用这个语法的任何输入参数后以前的语法。

输入参数

全部展开

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

您可以提取observationInfo从现有的环境或代理使用getObservationInfo。您还可以手动构建规范使用rlFiniteSetSpecrlNumericSpec

动作规范,指定为强化学习规范对象定义属性,如尺寸,数据类型和名称的行动信号。

自从DDPG代理运营在一个持续的行动空间,您必须指定actionInfo作为一个rlNumericSpec对象。

您可以提取actionInfo从现有的环境或代理使用getActionInfo。您还可以手动构建规范使用rlNumericSpec

代理初始化选项,指定为一个rlAgentInitializationOptions对象。

演员网络表示,作为一个指定rlDeterministicActorRepresentation。创建演员表示更多的信息,请参阅创建政策和价值函数表示

评论家网络表示,作为一个指定rlQValueRepresentation对象。创建评论家表示更多的信息,请参阅创建政策和价值函数表示

属性

全部展开

代理选项,指定为一个rlDDPGAgentOptions对象。

经验缓冲区,指定为一个ExperienceBuffer对象。在训练代理商店每个经验(年代,一个,R,年代)在一个缓冲区。在这里:

  • 年代是当前环境的观察。

  • 一个由受托人采取的动作。

  • R奖励采取行动吗一个

  • 年代是下一个观测后采取行动一个

更多信息关于代理从缓冲区在训练样本的经验,明白了深决定性策略梯度代理

对象的功能

火车 强化学习培训代理在指定的环境中
sim卡 模拟训练强化学习代理在指定的环境中
getAction 从代理或演员获得行动表示给定环境的观察
getActor 从强化学习得到演员表示代理
setActor 强化学习代理组演员表示
getCritic 从强化学习代理获得评论家表示
setCritic 将强化学习的评论家表示代理
generatePolicyFunction 创建函数评估训练策略的强化学习代理

例子

全部折叠

创造一个环境,一个持续的行动空间,获得其观察和操作规范。对于这个示例,负载在示例中使用的环境火车DDPG剂来控制双积分器系统。的观测环境包含位置和速度是一个向量的质量。行动是一个标量代表一种力量,不断应用于质量,范围从-22牛顿。

%负载预定义的环境env = rlPredefinedEnv (“DoubleIntegrator-Continuous”);%获得观察和操作规范obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);

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

% rng (0)

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

代理= rlDDPGAgent (obsInfo actInfo);

检查您的代理,使用getAction返回操作从一个随机的观察。

getAction(代理,{兰特(obsInfo (1) .Dimension)})
ans =1 x1单元阵列{[0.0182]}

您现在可以测试和培训环境内的代理。

创造一个环境,一个连续的操作空间和获得其观察和操作规范。对于这个示例,负载在示例中使用的环境火车DDPG代理摇摆起来,平衡摆与图像观察。这个环境有两个观察:50-by-50灰度图像和一个标量(摆的角速度)。行动是一个标量代表一个力矩范围从-不断22Nm。

%负载预定义的环境env = rlPredefinedEnv (“SimplePendulumWithImage-Continuous”);%获得观察和操作规范obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);

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

initOpts = rlAgentInitializationOptions (“NumHiddenUnit”,128);

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

% rng (0)

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

代理= rlDDPGAgent (obsInfo actInfo initOpts);

减少1 e - 3评论家学习速率。

评论家= getCritic(代理);critic.Options。LearnRate = 1 e - 3;代理= setCritic(代理、批评);

提取深层神经网络代理的演员和评论家。

actorNet = getModel (getActor(代理));criticNet = getModel (getCritic(代理));

评论家的显示层网络,验证每个隐藏完全连接层有128个神经元

criticNet.Layers
ans = 14 x1层与层:数组1 concat的串联连接3输入沿着维度3 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的图像输入和图像10 fc_2完全连接128完全连接层11 input_3的图像输入和图像12 fc_3完全连接128完全连接层13“输出”完全连接1完全连接层14 RepresentationLoss回归输出均方误差

情节演员和评论家网络

情节(actorNet)

情节(criticNet)

检查您的代理,使用getAction返回操作从一个随机的观察。

getAction(代理,{兰特(obsInfo (1) .Dimension),兰德(obsInfo (2) .Dimension)})
ans =1 x1单元阵列{[-0.0364]}

您现在可以测试和培训环境内的代理。

创造一个环境,一个连续的操作空间和获得其观察和操作规范。对于这个示例,负载在示例中使用的环境火车DDPG剂来控制双积分器系统。观察从环境中包含位置和速度是一个向量的质量。代表一个力的行动是一个标量范围从-不断22牛顿。

%负载预定义的环境env = rlPredefinedEnv (“DoubleIntegrator-Continuous”);%得到观察和规范信息obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);

创建一个评论家表示。

%创建一个网络作为潜在的评论家的估计值statePath = imageInputLayer ([obsInfo.Dimension (1) 1 (1),“归一化”,“没有”,“名字”,“状态”);actionPath = imageInputLayer([元素个数(actInfo) 1 1),“归一化”,“没有”,“名字”,“行动”);commonPath = [concatenationLayer (1、2、“名字”,“concat”)quadraticLayer (“名字”,“二次”)fullyConnectedLayer (1,“名字”,“StateValue”,“BiasLearnRateFactor”0,“偏见”,0)];criticNetwork = layerGraph (statePath);criticNetwork = addLayers (criticNetwork actionPath);criticNetwork = addLayers (criticNetwork commonPath);criticNetwork = connectLayers (criticNetwork,“状态”,“concat /三机一体”);criticNetwork = connectLayers (criticNetwork,“行动”,“concat / in2”);%设置一些选项评论家criticOpts = rlRepresentationOptions (“LearnRate”,5 e - 3,“GradientThreshold”1);%创建基于网络评论家估计值评论家= rlQValueRepresentation (criticNetwork obsInfo actInfo,“观察”,{“状态”},“行动”,{“行动”},criticOpts);

创建一个演员表示。

%创建一个网络作为基本演员接近者actorNetwork = [imageInputLayer ([obsInfo.Dimension (1) 1 (1),“归一化”,“没有”,“名字”,“状态”)fullyConnectedLayer(元素个数(actInfo),“名字”,“行动”,“BiasLearnRateFactor”0,“偏见”,0)];%设置一些选项的演员actorOpts = rlRepresentationOptions (“LearnRate”1 e-04“GradientThreshold”1);%创建行为人基于网络的估计值演员= rlDeterministicActorRepresentation (actorNetwork obsInfo actInfo,“观察”,{“状态”},“行动”,{“行动”},actorOpts);

指定代理选项,创建DDPG代理使用环境,演员和评论家。

agentOpts = rlDDPGAgentOptions (“SampleTime”env.Ts,“TargetSmoothFactor”1 e - 3,“ExperienceBufferLength”1 e6,“DiscountFactor”,0.99,“MiniBatchSize”、32);代理= rlDDPGAgent(演员、评论家、agentOpts);

检查您的代理,使用getAction返回操作从一个随机的观察。

getAction(代理,{兰德(2,1)})
ans =1 x1单元阵列{[-0.4719]}

您现在可以测试和培训环境内的代理。

介绍了R2019a