主要内容

rlRepresentation

(不推荐)模型表示为强化学习代理

自从R2019a

描述

使用rlRepresentation创建一个函数的估计值的演员或评论家表示强化学习代理。这样做,你们指定的观察和行动信号影响的培训的培训环境和选择一个代理使用表示。创建表示更多的信息,请参阅创建政策和价值功能

例子

代表= rlRepresentation (,obsInfo“观察”,obsNames)创建一个表示深刻的神经网络。观察的名字obsNames网络输入层的名字。obsInfo包含相应的观测规范的培训环境。使用这种语法创建一个评论家表示,不需要操作输入,如的评论家rlACAgentrlPGAgent代理。

例子

代表= rlRepresentation (,obsInfo,actInfo“观察”,obsNames“行动”,actNames)创建一个指定的名称与行动表示信号actNames和规范actInfo。使用这种语法创建一个表示对于任何演员,或一个评论家,观察和行动作为输入,如的评论家rlDQNAgentrlDDPGAgent代理。

例子

tableCritic= rlRepresentation (选项卡)创建一个评论家表示为Q值表或表选项卡。当你创建一个表表示,当您创建指定观察和操作规范选项卡

评论家= rlRepresentation (basisFcn,W0,obsInfo)创建一个线性基函数表示使用一个自定义的基函数的句柄basisFcn和初始权向量W0obsInfo包含相应的观测规范的培训环境。使用这种语法创建一个评论家表示,不需要操作输入,如的评论家rlACAgentrlPGAgent代理。

评论家= rlRepresentation (basisFcn,W0,oaInfo)创建一个线性基函数表示单元阵列使用规范oaInfo,在那里oaInfo={obsInfo, actInfo}。使用这种语法创建一个表示一个评论家,观察和行动作为输入,如的评论家rlDQNAgentrlDDPGAgent代理。

演员= rlRepresentation (basisFcn,W0,obsInfo,actInfo)创建一个使用指定的线性基函数表示的观察和操作规范,obsInfoactInfo,分别。使用这种语法创建一个表示一个演员,观测数据作为输入,并生成操作。

例子

代表= rlRepresentation (___,repOpts)使用额外的选项,指定学习创建一个表示参数表示当你训练一个代理。可用的选项包括优化器用于培训和学习速率。使用rlRepresentationOptions创建选项集repOpts。您可以使用该语法与任何以前的输入参数组合。

例子

全部折叠

创建一个演员表示和评论家表示,您可以用它来定义一个强化学习代理等演员评论家(AC)代理。

对于这个示例,创建演员和评论家表示为一个代理可以对cart-pole训练环境中描述培训交流代理Cart-Pole平衡系统。首先,创建环境。然后,从环境中提取观测和操作规范。你需要这些规范来定义代理和评论家表示。

env = rlPredefinedEnv (“CartPole-Discrete”);obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);

等state-value-function批评那些用于AC或PG代理,输入是观察和输出应该是一个标量值,状态值。对于这个示例,创建评论家表示使用深神经网络和一个输出,并与观测信号对应x, xdot,θ,thetadot中描述的培训交流代理Cart-Pole平衡系统。您可以获得的观测数量obsInfo规范。网络层的输入名称“观察”

numObservation = obsInfo.Dimension (1);criticNetwork = [imageInputLayer [numObservation 1 (1)“归一化”,“没有”,“名字”,“观察”)fullyConnectedLayer (1,“名字”,“CriticFC”));

使用指定选项评论家表示rlRepresentationOptions。这些选项控制参数的评论家网络学习,当你训练一个代理了评论家表示。对于这个示例,将学习速率为0.05和梯度阈值为1。

repOpts = rlRepresentationOptions (“LearnRate”5飞行,“GradientThreshold”1);

创建一个使用指定的评论家表示神经网络和选项。同时,指定的操作和观察信息评论家。设置观测的名字“观察”创建时,这是你使用网络的输入层criticNetwork

评论家= rlRepresentation (criticNetwork obsInfo,“观察”,{“观察”},repOpts)
评论家= rlValueRepresentation属性:选择:[1 x1 rl.option。rlRepresentationOptions] ObservationInfo: [1 x1 rl.util。rlNumericSpec] ActionInfo: {1} x0细胞

类似地,创建一个网络的演员。AC代理决定哪些操作使用演员表示给定的观测。对于一个演员来说,输入的观察,和输出取决于空间是离散或连续的动作。演员的这个例子中,有两个可能的离散动作,-10年或10。创建演员,因此,使用深度观察相同的神经网络输入的评论家,能够输出这两个值。您可以获得的行为的数量actInfo规范。名字的输出“行动”

numAction =元素个数(actInfo.Elements);actorNetwork = [imageInputLayer ((4 1 1),“归一化”,“没有”,“名字”,“观察”)fullyConnectedLayer (numAction“名字”,“行动”));

使用观察创建演员表示名称和规范和操作名称和规范。选择使用相同的表示。

演员= rlRepresentation (actorNetwork obsInfo actInfo,“观察”,{“观察”},“行动”,{“行动”},repOpts)
演员= rlStochasticActorRepresentation属性:选择:[1 x1 rl.option。rlRepresentationOptions] ObservationInfo: [1 x1 rl.util。rlNumericSpec] ActionInfo: [1x1 rl.util.rlFiniteSetSpec]

