Получите действие от агента или представления актера заданных наблюдений окружения
возвращает действие, выведенное из политики агента обучения с подкреплением, заданные наблюдения окружения.agentAction = getAction(agent,obs)
возвращает действие, выведенное из представления политики actorAction = getAction(actorRep,obs)actorRep заданные наблюдения окружения obs.
[ возвращает обновленное состояние представления актера, когда актёр использует рекуррентную нейронную сеть в качестве функциональной аппроксимации.actorAction,nextState] = getAction(actorRep,obs)
Создайте интерфейс окружения и получите его наблюдение и спецификации действия. Для этого окружения загружает предопределённое окружение, используемую для дискретной системы тележки с шестом.
env = rlPredefinedEnv("CartPole-Discrete");
obsInfo = getObservationInfo(env);
actInfo = getActionInfo(env);Создайте представление критика.
statePath = [
featureInputLayer(4,'Normalization','none','Name','state')
fullyConnectedLayer(24, 'Name', 'CriticStateFC1')
reluLayer('Name','CriticRelu1')
fullyConnectedLayer(24,'Name','CriticStateFC2')];
actionPath = [
featureInputLayer(1,'Normalization','none','Name','action')
fullyConnectedLayer(24, 'Name', 'CriticActionFC1')];
commonPath = [
additionLayer(2,'Name','add')
reluLayer('Name','CriticCommonRelu')
fullyConnectedLayer(1,'Name','output')];
criticNetwork = layerGraph(statePath);
criticNetwork = addLayers(criticNetwork, actionPath);
criticNetwork = addLayers(criticNetwork, commonPath);
criticNetwork = connectLayers(criticNetwork,'CriticStateFC2','add/in1');
criticNetwork = connectLayers(criticNetwork,'CriticActionFC1','add/in2');Создайте представление для критика.
criticOpts = rlRepresentationOptions('LearnRate',0.01,'GradientThreshold',1); critic = rlQValueRepresentation(criticNetwork,obsInfo,actInfo,... 'Observation',{'state'},'Action',{'action'},criticOpts);
Задайте опции агента и создайте агента DQN с помощью окружения и критика.
agentOpts = rlDQNAgentOptions(... 'UseDoubleDQN',false, ... 'TargetUpdateMethod',"periodic", ... 'TargetUpdateFrequency',4, ... 'ExperienceBufferLength',100000, ... 'DiscountFactor',0.99, ... 'MiniBatchSize',256); agent = rlDQNAgent(critic,agentOpts);
Получите дискретное действие от агента для единственного наблюдения. В данном примере используйте массив случайных наблюдений.
act = getAction(agent,{rand(4,1)})act = 10
Можно также получить действия для пакета наблюдений. Для примера получите действия для пакета из 10 наблюдений.
actBatch = getAction(agent,{rand(4,1,10)});
size(actBatch)ans = 1×2
1 10
actBatch содержит одно действие для каждого наблюдения в пакете, при этом каждое действие является одним из возможных дискретных действий.
Создайте информацию о наблюдении и действии. Можно также получить эти спецификации из окружения.
obsinfo = rlNumericSpec([4 1]); actinfo = rlNumericSpec([2 1]); numObs = obsinfo.Dimension(1); numAct = actinfo.Dimension(1);
Создайте для актёра рецидивирующую глубокую нейронную сеть.
net = [featureInputLayer(4,'Normalization','none','Name','state') fullyConnectedLayer(10,'Name','fc1') reluLayer('Name','relu1') fullyConnectedLayer(20,'Name','CriticStateFC2') fullyConnectedLayer(numAct,'Name','action') tanhLayer('Name','tanh1')];
Создайте детерминированное представление актера для сети.
actorOptions = rlRepresentationOptions('LearnRate',1e-3,'GradientThreshold',1); actor = rlDeterministicActorRepresentation(net,obsinfo,actinfo,... 'Observation',{'state'},'Action',{'tanh1'});
Получите действие от этого актёра для случайной партии из 20 наблюдений.
act = getAction(actor,{rand(4,1,10)})act = 1x1 cell array
{2x1x10 single}
act содержит два вычисленных действия для всех 10 наблюдений в пакете.
agent - Агент обучения с подкреплениемrlQAgent | rlSARSAAgent | rlDQNAgent | rlPGAgent | rlDDPGAgent | rlTD3Agent | rlACAgent | rlPPOAgentАгент обучения с подкреплением, заданный как один из следующих объектов:
actorRep - Представление актераrlDeterministicActorRepresentation | объекта rlStochasticActorRepresentation объектПредставление актера, заданное как rlDeterministicActorRepresentation или rlStochasticActorRepresentation объект.
obs - Наблюдения за окружениемНаблюдения окружения, заданные как массив ячеек с таким количеством элементов, сколько существует входных каналов наблюдений. Каждый элемент 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.
agentAction - Значение действия от агентаЗначение действия от агента, возвращаемое как массив с размерностями MA -by- LB -by- LS, где:
MA соответствует размерностям связанной спецификации действия.
LB - размер пакета.
LS - длина последовательности для рекуррентных нейронных сетей. Если бы актёр и критик в agent не используйте рекуррентные нейронные сети, тогда LS = 1.
Примечание
Когда такие агенты, как rlACAgent, rlPGAgent, или rlPPOAgent использовать rlStochasticActorRepresentation актёр с непрерывным пространством действий, ограничения, установленные спецификацией действия, не применяются агентом. В этих случаях необходимо применить ограничения пространства действий в окружении.
actorAction - Значение действия из представления актераЗначение действия из представления актера, возвращенное как одноэлементный массив ячеек, который содержит массив измерений MA -by- LB -by- LS, где:
MA соответствует размерностям спецификации действия.
LB - размер пакета.
LS - длина последовательности для рекуррентной нейронной сети. Если actorRep не использует рекуррентной нейронной сети, тогда LS = 1.
Примечание
rlStochasticActorRepresentation актёры с непрерывными пространствами действий не применяют ограничения, заданные спецификацией действия. В этих случаях необходимо применить ограничения пространства действий в окружении.
nextState - Обновленное состояние представления актераПредставление актера обновлённого состояния, возвращается как массив ячеек. Если actorRep не использует рекуррентной нейронной сети, тогда state - пустой массив ячеек.
Можно задать состояние представления равным state использование setState функция. Для примера:
valueRep = setState(actorRep,state);
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.