getCritic

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

Синтаксис

Описание

пример

critic = getCritic(agent) возвращает объект представления критика для заданного агента обучения с подкреплением.

Примеры

свернуть все

Предположим, что у вас есть обученный агент обучения с подкреплением. В данном примере загружает обученного агента из Train DDPG Agent в систему Double Integrator.

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);

Создайте окружение с непрерывным пространством действий и получите его наблюдение и спецификации действия. В данном примере загружает окружение, используемую в примере Train DDPG Agent для управления системой Double Integrator System.

Загрузите предопределённое окружение.

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);

Чтобы просмотреть сеть, используйте plot функция. Для примера просмотрите сеть актёра.

plot(actorNet)

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

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

deepNetworkDesigner(criticNet)
deepNetworkDesigner(actorNet)

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

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

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

createModifiedNetworks

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

plot(modifiedActorNet)

Figure contains an axes. The axes 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 объект с двумя критиками

Введенный в R2019a