rlRepresentation

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

Используйте rlRepresentation, чтобы создать функцию approximator представление для агента или критика агента изучения укрепления. Для этого вы задаете сигналы наблюдения и действия для учебной среды и опций, которые влияют на обучение агента, который использует представление. Для получения дополнительной информации о создании представлений смотрите, Создают политику и Представления Функции Значения.

Синтаксис

rep = rlRepresentation(net,obsInfo,'Observation',obsNames)
rep = rlRepresentation(net,obsInfo,actInfo,'Observation',obsNames,'Action',actNames)
tableCritic = rlRepresentation(tab)
critic = rlRepresentation(basisFcn,W0,obsInfo)
critic = rlRepresentation(basisFcn,W0,oaInfo)
actor = rlRepresentation(basisFcn,W0,obsInfo,actInfo)
rep = rlRepresentation(___,repOpts)

Описание

пример

rep = rlRepresentation(net,obsInfo,'Observation',obsNames) создает представление для глубокой нейронной сети net. Имена наблюдения obsNames являются сетевыми входными именами слоя. obsInfo содержит соответствующие спецификации наблюдения для учебной среды. Используйте этот синтаксис, чтобы создать представление для критика, который не требует входных параметров действия, таких как критик для агента rlPGAgent или rlACAgent.

пример

rep = rlRepresentation(net,obsInfo,actInfo,'Observation',obsNames,'Action',actNames) создает представление с сигналами действия, заданными именами actNames и спецификация actInfo. Используйте этот синтаксис, чтобы создать представление для любого агента, или для критика, который берет и наблюдение и действие, как введено, такое как критик для агента rlDDPGAgent или rlDQNAgent.

пример

tableCritic = rlRepresentation(tab) создает представление критика для таблицы значения или таблицы Q tab. Когда вы создаете табличное представление, вы задаете наблюдение и спецификации действия, когда вы создаете tab.

critic = rlRepresentation(basisFcn,W0,obsInfo) создает линейное представление основной функции с помощью указателя на пользовательскую основную функцию basisFcn и начальный вектор веса W0. obsInfo содержит соответствующие спецификации наблюдения для учебной среды. Используйте этот синтаксис, чтобы создать представление для критика, который не требует входных параметров действия, таких как критик для агента rlPGAgent или rlACAgent.

critic = rlRepresentation(basisFcn,W0,oaInfo) создает линейное представление основной функции с помощью массива ячеек спецификации oaInfo, где oaInfo = {obsInfo,actInfo}. Используйте этот синтаксис, чтобы создать представление для критика, который берет и наблюдения и действия как входные параметры, такие как критик для агента rlDDPGAgent или rlDQNAgent.

actor = rlRepresentation(basisFcn,W0,obsInfo,actInfo) создает линейное представление основной функции с помощью заданного наблюдения и спецификаций действия, obsInfo и actInfo, соответственно. Используйте этот синтаксис, чтобы создать представление для агента, который берет наблюдения в качестве входных параметров и генерирует действия.

пример

rep = rlRepresentation(___,repOpts) создает представление с помощью дополнительных опций, которые задают изучение параметров для представления, когда вы обучаете агент. Доступные параметры включают оптимизатор, используемый для обучения и темпа обучения. Используйте rlRepresentationOptions, чтобы создать набор опций repOpts. Можно использовать этот синтаксис с любой из предыдущих комбинаций входных аргументов.

Примеры

свернуть все

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

В данном примере создайте агента и представления критика для агента, который может быть обучен против полюсной корзиной среды, описанной в Агенте AC Train Сбалансировать полюсную Корзиной Систему. Во-первых, создайте среду. Затем извлеките наблюдение и спецификации действия от среды. Вам нужны эти спецификации, чтобы задать представления критика и агент.

env = rlPredefinedEnv("CartPole-Discrete");
obsInfo = getObservationInfo(env);
actInfo = getActionInfo(env);

Для критика состояния функционального значением, такого как используемые для AC или агентов PG, входные параметры являются наблюдениями, и вывод должен быть скалярным значением, значением состояния. В данном примере создайте представление критика с помощью глубокой нейронной сети с одним выводом, и с сигналами наблюдения, соответствующими x,xdot,theta,thetadot, как описано в Агенте AC Train, чтобы Сбалансировать полюсную Корзиной Систему. Можно получить количество наблюдений от спецификации obsInfo. Назовите сетевой вход 'observation' слоя.

