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