您现在可以使用演员和评论家表示创建一个交流代理。

agentOpts = rlACAgentOptions (“NumStepsToLookAhead”32岁的“DiscountFactor”,0.99);代理= rlACAgent(演员、评论家、agentOpts)
代理= rlACAgent属性:AgentOptions: [1 x1 rl.option.rlACAgentOptions]

这个例子展示了如何创建一个Q表表示:

创造一个环境接口。

env = rlPredefinedEnv (“BasicGridWorld”);

创建一个Q表使用的行动和观测规范环境。

qTable = rlTable (getObservationInfo (env) getActionInfo (env));

创建一个表示为Q表。

tableRep = rlRepresentation (qTable);

这个例子展示了如何创建一个线性基函数评论家表示。

假设您有一个环境,env。对于这个示例,负载使用的环境火车定制等方面代理的例子。

负载myLQREnv.mat

从环境中获得观察和操作规范。

obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);

创建一个定制的基函数。在这种情况下,用二次基函数火车定制等方面代理

设置所需的尺寸和参数你的基函数。

n = 6;

设置一个初始权向量。

的w0 = 0.1 * (0.5 * (n + 1) * n, 1);

创建一个表示使用自定义基函数的句柄。

评论家= rlRepresentation (@ (x, u) computeQuadraticBasis (x, u, n), w0, {obsInfo, actInfo});

函数计算的二次基础火车定制等方面代理

函数B = computeQuadraticBasis (x, u, n) z =猫(1,x, u);idx = 1;r = 1: nc = r: n如果idx = = 1 B = z (r) * z (c);其他的B =猫(1 B z (r) * z (c));结束idx = idx + 1;结束结束结束

输入参数

全部折叠

深层神经网络为演员或评论家,指定为以下之一:

深层神经网络层的列表,请参阅深度学习层的列表。更多信息为强化学习创造深层神经网络,看到的创建政策和价值功能

观察名称,指定为一个单元阵列的特征向量。观察的名字是您指定当您创建网络输入层的名字。的名字obsNames必须在同一点的观测规范吗obsInfo

例子:{“观察”}

观测规范,指定为一个rlFiniteSetSpecrlNumericSpec对象或数组包含一个混合的对象。数组中每个元素定义了一个环境观测通道的特性,比如尺寸,数据类型和名称。

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

动作名称,指定为一个单元素单元阵列,其中包含一个特征向量。您所指定的动作名称是网络层名当您创建。评论家网络,这一层是第一层的输入路径。对演员来说,这是最后一层的输出路径。

例子:{'行动'}

动作规范,要么作为一个指定rlFiniteSetSpec(离散行动空间)rlNumericSpec(连续动作空间)对象。这个对象定义环境行动通道的属性,如尺寸,数据类型和名称。

请注意

只有一个动作频道是被允许的。

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

值表或者Q表评论家,指定为一个rlTable对象。表的可学的参数表示的元素选项卡

自定义的基函数,指定为一个函数处理一个用户定义的函数。对于一个线性基函数表示,表示的输出f = W可能会,在那里W是权重数组B是返回的列向量自定义基函数。可学的线性基函数的参数表示的元素W

当创建:

  • 评论家表示,观察输入,你的基函数必须有以下签名。

    B = myBasisFunction (obsN obs1, obs2,…)

    在这里obs1obsN以相同的顺序观察和相同的数据类型和维度观察规格obsInfo

  • 观察和行动评论家表示输入,你的基函数必须有以下签名。

    B = myBasisFunction (obs1, obs2,…, obsN act)

    在这里obs1obsN观察在相同的顺序和相同的数据类型和维观测规范的第一个元素吗oaInfo,行为有相同的数据类型和维度作为第二个元素的行为规范oaInfo

  • 一个演员表示,你的基函数必须有以下签名。

    B = myBasisFunction (obsN obs1, obs2,…)

    在这里,obs1obsN以相同的顺序观察和相同的数据类型和维度观察规格obsInfo。行为规范的数据类型和维度actInfo影响的数据类型和维度f

例子:@ (x, u) myBasisFunction (x, u)

初始值的线性基函数权重数组,W,指定为以下之一:

  • 列向量,当创建一个评论家表示或演员表示连续标量行动信号

  • 数组,当创建一个演员和一个列向量表示连续动作信号或一个离散的行动空间。

观察和行动规范创建线性基函数评论家表示,指定为单元阵列{obsInfo,actInfo}

表示选项,指定为您创建的一组选项rlRepresentationOptions。可用的选项包括优化器用于培训和学习速率。看到rlRepresentationOptions获取详细信息。

输出参数

全部折叠

深层神经网络表示,作为一个返回rlLayerRepresentation对象。使用这种表示方法来创建一个代理进行强化学习。有关更多信息,请参见强化学习代理

值或Q表评论家表示,作为一个返回rlTableRepresentation对象。使用这种表示方法来创建一个代理进行强化学习。有关更多信息,请参见强化学习代理

线性基函数评论家表示,作为和返回rlLinearBasisRepresentation对象。使用这种表示方法来创建一个代理进行强化学习。有关更多信息,请参见强化学习代理

线性基函数演员表示,作为和返回rlLinearBasisRepresentation对象。使用这种表示方法来创建一个代理进行强化学习。有关更多信息,请参见强化学习代理

版本历史

介绍了R2019a

全部展开