generatePolicyFunction

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

Описание

пример

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

пример

generatePolicyFunction(agent,Name,Value) задает имена функций, политика и файлов данных с помощью одного или нескольких аргументов пары "имя-значение".

Примеры

свернуть все

В этом примере показано, как создать функцию оценки политики для агента PG.

Во-первых, создайте и обучите агента обучения с подкреплением. В данном примере загружает агента PG, обученного в Train PG Agent, для балансировки системы тележки с шестом:

load('MATLABCartpolePG.mat','agent')

Затем создайте функцию оценки политики для этого агента с использованием имен по умолчанию:

generatePolicyFunction(agent);

Эта команда создает evaluatePolicy.m файл, который содержит функцию политики и agentData.mat файл, который содержит обученного актёра глубокой нейронной сети.

Просмотрите сгенерированную функцию.

type evaluatePolicy.m
function action1 = evaluatePolicy(observation1)
%#codegen

% Reinforcement Learning Toolbox
% Generated on: 22-Apr-2021 21:10:23

actionSet = [-10 10];
% Select action from sampled probabilities
probabilities = localEvaluate(observation1);
% Normalize the probabilities
p = probabilities(:)'/sum(probabilities);
% Determine which action to take
edges = min([0 cumsum(p)],1);
edges(end) = 1;
[~,actionIndex] = histc(rand(1,1),edges); %#ok<HISTC>
action1 = actionSet(actionIndex);
end
%% Local Functions
function probabilities = localEvaluate(observation1)
persistent policy
if isempty(policy)
	policy = coder.loadDeepLearningNetwork('agentData.mat','policy');
end
observation1 = observation1(:)';
probabilities = predict(policy, observation1);
end

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

Поскольку сеть актёра для этого агента PG имеет один входной слой и один выходной слой, можно сгенерировать код для этой сети с помощью функциональности генерации Deep Learning Toolbox™. Для получения дополнительной информации см. раздел Развертывание обученных политик обучения с подкреплением.

В этом примере показано, как создать функцию оценки политики для агента Q-обучения.

В данном примере загружает агента Q-обучения, обученного в Training Обучение с Подкреплением Agent в основном мире сетки

load('basicGWQAgent.mat','qAgent')

Создайте функцию оценки политики для этого агента и укажите имя файла данных агента.

generatePolicyFunction(qAgent,'MATFileName',"policyFile.mat")

Эта команда создает evaluatePolicy.m файл, который содержит функцию политики и policyFile.mat файл, который содержит обученные функции ценности Q-таблицы.

Просмотрите сгенерированную функцию.

type evaluatePolicy.m
function action1 = evaluatePolicy(observation1)
%#codegen

% Reinforcement Learning Toolbox
% Generated on: 22-Apr-2021 21:10:24

actionSet = [1;2;3;4];
numActions = numel(actionSet);
q = zeros(1,numActions);
for i = 1:numActions
	q(i) = localEvaluate(observation1,actionSet(i));
end
[~,actionIndex] = max(q);
action1 = actionSet(actionIndex);
end
%% Local Functions
function q = localEvaluate(observation1,action)
persistent policy
if isempty(policy)
	s = coder.load('policyFile.mat','policy');
	policy = s.policy;
end
actionSet = [1;2;3;4];
observationSet = [1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25];
actionIndex = rl.codegen.getElementIndex(actionSet,action);
observationIndex = rl.codegen.getElementIndex(observationSet,observation1);
q = policy(observationIndex,actionIndex);
end

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

Вы можете сгенерировать код для этой функции политики с помощью MATLAB ® Coder™

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

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

свернуть все

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

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

  • Агент DQN с одинарными представлениями критика глубоких нейронных сетей

  • Любой агент с представлениями актёра глубокой нейронной сети или критика с несколькими входными слоями наблюдений

Примечание

Агенты DQN с мультивыходами представления глубокой нейронной сети поддерживаются generatePolicyFunctionпри условии, что сеть имеет только один входной слой для наблюдений.

Чтобы обучить своего агента, используйте train функция.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'FunctionName',"computeAction"

Имя сгенерированной функции, заданное как пара "имя-значение", состоящая из 'FunctionName' и строка или вектор символов.

Имя переменной политики в сгенерированной функции, заданное как пара "имя-значение", состоящая из 'PolicyName' и строка или вектор символов.

Имя файла данных агента, заданное как пара "имя-значение", состоящая из 'MATFileName' и строка или вектор символов.

Введенный в R2019a