主要内容

setCritic

强化学习剂的设置批评家

描述

例子

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

例子

全部折叠

假设你有一个训练有素的强化学习代理。对于本例,从加载经过训练的代理训练DDPG代理控制双积分器系统

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

从agent中得到临界函数逼近器。

评论家= getCritic(代理);

从临界器中获取可学习的参数。

params = getLearnableParameters(批评)
params =2×1单元阵列{[-4.9889 -1.5548 -0.3434 -0.1111 -0.0500 -0.0035]} {[0]}

修改参数值。对于本例,只需将所有参数乘以2

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

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

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

将代理中的批评家设置为新修改的批评家。

setCritic(代理、评论家);

显示新的参数值。

getLearnableParameters (getCritic(代理)
ans =2×1单元阵列{[-9.9778 -3.1095 -0.6867 -0.2223 -0.1000 -0.0069]} {[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))

图中包含一个axes对象。axes对象包含一个graphplot类型的对象。

要验证网络,请使用analyzeNetwork.例如,验证批评家网络。

analyzeNetwork (criticNet)

您可以修改演员和评论家网络,并将它们保存回代理。要修改网络,可以使用深层网络设计师要打开每个网络的app,使用以下命令。

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

深层网络设计师,修改网络。例如,可以向网络添加额外的层。修改网络时,不要更改返回的网络的输入和输出层getModel.有关构建网络的更多信息,请参见用深度网络设计器构建网络

验证修改后的网络深层网络设计师,你必须点击分析了dlnetwork下,分析部分。为了将修改后的网络结构导出到MATLAB®工作区,生成用于创建新网络的代码,并从命令行运行此代码。中不使用导出选项深层网络设计师.有关显示如何生成和运行代码的示例,请参见使用深度网络设计器创建代理和使用图像观察训练

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

createModifiedNetworks

每个修改后的网络都包含一个附加的网络fullyConnectedLayer而且reluLayer在他们共同的道路上。查看修改后的演员网络。

情节(layerGraph (modifiedActorNet))

图中包含一个axes对象。axes对象包含一个graphplot类型的对象。

导出网络后,将网络插入到作用函数和临界函数逼近器中。

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

最后,将修正后的优构函数和评构函数近似插入优构函数和评构函数中。

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

输入参数

全部折叠

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

请注意

代理句柄对象。因此更新为setCritic是否代理是否作为输出参数返回。有关句柄对象的更多信息,请参见处理对象的行为

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

  • rlValueFunctionobject -当返回时代理是一个rlACAgentrlPGAgent,或rlPPOAgent对象。

  • rlQValueFunctionobject -当返回时代理是一个rlQAgentrlSARSAAgentrlDQNAgentrlDDPGAgent,或rlTD3Agent用一个批评家来反对。

  • rlVectorQValueFunctionobject -当返回时代理是一个rlQAgentrlSARSAAgentrlDQNAgent,具有离散动作空间的对象,向量q值函数批评家。

  • 的双元素行向量rlQValueFunctionobjects -当返回时代理是一个rlTD3AgentrlSACAgent提出两个批评意见。

输出参数

全部折叠

更新的代理,作为代理对象返回。请注意,代理句柄对象。因此,它的actor由setCritic是否代理是否作为输出参数返回。有关句柄对象的更多信息,请参见处理对象的行为

版本历史

介绍了R2019a

Baidu
map