主要内容

setActor

强化学习代理的集合角色

描述

例子

代理= setActor (代理演员更新强化学习代理,代理,以使用指定的actor对象,演员

例子

全部折叠

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

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

从代理中获取角色函数逼近器。

actor = getActor(代理);

从参与者获得可学习的参数。

params = getLearnableParameters(actor)
params =2×1单元格数组{[-15.4622 -7.2252]} {[0]}

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

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

将参与者的参数值设置为新修改的值。

actor = setLearnableParameters(actor,modifiedParams);

将代理中的参与者设置为新的修改过的参与者。

setActor(代理、演员);

显示新的参数值。

getLearnableParameters (getActor(代理)
ans =2×1单元格数组{[-30.9244 -14.4504]} {[0]}

创造一个具有连续动作空间的环境,并获得其观察和动作规范。对于本例,加载示例中使用的环境训练DDPG Agent控制双积分系统

加载预定义的环境。

环境= rlPredefinedEnv(“DoubleIntegrator-Continuous”);

获得观察和行动规范。

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

根据环境观察和操作规范创建PPO代理。这个代理为它的演员和评论家使用默认的深度神经网络。

agent = rlPPOAgent(obsInfo,actInfo);

为了修改强化学习代理中的深度神经网络,必须首先提取行动者和批评函数逼近器。

actor = getActor(代理);批评家= get批评家(代理);

从行为函数逼近器和批评函数逼近器中提取深度神经网络。

actorNet = getModel(actor);criticNet = getModel(批评家);

网络是dlnetwork对象。来查看它们情节函数时,必须将它们转换为layerGraph对象。

例如,查看角色网络。

情节(layerGraph (actorNet))

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

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

analyzeNetwork (criticNet)

您可以修改演员和评论家网络,并将它们保存回代理。如果要修改网络,可以使用深度网络设计器要打开每个网络的应用程序,使用以下命令。

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

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

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

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

createModifiedNetworks

每个修改后的网络都包含一个额外的fullyConnectedLayer而且reluLayer在他们主要的共同道路上。查看修改后的角色网络。

情节(layerGraph (modifiedActorNet))

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

导出网络后,将网络插入到actor和批评家函数逼近器中。

actor = setModel(actor,modifiedActorNet);批评家= setModel(批评家,modifiedCriticNet);

最后,将修改后的actor和批评家函数近似器插入到actor和批评家对象中。

agent = setActor(代理,actor);agent = set批评家(代理,评论家);

输入参数

全部折叠

包含参与者的强化学习代理,指定为以下之一:

请注意

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

对象,指定为以下之一:

  • rlContinuousDeterministicActorobject -指定何时代理是一个rlDDPGAgentrlTD3Agent对象

  • rlDiscreteCategoricalActorobject -指定何时代理是一个rlACAgentrlPGAgentrlPPOAgentrlTRPOAgentrlSACAgent对象用于具有离散操作空间的环境。

  • rlContinuousGaussianActorobject -指定何时代理是一个rlACAgentrlPGAgentrlPPOAgentrlTRPOAgentrlSACAgent对象用于具有连续操作空间的环境。

行动者(通常是神经网络)中近似模型的输入和输出必须与原始主体的观察和动作规范相匹配。

要创建一个参与者,可以使用以下方法之一:

  • 使用相应的函数近似器对象创建参与者。

  • 从代理中获取现有的参与者getActor

输出参数

全部折叠

更新的代理,作为代理对象返回。请注意,代理句柄对象。因此它的参与者被更新setActor是否代理是否作为输出参数返回。有关句柄对象的详细信息,请参见处理对象行为

版本历史

在R2019a中引入