exponenta event banner

getMaxQValue

Получить максимальную оценку функции состояния-значения для представления функции Q-значения с дискретным пространством действия

Описание

пример

[maxQ,maxActionIndex] = getMaxQValue(qValueRep,obs) возвращает максимальную оцененную функцию состояния-значения для представления функции Q-значения qValueRep данные наблюдения за окружающей средой obs. getMaxQValue определяет дискретное действие, для которого оценка Q-значения является наибольшей, и возвращает это значение Q (maxQ) и соответствующий индекс действия (maxActionIndex).

[maxQ,maxActionIndex,state] = getMaxQValue(___) возвращает состояние представления. Использовать этот синтаксис при qValueRep является рецидивирующей нейронной сетью.

Примеры

свернуть все

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

env = rlPredefinedEnv('CartPole-Discrete');
obsInfo = getObservationInfo(env);
actInfo = getActionInfo(env);
numObs = obsInfo.Dimension(1);
numDiscreteAct = numel(actInfo.Elements);

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

criticNetwork = [
    featureInputLayer(4,'Normalization','none','Name','state')
    fullyConnectedLayer(50, 'Name', 'CriticStateFC1')
    reluLayer('Name','CriticRelu1')
    fullyConnectedLayer(20,'Name','CriticStateFC2')
    reluLayer('Name','CriticRelu2')
    fullyConnectedLayer(numDiscreteAct,'Name','output')];

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

criticOptions = rlRepresentationOptions('LearnRate',1e-3,'GradientThreshold',1);
critic = rlQValueRepresentation(criticNetwork,obsInfo,actInfo,...
    'Observation','state',criticOptions);

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

obs = rand(4,1);
val = getValue(critic,{obs})
val = 2x1 single column vector

    0.0139
   -0.1851

val содержит две оценки функции значения, по одной для каждого возможного дискретного действия.

Можно получить максимальную оценку функции Q-значения для всех дискретных действий.

[maxVal,maxIndex] = getMaxQValue(critic,{obs})
maxVal = single
    0.0139
maxIndex = 1

maxVal соответствует максимальной записи в val.

Можно также получить максимальные оценки функций Q-значения для пакета наблюдений. Например, получите оценки функции значений для пакета из 10 наблюдений.

[batchVal,batchIndex] = getMaxQValue(critic,{rand(4,1,10)});

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

свернуть все

Представление Q-значения, указанное как rlQValueRepresentation объект.

Наблюдения окружающей среды, определяемые как массив ячеек с таким количеством элементов, как есть входные каналы наблюдения. Каждый элемент obs содержит массив наблюдений для одного входного канала наблюдения.

Размеры каждого элемента в obs MO-за-LB-за-LS, где:

  • КО соответствует размерам соответствующего входного канала наблюдения.

  • LB - размер партии. Чтобы задать одно наблюдение, задайте LB = 1. Чтобы указать пакет наблюдений, укажите LB > 1. Если valueRep или qValueRep имеет несколько входных каналов наблюдения, то LB должен быть одинаковым для всех элементов obs.

  • LS определяет длину последовательности для рецидивирующей нейронной сети. Если valueRep или qValueRep не использует рецидивирующую нейронную сеть, то LS = 1. Если valueRep или qValueRep имеет несколько входных каналов наблюдения, тогда LS должен быть одинаковым для всех элементов obs.

LB и LS должны быть одинаковыми для обоих act и obs.

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

свернуть все

Максимальная оценка Q-значения для всех возможных дискретных действий, возвращаемых в виде массива 1-by-LB-by-LS, где:

  • LB - размер партии.

  • LS определяет длину последовательности для рецидивирующей нейронной сети. Если qValueRep не использует рецидивирующую нейронную сеть, то LS = 1.

Индекс действия, соответствующий максимальному значению Q, возвращаемый в виде массива 1-by-LB-by-LS, где:

  • LB - размер партии.

  • LS определяет длину последовательности для рецидивирующей нейронной сети. Если qValueRep не использует рецидивирующую нейронную сеть, то LS = 1.

Состояние представления, возвращаемое как массив ячеек. Если qValueRep не использует рецидивирующую нейронную сеть, то state является пустым массивом ячеек.

Можно задать состояние представления как state с использованием setState функция. Например:

valueRep = setState(qValueRep,state);
Представлен в R2020a