导入策略和值函数表示

导入策略和值函数表示
导入行动者和评论者在图像观察中的应用

导入策略和值函数表示

要创建用于强化学习的函数逼近器,您可以使用Deep Learning Toolbox™网络导入功能导入预训练的深度神经网络或深度神经网络层架构。您可以导入:

      1. 开放式神经网络交换(ONNX™)模型,需要用于ONNX模型格式的深度学习工具箱转换器支持包软件。 有关更多信息,请importONNXLayers。
      2. TensorFlow™-Keras网络,需要用于TensorFlow-Keras模型的深度学习工具箱导入程序支持软件包。 有关更多信息,请参见importKerasLayers。
      3. Caffe卷积网络,需要用于Caffe模型的深度学习工具箱导入程序支持软件包。 有关更多信息,请参见importCaffeLayers。

导入深度神经网络体系结构时,请考虑以下事项。

     1.  导入的体系结构必须具有单个输入层和单个输出层。 因此,不支持导入带有观察和动作输入层的整个评论者网络。

     2.  导入的网络体系结构输入和输出层的尺寸必须与您的环境的相应操作,观察或奖励尺寸匹配。

     3.  导入网络体系结构后,必须设置输入层和输出层的名称以匹配相应动作和观察规范的名称。

有关支持强化学习的深度神经网络体系结构的更多信息,请参见创建策略和值函数表示。

导入行动者和评论者在图像观察中的应用

例如,假设您的环境中有一个50 x 50的灰度图像观察信号和一个连续的动作空间。 要训​​练策略梯度智能体,您需要以下函数逼近器,这两个函数都必须具有单个50 x 50图像输入观察层和单个标量输出值。

     1. 行动者-根据当前观察值选择一个动作值

     2. 评论者-根据当前观察估计预期的长期奖励

另外,假设您要导入以下网络体系结构:

     1.  一种针对行动者的深度神经网络体系结构,具有50 x 50的图像输入层和标量输出层,并以ONNX格式(criticNetwork.onnx)保存。

     2.  针对评论者的深度神经网络体系结构,具有50 x 50的图像输入层和标量输出层,并以ONNX格式(actorNetwork.onnx)保存。

要导入评论者和行动者网络,请使用importONNXLayers函数,而无需指定输出层。

criticNetwork = importONNXLayers('criticNetwork.onnx');
actorNetwork = importONNXLayers('actorNetwork.onnx');

这些命令会生成一条警告,指出在添加输出层之前网络是可训练的。 当您使用导入的网络创建行动者或评论者表示时,Reinforcement Learning Toolbox™软件会自动为您添加输出层。

导入网络后,创建角色和评论函数逼近器表示形式。 为此,首先要从环境中获得观察和行动规范。

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

创建评论者表示,将评论者网络的输入层的名称指定为观察名称。 由于评论者网络具有单个观察输入和单个动作输出,因此请使用值函数表示。

critic = rlValueRepresentation(criticNetwork,obsInfo,...
    'Observation',{criticNetwork.Layers(1).Name});

创建行动者表示,将角色网络的输入层的名称指定为观察名称,并将行动者网络的输出层的名称指定为观察名称。 由于行动者网络具有单个标量输出,因此请使用确定性行动者表示。

actor = rlDeterministicActorRepresentation(actorNetwork,obsInfo,actInfo,...
    'Observation',{actorNetwork.Layers(1).Name},...
    'Action',{actorNetwork.Layers(end).Name});

然后,您可以:

  1. 使用这些表示创建智能体。 有关更多信息,请参见强化学习智能体

  2. 分别使用setActor和setCritic在现有代理中设置行动者评论者表示。