exponenta event banner

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-Learning Agent.

Для этого примера загрузите агент Q-Learning, обученный агенту Train Engarmation Learning Agent в Basic Grid World

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