Установите вычислительную модель для представления функции ценности или политики
Создайте среду с непрерывным пространством действий и получите его спецификации наблюдений и спецификации действия. В данном примере загрузите среду, используемую в примере, Обучают Агента DDPG Управлять Двойной Системой Интегратора.
Загрузите предопределенную среду.
env = rlPredefinedEnv("DoubleIntegrator-Continuous")
env = DoubleIntegratorContinuousAction with properties: Gain: 1 Ts: 0.1000 MaxDistance: 5 GoalThreshold: 0.0100 Q: [2x2 double] R: 0.0100 MaxForce: Inf State: [2x1 double]
Получите спецификации наблюдений и спецификации действия.
obsInfo = getObservationInfo(env); actInfo = getActionInfo(env);
Создайте агента PPO из спецификаций наблюдений среды и спецификаций действия.
agent = rlPPOAgent(obsInfo,actInfo);
Чтобы изменить глубокие нейронные сети в агенте обучения с подкреплением, необходимо сначала извлечь представления актёра и критика.
actor = getActor(agent); critic = getCritic(agent);
Извлеките глубокие нейронные сети от обоих представления актёра и критика.
actorNet = getModel(actor); criticNet = getModel(critic);
Сетями является dlnetwork
объекты. Просмотреть их использующий plot
функция, необходимо преобразовать их в layerGraph
объекты.
Например, просмотрите сеть агента.
plot(layerGraph(actorNet))
Чтобы проверить сеть, используйте analyzeNetwork
. Например, проверьте сеть критика.
analyzeNetwork(criticNet)
Можно изменить агента и сети критика и сохранить их назад в агента. Чтобы изменить сети, можно использовать приложение Deep Network Designer. Чтобы открыть приложение для каждой сети, используйте следующие команды.
deepNetworkDesigner(layerGraph(criticNet)) deepNetworkDesigner(layerGraph(actorNet))
В Deep Network Designer измените сети. Например, можно добавить дополнительные слои в сеть. Когда вы измените сети, не изменяйте входные и выходные слои сетей, возвращенных getModel
. Для получения дополнительной информации о создании сетей смотрите Сети Сборки с Deep Network Designer.
Чтобы проверить модифицированную сеть в Deep Network Designer, необходимо нажать на Analyze для dlnetwork под разделом Analysis. Чтобы экспортировать модифицированные структуры сети в рабочую область MATLAB®, сгенерируйте код для создания новых сетей и запустите этот код из командной строки. Не используйте опцию экспорта в Deep Network Designer. Для примера, который показывает, как сгенерировать и запустить код, смотрите, Создают Агента Используя Deep Network Designer и Обучаются Используя Наблюдения Изображений.
В данном примере код для создания модифицированного агента и сетей критика находится в createModifiedNetworks.m
.
createModifiedNetworks
Каждая из модифицированных сетей включает дополнительный fullyConnectedLayer
и reluLayer
в их выходе path. Просмотрите модифицированную сеть агента.
plot(modifiedActorNet)
После экспорта сетей вставьте сети в представления актёра и критика.
actor = setModel(actor,modifiedActorNet); critic = setModel(critic,modifiedCriticNet);
Наконец, вставьте модифицированные представления актёра и критика в объекты критика и агента.
agent = setActor(agent,actor); agent = setCritic(agent,critic);
oldRep
— Политика или представление функции ценностиrlValueRepresentation
объект | rlQValueRepresentation
объект | rlDeterministicActorRepresentation
объект | rlStochasticActorRepresentation
объектПолитика или представление функции ценности в виде одного из следующего:
rlValueRepresentation
объект — представление Функции ценности
rlQValueRepresentation
объект — представление Q-функции-ценности
rlDeterministicActorRepresentation
объект — Представление актера с детерминированными действиями
rlStochasticActorRepresentation
объект — Представление актера со стохастическими действиями
Чтобы создать политику или представление функции ценности, используйте один из следующих методов.
model
— Вычислительная модельLayer
объекты | layerGraph
возразите | DAGNetwork
возразите | dlnetwork
возразите | rlTable
возразите | 1 2 массив ячеекВычислительная модель в виде одного из следующего:
Глубокая нейронная сеть, заданная как массив Layer
объекты, layerGraph
объект, DAGNetwork
объект или dlnetwork
объект. Входные и выходные слои model
должен иметь те же имена и размерности как сеть, возвращенная getModel
для того же представления. Здесь, выходной слой сразу является слоем перед выходным слоем потерь.
rlTable
объект с теми же размерностями как табличная модель задан в newRep
.
1 2 массив ячеек, который содержит указатель на функцию для пользовательской основной функции и параметров основной функции.
При определении новой модели необходимо использовать тот же тип модели как та, уже заданная в newRep
.
Примечание
Для агентов больше чем с одним критиком, таких как TD3 и агенты SAC, необходимо вызвать setModel
для каждого представления критика индивидуально, вместо вызова setModel
для массива возвращенных getCritic
.
critics = getCritic(myTD3Agent);
% Modify critic networks.
critics(1) = setModel(critics(1),criticNet1);
critics(2) = setModel(critics(2),criticNet2);
myTD3Agent = setCritic(myTD3Agent,critics);
newRep
— Новая политика или представление функции ценностиrlValueRepresentation
| rlQValueRepresentation
| rlDeterministicActorRepresentation
| rlStochasticActorRepresentation
Новая политика или представление функции ценности, возвращенное как объект представления того же типа как oldRep
. Кроме новой вычислительной модели, newRep
совпадает с oldRep
.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.