setCritic
强化学习代理集评论家
描述
例子
修改关键参数值
假设你有一个现有的训练有素的强化学习代理。对于本例,从训练DDPG Agent控制双积分系统.
负载(“DoubleIntegDDPG.mat”,“代理”)
从代理中得到临界函数逼近器。
批评家= get批评家(代理);
从评论家那里获得可学习的参数。
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]}
改进深度神经网络在强化学习Agent中的应用
创造一个具有连续动作空间的环境,并获得其观察和动作规范。对于本例,加载示例中使用的环境训练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))
要验证网络,请使用analyzeNetwork
.例如,验证评论家网络。
analyzeNetwork (criticNet)
您可以修改演员和评论家网络,并将它们保存回代理。如果要修改网络,可以使用深度网络设计器要打开每个网络的应用程序,使用以下命令。
deepNetworkDesigner (layerGraph (criticNet) deepNetworkDesigner (layerGraph (actorNet))
在深度网络设计器,修改网络。例如,您可以向网络添加其他层。在修改网络时,不要改变返回的网络的输入和输出层getModel
.有关构建网络的更多信息,请参见用深度网络设计器构建网络.
验证修改后的网络深度网络设计器,你必须点击为dlnetwork分析,在分析部分。为了将修改后的网络结构导出到MATLAB®工作空间,生成用于创建新网络的代码,并从命令行运行此代码。中不使用导出选项深度网络设计器.有关显示如何生成和运行代码的示例,请参见使用深度网络设计器创建代理,并使用图像观察进行训练.
对于本例,用于创建修改后的演员和评论家网络的代码位于createModifiedNetworks
辅助脚本。
createModifiedNetworks
每个修改后的网络都包含一个额外的fullyConnectedLayer
而且reluLayer
在他们主要的共同道路上。查看修改后的角色网络。
情节(layerGraph (modifiedActorNet))
导出网络后,将网络插入到actor和批评家函数逼近器中。
actor = setModel(actor,modifiedActorNet);批评家= setModel(批评家,modifiedCriticNet);
最后,将修改后的actor和批评家函数近似器插入到actor和批评家对象中。
agent = setActor(代理,actor);agent = set批评家(代理,评论家);
输入参数
评论家
- - - - - -评论家
rlValueFunction
对象|rlQValueFunction
对象|rlVectorQValueFunction
对象|的两元行向量rlQValueFunction
对象
批评家对象,指定为下列之一:
rlValueFunction
object -当返回时代理
是一个rlACAgent
,rlPGAgent
,或rlPPOAgent
对象。rlQValueFunction
object -当返回时代理
是一个rlQAgent
,rlSARSAAgent
,rlDQNAgent
,rlDDPGAgent
,或rlTD3Agent
反对一个批评家。rlVectorQValueFunction
object -当返回时代理
是一个rlQAgent
,rlSARSAAgent
,rlDQNAgent
,具有离散动作空间的对象,向量q值函数评论家。的两元行向量
rlQValueFunction
objects -当代理
是一个rlTD3Agent
或rlSACAgent
反对两个批评家。
输出参数
版本历史
在R2019a中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。