numObservation = obsInfo.Dimension(1);
criticNetwork = [
    imageInputLayer([numObservation 1 1],'Normalization','none','Name','observation')
    fullyConnectedLayer(1,'Name','CriticFC')];

Задайте опции для представления критика с помощью rlRepresentationOptions. Эти опции управляют параметрами изучения сети критика, когда вы обучаете агент, который включает представление критика. В данном примере установите темп обучения на 0,05 и порог градиента к 1.

repOpts = rlRepresentationOptions('LearnRate',5e-2,'GradientThreshold',1);

Создайте представление критика с помощью заданной нейронной сети и опций. Кроме того, укажите информацию действия и наблюдения для критика. Для получения дополнительной информации смотрите rlRepresentation. Определите имя наблюдения к 'observation', который является именем, которое вы использовали, когда вы создали сетевой входной слой для criticNetwork.

critic = rlRepresentation(criticNetwork,obsInfo,'Observation',{'observation'},repOpts)
critic = 
  rlLayerRepresentation with properties:

    Options: [1×1 rl.option.rlRepresentationOptions]

Точно так же создайте сеть для агента. Агент AC решает который действие взять данный наблюдения с помощью представления агента. Для агента входные параметры являются наблюдениями, и вывод зависит от того, дискретен ли пробел действия или непрерывен. Для агента этого примера существует два возможных дискретных действия, –10 или 10. Таким образом, чтобы создать агента, используйте глубокую нейронную сеть с тем же входом наблюдения как критик, который может вывести эти два значения. Можно получить количество действий от спецификации actInfo. Назовите вывод 'action'.

numAction = numel(actInfo.Elements); 
actorNetwork = [
    imageInputLayer([4 1 1], 'Normalization','none','Name','observation')
    fullyConnectedLayer(numAction,'Name','action')];

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

actor = rlRepresentation(actorNetwork,obsInfo,actInfo,...
    'Observation',{'observation'},'Action',{'action'},repOpts)
actor = 
  rlLayerRepresentation with properties:

    Options: [1×1 rl.option.rlRepresentationOptions]

Можно теперь использовать агента и представления критика, чтобы создать агент AC.

agentOpts = rlACAgentOptions(...
    'NumStepsToLookAhead',32,...
    'DiscountFactor',0.99);
agent = rlACAgent(actor,critic,agentOpts)
agent = 
  rlACAgent with properties:

    AgentOptions: [1×1 rl.option.rlACAgentOptions]

Для дополнительных примеров, показывающих, как создать агента и представления критика для различных типов агента, см.:

Создайте интерфейс среды.

env = rlPredefinedEnv("BasicGridWorld");

Составьте таблицу Q с помощью спецификаций действия и наблюдения от среды.

qTable = rlTable(getObservationInfo(env),getActionInfo(env));

Создайте представление для таблицы Q.

tableRep = rlRepresentation(qTable);

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

obsInfo = geObservationInfo(env);
actInfo = getActionInfo(env);

Создайте пользовательскую основную функцию. В этом случае используйте квадратичную основную функцию от Train Пользовательский Агент LQR.

function B = computeQuadraticBasis(x,u,n)
z = cat(1,x,u);
idx = 1;
for r = 1:n
    for c = r:n
        if idx == 1
            B = z(r)*z(c);
        else
            B = cat(1,B,z(r)*z(c));
        end
        idx = idx + 1;
    end
end

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

nQ = size(obj.Q,1);
nR = size(obj.R,1);
n = nQ+nR;

Установите начальный вектор веса.

w0 = 0.1*ones(0.5*(n+1)*n,1);

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

critic = rlRepresentation(@(x,u) computeQuadraticBasis(x,u,n),w0,obsInfo,actInfo);

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

свернуть все

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

Имена наблюдения, заданные как массив ячеек из символьных векторов. Имена наблюдения являются сетевыми входными именами слоя, которые вы задаете, когда вы создаете net. Имена в obsNames должны быть тем же порядком как спецификации наблюдения в obsInfo.

Пример: {'observation'}

