getCritic
从强化学习代理获得评论家
描述
例子
修改关键参数值
假设你有一个现有的训练有素的强化学习代理。对于本例,从训练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批评家(代理,评论家);
输入参数
代理
- - - - - -强化学习剂
rlQAgent
|rlSARSAAgent
|rlDQNAgent
|rlPGAgent
|rlDDPGAgent
|rlTD3Agent
|rlACAgent
|rlSACAgent
|rlPPOAgent
|rlTRPOAgent
包含批评家的强化学习代理,指定为以下对象之一:
rlPGAgent
(当使用评论家来估计基线值函数时)
输出参数
评论家
——评论家
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中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。