Получите действие от агента или представления актера заданных наблюдений окружения
возвращает действие, выведенное из политики агента обучения с подкреплением, заданные наблюдения окружения.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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.