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