exponenta event banner

setActor

Задать представление актора обучающего агента усиления

Описание

пример

newAgent = setActor(oldAgent,actor) возвращает новое усиливающее средство обучения, newAgent, которая использует указанное представление актера. Помимо представления актера, новый агент имеет ту же конфигурацию, что и указанный исходный агент, oldAgent.

Примеры

свернуть все

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

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

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

actor = getActor(agent);

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

params = getLearnableParameters(actor);

Измените значения параметров. Для этого примера просто умножьте все параметры на 2.

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

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

actor = setLearnableParameters(actor,modifiedParams);

Установите актера в агенте на нового измененного актера.

agent = setActor(agent,actor);

Создание среды с непрерывным пространством действий и получение ее характеристик наблюдения и действий. В этом примере загрузите среду, используемую в примере 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);

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

свернуть все

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

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

Входные и выходные уровни указанного представления должны соответствовать характеристикам наблюдения и действий исходного агента.

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

  • Создайте представление, используя соответствующий объект представления.

  • Получение существующего представления политики от агента с помощью getActor.

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

свернуть все

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

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