Спецификация наблюдения, заданная как укрепление, изучающее спецификацию, возражает или массив объектов спецификации. Можно извлечь obsInfo от существующей среды с помощью getObservationInfo. Или, можно создать спецификации вручную с помощью команды спецификации, такие как rlFiniteSetSpec или rlNumericSpec. Эта спецификация задает такую информацию о наблюдениях как размерности и имена сигналов наблюдения.

Имя действия, заданное как одноэлементный массив ячеек, который содержит вектор символов. Имя действия является сетевым именем слоя, которое вы задаете, когда вы создаете net. Для сетей критика этот слой является первым слоем входа path действия. Для агентов этот слой является последним слоем действия вывод path.

Пример: {'action'}

Спецификация действия, заданная как укрепление, изучающее объект спецификации. Можно извлечь actInfo от существующей среды с помощью getActionInfo. Или, можно создать спецификацию вручную с помощью команды спецификации, такой как rlFiniteSetSpec или rlNumericSpec. Эта спецификация задает такую информацию о действии как размерности и имя сигнала действия.

Для линейных представлений основной функции сигнал действия должен быть скаляром, вектор-столбцом или дискретным действием.

Таблица Value или таблица Q для критика, заданного как объект rlTable. learnable параметры табличного представления являются элементами tab.

Пользовательская основная функция, заданная как указатель на функцию к пользовательской функции. Для линейного представления основной функции выводом представления является f = W'B, где W является массивом веса, и B является вектор-столбцом, возвращенным пользовательской основной функцией. learnable параметры линейного представления основной функции являются элементами W.

При создании:

  • Представление критика с наблюдением вводит только, ваша основная функция должна иметь следующую подпись.

    B = myBasisFunction(obs1,obs2,...,obsN)

    Здесь obs1 к obsN является наблюдениями в том же порядке и с совпадающим типом данных и размерностями как спецификации наблюдения в obsInfo.

  • Представление критика с входными параметрами наблюдения и действия, ваша основная функция должна иметь следующую подпись.

    B = myBasisFunction(obs1,obs2,...,obsN,act)

    Здесь obs1 к obsN является наблюдениями в том же порядке и с совпадающим типом данных и размерностями как спецификации наблюдения в первом элементе oaInfo, и act имеет совпадающий тип данных и размерности как спецификация действия во втором элементе oaInfo.

  • Представление агента, ваша основная функция должна иметь следующую подпись.

    B = myBasisFunction(obs1,obs2,...,obsN)

    Здесь, obs1 к obsN является наблюдениями в том же порядке и с совпадающим типом данных и размерностями как спецификации наблюдения в obsInfo. Типы данных и размерности спецификации действия в actInfo влияют на тип данных и размерности f.

Пример: @(x,u) myBasisFunction(x,u)

Начальное значение для линейного массива веса основной функции, W, заданного как одно из следующего:

  • Вектор-столбец — При создании представления критика или представления агента с непрерывным скалярным сигналом действия

  • Массив — При создании представления агента с вектор-столбцом непрерывное действие сигнализирует или дискретный пробел действия.

Наблюдение и спецификации действия для создания линейных представлений критика основной функции, заданных как массив ячеек {obsInfo,actInfo}.

Опции представления, заданные как набор опции, который вы создаете с rlRepresentationOptions. Доступные параметры включают оптимизатор, используемый для обучения и темпа обучения. Смотрите rlRepresentationOptions для деталей.

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

свернуть все

Представление глубокой нейронной сети, возвращенное как объект rlLayerRepresentation. Используйте это представление, чтобы создать агент для изучения укрепления. Для получения дополнительной информации смотрите, что Укрепление Изучает Агенты.

Представление критика таблицы Value или Q, возвращенное как объект rlTableRepresentation. Используйте это представление, чтобы создать агент для изучения укрепления. Для получения дополнительной информации смотрите, что Укрепление Изучает Агенты.

Линейное представление критика основной функции, возвращенное как и объект rlLinearBasisRepresentation. Используйте это представление, чтобы создать агент для изучения укрепления. Для получения дополнительной информации смотрите, что Укрепление Изучает Агенты.

Линейное представление агента основной функции, возвращенное как и объект rlLinearBasisRepresentation. Используйте это представление, чтобы создать агент для изучения укрепления. Для получения дополнительной информации смотрите, что Укрепление Изучает Агенты.

Введенный в R2019a

Для просмотра документации необходимо авторизоваться на сайте