setActor

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

Описание

пример

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

Примеры

свернуть все

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

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

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

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

свернуть все

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

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

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

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

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

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

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

свернуть все

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

Введенный в R2019a