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