rlTD3Agent

Задержанный близнецами глубоко детерминированный агент обучения с подкреплением градиента политики

Описание

Задержанный близнецами алгоритм глубоко детерминированного градиента политики (DDPG) является критиком агента, онлайновый, метод обучения с подкреплением вне политики без моделей, который вычисляет оптимальную политику, которая максимизирует долгосрочное вознаграждение.

Используйте rlTD3Agent создать один из следующих типов агентов.

  • Задержанный близнецами глубоко детерминированный градиент политики (TD3) агент с двумя Q-функциями-ценности. Этот агент предотвращает переоценку функции ценности путем изучения двух функций ценности Q и использования минимальных значений в обновлениях политики.

  • Задержанный глубоко детерминированный градиент политики (задержал DDPG), агент с одной функцией ценности Q. Этот агент является агентом DDPG с целевым сглаживанием политики и задержанной политикой и целевыми обновлениями.

Для получения дополнительной информации смотрите Задержанный Близнецами Глубоко Детерминированные Агенты Градиента политики.

Для получения дополнительной информации о различных типах агентов обучения с подкреплением смотрите Агентов Обучения с подкреплением.

Создание

Описание

пример

agent = rlTD3Agent(actor,critics,agentOptions) создает агента с заданными представлениями актёра и критика и устанавливает AgentOptions свойство. Создать a:

  • Агент TD3, задайте двухэлементный вектор-строку из представлений критика.

  • Задержанный агент DDPG, задайте одно представление критика.

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

развернуть все

Представление сети Actor в виде rlDeterministicActorRepresentation объект. Для получения дополнительной информации о создании представлений актера смотрите, Создают Представления Функции ценности и политика.

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

  • rlQValueRepresentation объект — Создает задержанного агента DDPG с одной функцией ценности Q. Этот агент является агентом DDPG с целевым сглаживанием политики и задержанной политикой и целевыми обновлениями.

  • Двухэлементный вектор-строка из rlQValueRepresentation объекты — Создают агента TD3 с двумя функциями ценности критика. Двумя сетями критика должен быть уникальный rlQValueRepresentation объекты с теми же спецификациями наблюдений и спецификациями действия. Представления могут или иметь отличные структуры или ту же структуру, но различными начальными параметрами.

Для получения дополнительной информации о создании представлений критика смотрите, Создают Представления Функции ценности и политика.

Свойства

развернуть все

Опции агента в виде rlTD3AgentOptions объект.

Буфер опыта в виде ExperienceBuffer объект. Во время обучения агент хранит каждое из своих событий (S, A, R, S') в буфере. Здесь:

  • S является текущим наблюдением за средой.

  • A является мерами, принятыми агентом.

  • R является вознаграждением за принимающий меры A.

  • S' является следующим наблюдением после принимающего меры A.

Для получения дополнительной информации о как демонстрационный опыт агента от буфера во время обучения, смотрите Задержанный Близнецами Глубоко Детерминированные Агенты Градиента политики.

Функции объекта

trainОбучите агента обучения с подкреплением в заданной среде
simСимулируйте обученного агента обучения с подкреплением в заданной среде
getActorПолучите представление актера от агента обучения с подкреплением
setActorУстановите представление актера агента обучения с подкреплением
getCriticПолучите представление критика от агента обучения с подкреплением
setCriticУстановите представление критика агента обучения с подкреплением
generatePolicyFunctionСоздайте функцию, которая оценивает обученную политику агента обучения с подкреплением

Примеры

свернуть все

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

env = rlPredefinedEnv("DoubleIntegrator-Continuous");
obsInfo = getObservationInfo(env);
numObs = obsInfo.Dimension(1);
actInfo = getActionInfo(env);
numAct = numel(actInfo);

Создайте два представления критика Q-значения. Во-первых, создайте структуру глубокой нейронной сети критика.

statePath1 = [
    imageInputLayer([numObs 1 1],'Normalization','none','Name','observation')
    fullyConnectedLayer(400,'Name','CriticStateFC1')
    reluLayer('Name','CriticStateRelu1')
    fullyConnectedLayer(300,'Name','CriticStateFC2')
    ];
actionPath1 = [
    imageInputLayer([numAct 1 1],'Normalization','none','Name','action')
    fullyConnectedLayer(300,'Name','CriticActionFC1')
    ];
commonPath1 = [
    additionLayer(2,'Name','add')
    reluLayer('Name','CriticCommonRelu1')
    fullyConnectedLayer(1,'Name','CriticOutput')
    ];

criticNet = layerGraph(statePath1);
criticNet = addLayers(criticNet,actionPath1);
criticNet = addLayers(criticNet,commonPath1);
criticNet = connectLayers(criticNet,'CriticStateFC2','add/in1');
criticNet = connectLayers(criticNet,'CriticActionFC1','add/in2');

Критик представления критика. Используйте ту же структуру сети ofr оба критика. Агент TD3 инициализирует эти две сети с помощью различных параметров по умолчанию.

criticOptions = rlRepresentationOptions('Optimizer','adam','LearnRate',1e-3,... 
                                        'GradientThreshold',1,'L2RegularizationFactor',2e-4);
critic1 = rlQValueRepresentation(criticNet,obsInfo,actInfo,...
    'Observation',{'observation'},'Action',{'action'},criticOptions);
critic2 = rlQValueRepresentation(criticNet,obsInfo,actInfo,...
    'Observation',{'observation'},'Action',{'action'},criticOptions);

Создайте глубокую нейронную сеть агента.

actorNet = [
    imageInputLayer([numObs 1 1],'Normalization','none','Name','observation')
    fullyConnectedLayer(400,'Name','ActorFC1')
    reluLayer('Name','ActorRelu1')
    fullyConnectedLayer(300,'Name','ActorFC2')
    reluLayer('Name','ActorRelu2')
    fullyConnectedLayer(numAct,'Name','ActorFC3')                       
    tanhLayer('Name','ActorTanh1')
    ];

Создайте детерминированное представление актера.

actorOptions = rlRepresentationOptions('Optimizer','adam','LearnRate',1e-3,...
                                       'GradientThreshold',1,'L2RegularizationFactor',1e-5);
actor  = rlDeterministicActorRepresentation(actorNet,obsInfo,actInfo,...
    'Observation',{'observation'},'Action',{'ActorTanh1'},actorOptions);

Задайте опции агента.

agentOptions = rlTD3AgentOptions;
agentOptions.DiscountFactor = 0.99;
agentOptions.TargetSmoothFactor = 5e-3;
agentOptions.TargetPolicySmoothModel.Variance = 0.2;
agentOptions.TargetPolicySmoothModel.LowerLimit = -0.5;
agentOptions.TargetPolicySmoothModel.UpperLimit = 0.5;

Создайте агента TD3 с помощью агента, критиков и опций.

agent = rlTD3Agent(actor,[critic1 critic2],agentOptions);

Можно также создать rlTD3Agent объект с одним критиком. В этом случае объект представляет агента DDPG с целевым сглаживанием политики и задержанной политикой и целевыми обновлениями.

delayedDDPGAgent = rlTD3Agent(actor,critic1,agentOptions);

Введенный в R2020a