exponenta event banner

getCritic

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

Описание

пример

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

Примеры

свернуть все

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

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 to Control 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 и Обучение с помощью наблюдений за изображениями.

Для этого примера код для создания измененных сетей актера и критика находится в 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);

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

свернуть все

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

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

свернуть все

Объект представления Critic, возвращаемый как один из следующих:

  • rlValueRepresentation object - возвращен, когда agent является rlACAgent, rlPGAgent, или rlPPOAgent объект

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

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

Представлен в R2019a