generatePolicyFunction

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

Во-первых, создайте и обучите агента обучения с подкреплением. В данном примере загрузите агента PG, обученного в, Обучают Агента PG Балансировать Систему Тележки с шестом:

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-обучения, обученного в, Обучают Агента Обучения с подкреплением в Основном Мире Сетки

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