主要内容

setCritic

评论家强化学习代理

自从R2019a

描述

例子

代理= setCritic (代理,评论家)更新强化学习代理,代理使用指定的批评对象,评论家

例子

全部折叠

假设您有一个现有的训练强化学习代理。对于这个示例,加载训练有素的代理火车DDPG剂来控制双积分器系统

负载(“DoubleIntegDDPG.mat”,“代理”)

从代理获得评论家函数近似者。

评论家= getCritic(代理);

获得评论家的可学的参数。

params = getLearnableParameters(批评)
params =2×1单元阵列{[-4.9869 -1.5577 -0.3351 -0.1097 -0.0444 7.5240 e-04]} {[0]}

修改参数值。对于这个示例,简单地将所有的参数乘以2

modifiedParams = cellfun (@ x * 2 (x),参数,“UniformOutput”、假);

评论家的参数值设置为新修改的值。

评论家= setLearnableParameters(评论家,modifiedParams);

设置代理新修改的评论家的批评。

setCritic(代理、评论家);

显示新的参数值。

getLearnableParameters (getCritic(代理)
ans =2×1单元阵列{[-9.9737 -3.1153 -0.6702 -0.2194 -0.0888 0.0015]}{[0]}

创造一个环境,一个连续的操作空间和获得其观察和操作规范。对于这个示例,负载在示例中使用的环境火车DDPG剂来控制双积分器系统

负载预定义的环境。

env = rlPredefinedEnv (“DoubleIntegrator-Continuous”);

获得观察和操作规范。

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

创建PPO代理从环境中观察和操作规范。该代理使用默认深层神经网络的演员和评论家。

代理= rlPPOAgent (obsInfo actInfo);

修改强化学习中的深层神经网络代理,您必须首先提取演员和评论家函数近似者。

演员= getActor(代理);评论家= getCritic(代理);

从演员和提取深层神经网络评论家函数近似者。

actorNet = getModel(演员);criticNet = getModel(批评);

网络是dlnetwork对象。查看使用情节功能,您必须将它们转换为layerGraph对象。

例如,查看演员网络。

情节(layerGraph (actorNet))

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

验证一个网络,使用analyzeNetwork。例如,验证网络评论家。

analyzeNetwork (criticNet)

您可以修改演员和评论家网络和拯救他们回代理。修改网络,您可以使用深层网络设计师为每个网络应用。打开应用程序,使用下面的命令。

deepNetworkDesigner (layerGraph (criticNet) deepNetworkDesigner (layerGraph (actorNet))

深层网络设计师,修改网络。例如,您可以添加额外的层网络。当你修改网络,不改变网络的输入和输出层返回的getModel。建立网络的更多信息,见构建网络与深度网络设计师

验证修改后的网络深层网络设计师,你必须点击分析了dlnetwork下,分析部分。出口MATLAB®工作区中修改后的网络结构,生成代码来创建新网络和从命令行运行这段代码。不使用导出选项深层网络设计师。为例,展示了如何生成并运行代码,看看创建DQN代理使用深层网络设计师和训练使用图像的观察

对于这个示例,创建的代码修改的演员和评论家网络createModifiedNetworks辅助脚本。

createModifiedNetworks

每个网络包括一个额外的修改fullyConnectedLayerreluLayer在他们的主要常见的路径。查看修改后的演员网络。

情节(layerGraph (modifiedActorNet))

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

出口网络后,网络插入演员和评论家函数近似者。

演员= setModel(演员,modifiedActorNet);评论家= setModel(评论家,modifiedCriticNet);

最后,将修改后的演员兼评论家函数近似者插入到演员和批评的对象。

代理= setActor(代理、演员);代理= setCritic(代理、批评);

输入参数

全部折叠

强化学习代理包含一个评论家,指定为以下之一:

请注意

代理是一个处理对象。因此,更新了setCritic是否代理作为一个输出参数返回。关于处理对象的更多信息,请参阅处理对象的行为

批评对象,指定为以下之一:

  • rlValueFunction对象——返回当代理是一个rlACAgent,rlPGAgent,或rlPPOAgent对象。

  • rlQValueFunction对象——返回当代理是一个rlQAgent,rlSARSAAgent,rlDQNAgent,rlDDPGAgent,或rlTD3Agent对象用一个评论家。

  • rlVectorQValueFunction对象——返回当代理是一个rlQAgent,rlSARSAAgent,rlDQNAgent、对象与一个离散的行动空间,向量核反应能量函数评论家。

  • 双元素的行向量rlQValueFunction对象——返回当代理是一个rlTD3AgentrlSACAgent对象有两个评论家。

输出参数

全部折叠

更新代理,作为一个代理对象返回。请注意,代理是一个处理对象。因此它的演员被更新setCritic是否代理作为一个输出参数返回。关于处理对象的更多信息,请参阅处理对象的行为

版本历史

介绍了R2019a