setCritic

Установите представление критика агента обучения с подкреплением

Описание

пример

newAgent = setCritic(oldAgent,critic) возвращает нового агента обучения с подкреплением, newAgent, это использует заданное представление критика. Кроме представления критика, новый агент имеет ту же настройку как заданное исходное свойство агента, oldAgent.

Примеры

свернуть все

Примите, что у вас есть существующий обученный агент обучения с подкреплением. В данном примере загрузите обученного агента от, Обучают Агента DDPG Управлять Двойной Системой Интегратора.

load('DoubleIntegDDPG.mat','agent') 

Получите представление критика от агента.

critic = getCritic(agent);

Получите настраиваемые параметры от критика.

params = getLearnableParameters(critic);

Измените значения параметров. В данном примере просто умножьте все параметры 2.

modifiedParams = cellfun(@(x) x*2,params,'UniformOutput',false);

Установите значения параметров критика к новым модифицированным значениям.

critic = setLearnableParameters(critic,modifiedParams);

Установите критика в агенте новому модифицированному критику.

agent = setCritic(agent,critic);

Создайте среду с непрерывным пространством действий и получите его спецификации наблюдений и спецификации действия. В данном примере загрузите среду, используемую в примере, Обучают Агента DDPG Управлять Двойной Системой Интегратора.

Загрузите предопределенную среду.

env = rlPredefinedEnv("DoubleIntegrator-Continuous")
env = 
  DoubleIntegratorContinuousAction with properties:

             Gain: 1
               Ts: 0.1000
      MaxDistance: 5
    GoalThreshold: 0.0100
                Q: [2x2 double]
                R: 0.0100
         MaxForce: Inf
            State: [2x1 double]

Получите спецификации наблюдений и спецификации действия.

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

Создайте агента PPO из спецификаций наблюдений среды и спецификаций действия.

agent = rlPPOAgent(obsInfo,actInfo);

Чтобы изменить глубокие нейронные сети в агенте обучения с подкреплением, необходимо сначала извлечь представления актёра и критика.

actor = getActor(agent);
critic = getCritic(agent);

Извлеките глубокие нейронные сети от обоих представления актёра и критика.

actorNet = getModel(actor);
criticNet = getModel(critic);

Сетями является dlnetwork объекты. Просмотреть их использующий plot функция, необходимо преобразовать их в layerGraph объекты.

Например, просмотрите сеть агента.

plot(layerGraph(actorNet))

Figure contains an axes object. The axes object contains an object of type graphplot.

Чтобы проверить сеть, используйте analyzeNetwork. Например, проверьте сеть критика.

analyzeNetwork(criticNet)

Можно изменить агента и сети критика и сохранить их назад в агента. Чтобы изменить сети, можно использовать приложение Deep Network Designer. Чтобы открыть приложение для каждой сети, используйте следующие команды.

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

В Deep Network Designer измените сети. Например, можно добавить дополнительные слои в сеть. Когда вы измените сети, не изменяйте входные и выходные слои сетей, возвращенных getModel. Для получения дополнительной информации о создании сетей смотрите Сети Сборки с Deep Network Designer.

Чтобы проверить модифицированную сеть в Deep Network Designer, необходимо нажать на Analyze для dlnetwork под разделом Analysis. Чтобы экспортировать модифицированные структуры сети в рабочую область MATLAB®, сгенерируйте код для создания новых сетей и запустите этот код из командной строки. Не используйте опцию экспорта в Deep Network Designer. Для примера, который показывает, как сгенерировать и запустить код, смотрите, Создают Агента Используя Deep Network Designer и Обучаются Используя Наблюдения Изображений.

В данном примере код для создания модифицированного агента и сетей критика находится в createModifiedNetworks.m.

createModifiedNetworks

Каждая из модифицированных сетей включает дополнительный fullyConnectedLayer и reluLayer в их выходе path. Просмотрите модифицированную сеть агента.

plot(modifiedActorNet)

Figure contains an axes object. The axes object contains an object of type graphplot.

После экспорта сетей вставьте сети в представления актёра и критика.

actor = setModel(actor,modifiedActorNet);
critic = setModel(critic,modifiedCriticNet);

Наконец, вставьте модифицированные представления актёра и критика в объекты критика и агента.

agent = setActor(agent,actor);
agent = setCritic(agent,critic);

Входные параметры

свернуть все

Исходный агент обучения с подкреплением, который содержит представление критика в виде одного из следующего:

Представление критика возражает в виде одного из следующего:

  • rlValueRepresentation объект — Возвратился когда agent rlACAgent, rlPGAgent, или rlPPOAgent объект

  • rlQValueRepresentation объект — Возвратился когда agent rlQAgent, rlSARSAAgent, rlDQNAgent, rlDDPGAgent, или rlTD3Agent объект с одним критиком

  • Двухэлементный вектор-строка из rlQValueRepresentation объекты — Возвратились когда agent rlTD3Agent или rlSACAgent объект с двумя критиками

Выходные аргументы

свернуть все

Обновленный агент обучения с подкреплением, возвращенный как агент, возражает, что использует заданное представление критика. Кроме представления критика, новый агент имеет ту же настройку как oldAgent.

Введенный в R2019a