Если вы создали среду и агента обучения с подкреплением, можно обучить агента в среде с помощью train
функция. Чтобы сконфигурировать ваше обучение, используйте rlTrainingOptions
функция. Например, создайте набор опции обучения opt
, и обучите агента agent
в среде env
.
opt = rlTrainingOptions(... 'MaxEpisodes',1000,... 'MaxStepsPerEpisode',1000,... 'StopTrainingCriteria',"AverageReward",... 'StopTrainingValue',480); trainStats = train(agent,env,opt);
Для получения дополнительной информации о создании агентов смотрите Агентов Обучения с подкреплением. Для получения дополнительной информации о создании сред смотрите, Создают Среды MATLAB для Обучения с подкреплением и Создают окружения Simulink для Обучения с подкреплением.
train
обновляет агента, в то время как обучение прогрессирует. Чтобы сохранить исходные параметры агента для дальнейшего использования, сохраните агента в MAT-файл.
save("initialAgent.mat","agent")
Обучение завершает работу автоматически, когда условия вы задаете в StopTrainingCriteria
и StopTrainingValue
опции вашего rlTrainingOptions
объекту удовлетворяют. Чтобы вручную отключить происходящее обучение, введите Ctrl+C или, в менеджере по Эпизоду Обучения с подкреплением, нажмите Stop Training. Поскольку train
обновляет агента в каждом эпизоде, можно возобновить обучение путем вызова train(agent,env,trainOpts)
снова, не теряя обученные параметры, изученные во время первого вызова train
.
В общем случае обучение выполняет следующие шаги.
Инициализируйте агента.
Для каждого эпизода:
Сбросьте среду.
Получите начальное наблюдение s 0 средой.
Вычислите начальное действие a 0 = μ (s 0), где μ (s) является текущей политикой.
Установите текущее действие на начальное действие (a a0) и установите текущее наблюдение на начальное наблюдение (s s0).
В то время как эпизод не закончен или закончен, выполните следующие шаги.
Примените действие a к среде и получите следующее наблюдение s' 'and вознаграждение r.
Извлеките уроки из набора опыта (s, a, r, s').
Вычислите следующее действие a' = μ (s').
Обновите текущее действие со следующим действием (a ←a') и обновите текущее наблюдение со следующим наблюдением (s ←s').
Закончите эпизод, если условия завершения, заданные в среде, соблюдают.
Если учебное условие завершения соблюдают, оконечное обучение. В противном случае начните следующий эпизод.
Специфические особенности того, как программное обеспечение выполняет эти шаги, зависят от настройки агента и среды. Например, сброс среды в начале каждого эпизода может включать значения начального состояния рандомизации, если вы конфигурируете свою среду, чтобы сделать так. Для получения дополнительной информации об агентах и их алгоритмах настройки, смотрите Агентов Обучения с подкреплением.
По умолчанию, вызов train
функция открывает менеджера по Эпизоду Обучения с подкреплением, который позволяет вам визуализировать процесс обучения. Менеджер по Эпизоду график показывает вознаграждение за каждый эпизод (EpisodeReward) и рабочее среднее премиальное значение (AverageReward). Кроме того, для агентов, которые имеют критиков, график показывает оценку критика обесцененного долгосрочного вознаграждения в начале каждого эпизода (EpisodeQ0). Менеджер по Эпизоду также отображает различный эпизод и учебную статистику. Можно также использовать train
функционируйте, чтобы возвратить эпизод и учебную информацию.
Для агентов с критиком Episode Q0 является оценкой обесцененного долгосрочного вознаграждения в начале каждого эпизода, учитывая начальное наблюдение за средой. В то время как обучение прогрессирует, если критик хорошо спроектирован. Episode Q0 приближается к истинному обесцененному долгосрочному вознаграждению, как показано на предыдущем рисунке.
Чтобы выключить менеджера по Эпизоду Обучения с подкреплением, установите Plots
опция rlTrainingOptions
к "none"
.
Во время обучения можно сохранить агентов кандидата, которые удовлетворяют условиям, которые вы задаете в SaveAgentCriteria
и SaveAgentValue
опции вашего rlTrainingOptions
объект. Например, можно сохранить любого агента, вознаграждение эпизода которого превышает определенное значение, даже если полному условию для завершения обучения еще не удовлетворяют. Например, сохраните агентов, когда вознаграждение эпизода будет больше 100
.
opt = rlTrainingOptions('SaveAgentCriteria',"EpisodeReward",'SaveAgentValue',100');
train
хранит сохраненных агентов в MAT-файле в папке, вы задаете использование SaveAgentDirectory
опция rlTrainingOptions
. Сохраненные агенты могут быть полезными, например, чтобы протестировать агентов кандидата, сгенерированных во время продолжительного учебного процесса. Для получения дополнительной информации о сохранении критериев и сохранении местоположения, смотрите rlTrainingOptions
.
После того, как обучение завершено, можно избавить обученного агента финала от рабочей области MATLAB® с помощью save
функция. Например, сохраните агента myAgent
к файлу finalAgent.mat
в текущей рабочей директории.
save(opt.SaveAgentDirectory + "/finalAgent.mat",'agent')
По умолчанию, когда DDPG и агенты DQN сохранены, буферные данные об опыте не сохранены. Если вы планируете далее обучить своего сохраненного агента, можно начать обучение с буфера предыдущего опыта как начальная точка. В этом случае установите SaveExperienceBufferWithAgent
опция к true
. Для некоторых агентов, таких как те с большими буферами опыта и основанными на изображении наблюдениями, память, требуемая для сохранения буфера опыта, является большой. В этих случаях необходимо гарантировать, что достаточно памяти доступно для сохраненных агентов.
Можно ускорить обучение агента путем хождения параллельно под учебные симуляции. Если у вас есть программное обеспечение Parallel Computing Toolbox™, можно идти параллельно симуляции на многоядерных компьютерах. Если у вас есть программное обеспечение MATLAB Parallel Server™, можно идти параллельно симуляции на ресурсах облака или компьютерных кластерах.
Когда вы обучаете агентов с помощью параллельных вычислений, клиент хоста отправляет копии агента и среды каждому параллельному рабочему. Каждый рабочий симулирует агента в среде и передает их данные моделирования обратно в хост. Агент хоста извлекает уроки из данных, отправленных рабочими, и передает обновленные параметры политики обратно рабочим.
Создать параллельный пул N
рабочие, используйте следующий синтаксис.
pool = parpool(N);
Если вы не создаете параллельное использование пула parpool
(Parallel Computing Toolbox), train
функция автоматически создает тот с помощью параллельных настроек пула по умолчанию. Для получения дополнительной информации об определении этих настроек смотрите, Задают Ваши Параллельные Настройки (Parallel Computing Toolbox).
Для агентов вне политики, таких как DDPG и агенты DQN, не используют все ваши ядра для параллельного обучения. Например, если ваш центральный процессор имеет шесть ядер, обучайтесь с четырьмя рабочими. Выполнение так предоставляет больше ресурсов клиенту хоста, чтобы вычислить градиенты на основе событий, переданных обратно от рабочих. Ограничение количества рабочих не необходимо для агентов на политике, таково как агенты PG и AC, когда градиенты вычисляются на рабочих.
Для получения дополнительной информации о конфигурировании вашего обучения использовать параллельные вычисления, смотрите UseParallel
и ParallelizationOptions
опции в rlTrainingOptions
.
Чтобы извлечь выгоду из параллельных вычислений, вычислительная стоимость для симуляции среды должна быть относительно дорогой по сравнению с оптимизацией параметров при передаче событий обратно в хост. Если симуляция среды не является достаточно дорогой, рабочие, неактивные при ожидании хоста, чтобы изучить и передать обновленные параметры обратно.
При передаче событий обратно от рабочих можно повысить демонстрационную эффективность, когда отношение (R) сложности шага среды к сложности изучения является большим. Если среда быстра, чтобы симулировать (R мал), вы вряд ли извлечете любую пользу из основанного на опыте распараллеливания. Если среда будет дорогой, чтобы симулировать, но также дорого учиться (например, если мини-пакетный размер будет большим), то вы также вряд ли повысите демонстрационную эффективность. Однако в этом случае, для агентов вне политики, можно уменьшать мини-пакетный размер, чтобы сделать R больше, который повышает демонстрационную эффективность.
Для примера, который обучает агента с помощью параллельных вычислений в MATLAB, смотрите, Обучают Агента AC Балансировать Систему Тележки с шестом Используя Параллельные вычисления. Для примера, который обучает агента с помощью параллельных вычислений в Simulink®, смотрите, Обучаются, Агент DQN для Хранения Маршрута Помогают Используя Параллельные вычисления.
При использовании аппроксимаций функции глубокой нейронной сети для вашего агента или представлений критика, можно ускорить обучение путем выполнения операций представления на графическом процессоре, а не центральном процессоре. Для этого установите UseDevice
опция к "gpu"
.
opt = rlRepresentationOptions('UseDevice',"gpu");
Размер любого повышения производительности зависит от вашего определенного приложения и конфигурации сети.
Чтобы подтвердить вашего обученного агента, можно симулировать агента в учебной среде с помощью sim
функция. Чтобы конфигурировать моделирование, использовать rlSimulationOptions
.
При проверке агента рассмотрите проверку, как агент обрабатывает следующее:
Изменения в начальных условиях симуляции — Чтобы изменить начальные условия модели, измените функцию сброса для среды. Например, сбросьте функции, смотрите, Создают Среду MATLAB Используя Пользовательские Функции, Создают Пользовательскую Среду MATLAB из Шаблона и Создают окружения Simulink для Обучения с подкреплением.
Несоответствия между обучением и динамикой среды симуляции — Чтобы проверять такие несоответствия, создайте тестовые среды таким же образом, что вы создали учебную среду, изменив поведение среды.
Как с параллельным обучением, если у вас есть программное обеспечение Parallel Computing Toolbox, можно запустить несколько параллельных симуляций на многоядерных компьютерах. Если у вас есть программное обеспечение MATLAB Parallel Server, можно запустить несколько параллельных симуляций на ресурсах облака или компьютерных кластерах. Для получения дополнительной информации о конфигурировании вашего моделирования, чтобы использовать параллельные вычисления, смотрите UseParallel
и ParallelizationOptions
\in rlSimulationOptions
.
Если ваша учебная среда реализует plot
метод, можно визуализировать поведение среды во время обучения и симуляции. Если вы вызываете plot(env)
перед обучением или симуляцией, где env
ваш объект среды, затем обновления визуализации во время обучения позволить вам визуализировать прогресс каждого эпизода или симуляции.
Визуализация среды не поддерживается когда обучение или симуляция вашего агента с помощью параллельных вычислений.
Для пользовательских сред необходимо реализовать собственное plot
метод. Для получения дополнительной информации о создании пользовательские среды с a plot
функционируйте, смотрите, Создают Пользовательскую Среду MATLAB из Шаблона.