getMaxQValue

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

Описание

пример

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

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

Примеры

свернуть все

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

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

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

criticNetwork = [
    imageInputLayer([4 1 1],'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 = 2×1 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-by-LB-by-LS, где:

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

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

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

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

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

свернуть все

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

  • LB является пакетным размером.

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

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

  • LB является пакетным размером.

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

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

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

valueRep = setState(qValueRep,state);

Введенный в R2020a