Опции для настройки агентов обучения с подкреплением
Использование rlTrainingOptions
объект, чтобы задать опции обучения для агента. Чтобы обучить агента, используйте train
.
Для получения дополнительной информации о обучении агентов см. Train «Обучение агентов обучения с подкреплением».
возвращает опции по умолчанию для настройки агента обучения с подкреплением. Используйте опции обучения, чтобы задать параметры для сеанса обучения, такие как максимальное количество эпизодов для обучения, критерии для остановки обучения, критерии для сохранения агентов и опции для использования параллельных вычислений. После настройки опций используйте trainOpts
= rlTrainingOptionstrainOpts
как входной параметр для train
.
MaxEpisodes
- Максимальное количество эпизодов для обучения агента500
(по умолчанию) | положительное целое числоМаксимальное количество эпизодов для обучения агента, заданное как положительное целое число. Независимо от других критериев прекращения обучения прекращается после MaxEpisodes
.
Пример: 'MaxEpisodes',1000
MaxStepsPerEpisode
- Максимальное количество шагов для выполнения в каждом эпизоде500
(по умолчанию) | положительное целое числоМаксимальное количество шагов для запуска в каждом эпизоде, заданное как положительное целое число. В целом, вы задаете условия прекращения эпизода в окружении. Это значение является максимальным количеством шагов для выполнения в эпизоде, если другие условия завершения не выполняются.
Пример: 'MaxStepsPerEpisode',1000
ScoreAveragingWindowLength
- Длина окна для усреднения5
(по умолчанию) | положительный целочисленный скаляр | положительный целочисленный векторДлина окна для усреднения счетов, вознаграждений и количества шагов для каждого агента, заданная в виде скаляра или вектора.
Если окружение обучения содержит один агент, задайте ScoreAveragingWindowLength
как скаляр.
Если окружение обучения является мультиагентом Simulink® задайте скаляр, чтобы применить ту же длину окна ко всем агентам.
Чтобы использовать разную длину окна для каждого агента, задайте ScoreAveragingWindowLength
как вектор. В этом случае порядок элементов в векторе соответствует порядку агентов, используемых во время создания окружения.
Для опций, выраженных в терминах средних значений, ScoreAveragingWindowLength
- количество эпизодов, включенных в среднее значение. Для образца, если StopTrainingCriteria
является "AverageReward"
, и StopTrainingValue
является 500
для данного агента, а затем для этого агента обучение прекращается, когда среднее вознаграждение по количеству эпизодов, заданных в ScoreAveragingWindowLength
равен или превышает 500
. Для других агентов обучение продолжается до:
Все агенты достигают своих критериев остановки.
Количество эпизодов достигает MaxEpisodes
.
Вы останавливаете обучение, нажимая кнопку Stop Training в Диспетчере эпизодов или нажимая Ctrl-C в MATLAB® командная строка.
Пример: 'ScoreAveragingWindowLength',10
StopTrainingCriteria
- Условие прекращения обучения"AverageSteps"
(по умолчанию) | "AverageReward"
| "EpisodeCount"
| ...Условие завершения обучения, заданное как одна из следующих строк:
"AverageSteps"
- Остановите обучение, когда среднее количество шагов на эпизод равняется или превышает критическое значение, заданное опцией StopTrainingValue
. Вычисление среднего значения осуществляется с помощью окна 'ScoreAveragingWindowLength'
.
"AverageReward"
- Остановите обучение, когда текущее среднее вознаграждение равняется или превышает критическое значение.
"EpisodeReward"
- Остановите обучение, когда вознаграждение в текущем эпизоде равняется или превышает критическое значение.
"GlobalStepCount"
- Остановите обучение, когда общее количество шагов во всех эпизодах (общее количество раз, когда вызывается агент) равняется или превышает критическое значение.
"EpisodeCount"
- Остановите обучение, когда количество эпизодов тренировки равняется или превышает критическое значение.
Пример: 'StopTrainingCriteria',"AverageReward"
StopTrainingValue
- Критическое значение условия прекращения обучения 500
(по умолчанию) | скалярный вектор |Критическое значение условия завершения обучения, заданное как скаляр или вектор.
Если окружение обучения содержит один агент, задайте StopTrainingValue
как скаляр.
Если окружение обучения является окружением Simulink с мультиагентами, задайте скаляр, чтобы применить один и тот же критерий завершения ко всем агентам. Чтобы использовать другой критерий завершения для каждого агента, задайте StopTrainingValue
как вектор. В этом случае порядок элементов в векторе соответствует порядку агентов, используемых во время создания окружения.
Для данного агента обучение заканчивается, когда условие завершения, заданное StopTrainingCriteria
опция равна или превышает это значение. Для других агентов обучение продолжается до:
Все агенты достигают своих критериев остановки.
Количество эпизодов достигает maxEpisodes
.
Вы останавливаете обучение, нажимая кнопку Stop Training в Диспетчере эпизодов или нажимая Ctrl-C в командной строке MATLAB.
Для образца, если StopTrainingCriteria
является "AverageReward"
, и StopTrainingValue
является 100
для данного агента, а затем для этого агента обучение прекращается, когда среднее вознаграждение по количеству эпизодов, заданных в ScoreAveragingWindowLength
равен или превышает 100
.
Пример: 'StopTrainingValue',100
SaveAgentCriteria
- Условие сохранения агентов во время обучения"none"
(по умолчанию) | "EpisodeReward"
| "AverageReward"
| "EpisodeCount"
| ...Условие сохранения агентов во время обучения, заданное как одна из следующих строк:
"none"
- Не сохраняйте агентов во время обучения.
"EpisodeReward"
- Сохраните агента, когда вознаграждение в текущем эпизоде равняется или превышает критическое значение.
"AverageSteps"
- Сохраните агент, когда среднее количество шагов на эпизод равняется или превышает критическое значение, заданное опцией StopTrainingValue
. Вычисление среднего значения осуществляется с помощью окна 'ScoreAveragingWindowLength'
.
"AverageReward"
- Сохраните агент, когда текущее среднее вознаграждение по всем эпизодам равняется или превышает критическое значение.
"GlobalStepCount"
- Сохраните агент, когда общее количество шагов во всех эпизодах (общее количество раз, когда вызывается агент) равняется или превышает критическое значение.
"EpisodeCount"
- Сохраните агента, когда количество эпизодов тренировки равняется или превышает критическое значение.
Установите эту опцию, чтобы хранить агентов кандидата, которые работают хорошо в соответствии с заданными критериями. Когда вы устанавливаете эту опцию значение, отличное от "none"
, программное обеспечение устанавливает SaveAgentValue
опция 500. Можно изменить это значение, чтобы задать условие сохранения агента.
Например, предположим, что вы хотите хранить для дальнейшей проверки любого агента, который дает вознаграждение эпизода, которое равняется или превышает 100. Для этого установите SaveAgentCriteria
на "EpisodeReward"
и установите SaveAgentValue
опция 100. Когда вознаграждение эпизода равняется или превышает 100, train
сохраняет соответствующий агент в файле MAT в папке, заданной SaveAgentDirectory
опция. Файл MAT вызывается AgentK.mat
, где K
- номер соответствующего эпизода. Агент сохранен в этом файле MAT следующим saved_agent
.
Пример: 'SaveAgentCriteria',"EpisodeReward"
SaveAgentValue
- Критическое значение условия для сохраняющих агентов"none"
(по умолчанию) | 500 | скалярный вектор |Критическое значение условия сохранения агентов, заданное как скаляр или вектор.
Если окружение обучения содержит один агент, задайте SaveAgentValue
как скаляр.
Если окружение обучения является окружением Simulink с мультиагентами, задайте скаляр, чтобы применить один и тот же критерий сохранения к каждому агенту. Чтобы сохранить агентов, когда они удовлетворяют конкретному критерию, задайте SaveAgentValue
как вектор. В этом случае порядок элементов в векторе соответствует порядку агентов, используемых при создании окружения. Когда достигается критерий сохранения агента, все агенты сохраняются в одном и том же файле MAT.
Когда вы задаете условие для сохранения агентов кандидата с помощью SaveAgentCriteria
программное обеспечение устанавливает это значение равным 500. Измените значение, чтобы задать условие сохранения агента. Смотрите SaveAgentCriteria
опция для получения дополнительной информации.
Пример: 'SaveAgentValue',100
SaveAgentDirectory
- Папка для сохраненных агентов"savedAgents"
(по умолчанию) | строку | вектор символовПапка для сохраненных агентов, заданная как строковый или символьный вектор. Имя папки может содержать полный или относительный путь. Когда происходит эпизод, который удовлетворяет условию, заданному SaveAgentCriteria
и SaveAgentValue
опции, программное обеспечение сохраняет агентов в файле MAT в этой папке. Если папка не существует, train
создает его. Когда SaveAgentCriteria
является "none"
, эта опция игнорируется и train
не создает папку.
Пример: 'SaveAgentDirectory', pwd + "\run1\Agents"
UseParallel
- Флаг для использования параллельного обученияfalse
(по умолчанию) | true
Флаг для использования параллельного обучения, заданный как logical
. Установка этой опции равной true
конфигурирует обучение для использования параллельной обработки для моделирования окружения, что позволяет использовать несколько ядер, процессоры, компьютерные кластеры или облачные ресурсы для ускорения обучения. Чтобы задать опции для параллельного обучения, используйте ParallelizationOptions
свойство.
Обратите внимание, что, если вы хотите ускорить вычисления глубокой нейронной сети (такие как расчет градиента, обновление параметра и предсказание) с помощью локального графического процессора, вам не нужно устанавливать UseParallel
к true. Вместо этого при создании представления вашего актёра или критика используйте rlRepresentationOptions
объект, в котором UseDevice
для опции задано значение "gpu"
.
Для использования параллельных вычислений или графического процессора требуется программное обеспечение Parallel Computing Toolbox™. Для использования компьютерных кластеров или облачных ресурсов дополнительно требуется MATLAB Parallel Server™.
Дополнительные сведения об обучении с использованием многоядерных процессоров и графических процессоров см. в разделе Train агентов с использованием параллельных вычислений и графических процессоров.
Пример: 'UseParallel',true
ParallelizationOptions
- Опции для управления параллельным обучениемParallelTraining
объектОпции параллелизации для управления параллельным обучением, заданные как ParallelTraining
объект. Для получения дополнительной информации об обучении с использованием параллельных вычислений см. Train «Обучение агентов обучения с подкреплением».
The ParallelTraining
объект имеет следующие свойства, которые можно изменить с помощью записи через точку после создания rlTrainingOptions
объект.
Mode
- Режим параллельных вычислений"sync"
(по умолчанию) | "async"
Режим параллельных вычислений, заданный как один из следующих:
"sync"
- Использование parpool
чтобы запустить синхронное обучение для доступных работников. В этом случае рабочие останавливают выполнение, пока все работники не закончены. Ведущий обновляет параметры актёра и критика на основе результатов от всех работников и отправляет обновленные параметры всем работникам.
"async"
- Использование parpool
чтобы запустить асинхронное обучение для доступных работников. В этом случае работники отправляют свои данные обратно на хост, как только заканчивают и получают обновленные параметры от хоста. Затем рабочие продолжают выполнять свою задачу.
DataToSendFromWorkers
- Тип данных, которые рабочие передают на хост"experiences"
(по умолчанию) | "gradients"
Тип данных, которые рабочие лица отправляют на хост, задается как одна из следующих строк:
"experiences"
- Симуляция выполняется работниками, а обучение - хозяином. В частности, рабочие моделируют агент против окружения и отправляют данные опыта (наблюдение, действие, вознаграждение, следующее наблюдение и флаг, указывающий, достигнуто ли терминальное условие) хосту. Для агентов с градиентами хост вычисляет градиенты из опыта, обновляет параметры сети и отправляет обновленные параметры работникам, чтобы они могли выполнить новую симуляцию относительно окружения.
"gradients"
- И симуляция, и обучение выполняются работниками. В частности, рабочие моделируют агент относительно окружения, вычисляют градиенты от опыта и отправляют градиенты в хост. Хост усредняет градиенты, обновляет параметры сети и отправляет обновленные параметры работникам, чтобы они могли выполнить новую симуляцию относительно окружения.
Примечание
Для агентов AC и PG необходимо задать DataToSendFromWorkers
как "gradients"
.
Для агентов DQN, DDPG, PPO, TD3 и SAC необходимо указать DataToSendFromWorkers
как "experiences"
.
StepsUntilDataIsSent
- Количество шагов, после которых работники отправляют данные на хост–1
(по умолчанию) | положительное целое числоКоличество шагов, после которых работники отправляют данные на хост и получают обновленные параметры, заданное как –1
или положительное целое число. Когда эта опция –1
Рабочий процесс ожидает окончания эпизода, а затем отправляет все данные шага на хост. В противном случае рабочий процесс ожидает заданное количество шагов перед отправкой данных.
Примечание
Агенты AC не принимают StepsUntilDataIsSent = -1
. Для A3C обучения задайте StepsUntilDataIsSent
равен NumStepToLookAhead
Опция агента переменного тока.
Для агентов PG необходимо задать StepsUntilDataIsSent = -1
.
WorkerRandomSeeds
- Инициализация рандомизатора для рабочих процессов–1
(по умолчанию) | –2
| векторИнициализация рандомизатора для рабочих процессов, заданная как одно из следующего:
–1
- Присвоение уникального случайного seed каждому работнику. Значение seed является идентификатором работника.
–2
- Не назначать работникам случайный seed.
Вектор - вручную задайте случайный seed для каждого работника. Количество элементов в векторе должно совпадать с количеством работников.
TransferBaseWorkspaceVariables
- Опция для отправки переменных модели и рабочей области параллельным рабочим"on"
(по умолчанию) | "off"
Опция для отправки переменных модели и рабочей области параллельным рабочим, заданная как "on"
или "off"
. Когда опция "on"
хост отправляет работникам переменные, используемые в моделях и заданные в базовом рабочем пространстве MATLAB.
AttachedFiles
- Дополнительные файлы для присоединения к параллельному пулу[]
(по умолчанию) | строку | строковые массивыДополнительные файлы для присоединения к параллельному пулу, заданные как строковые или строковые массивы.
SetupFcn
- Функция для запуска перед началом обучения[]
(по умолчанию) | указатель на функциюФункция для выполнения перед началом обучения, заданная как указатель на функцию, не имеющую входных параметров. Эта функция запускается один раз на каждого работника перед началом обучения. Напишите эту функцию, чтобы выполнить любую обработку, которая вам нужна до обучения.
CleanupFcn
- Функция для запуска после окончания обучения[]
(по умолчанию) | указатель на функциюФункция для выполнения после окончания обучения, заданная как указатель на функцию, не имеющую входных параметров. Можно записать эту функцию, чтобы очистить рабочую область или выполнить другую обработку после завершения обучения.
Verbose
- Отображение процесса обучения в командной строкеfalse
(0) (по умолчанию) | true
(1)Отобразите процесс обучения в командной строке, заданный как логические значения false
(0) или true
(1). Установите значение true
для записи информации из каждого эпизода тренировки в командную строку MATLAB во время обучения.
StopOnError
- Опция остановки обучения при возникновении ошибки"on"
(по умолчанию) | "off"
Опция остановить обучение, когда ошибка происходит во время эпизода, заданная как "on"
или "off"
. Когда эта опция "off"
ошибки фиксируются и возвращаются в SimulationInfo
выхода train
, и обучение продолжается до следующего эпизода.
Plots
- Опция отображения процесса обучения с диспетчером эпизодов"training-progress"
(по умолчанию) | "none"
Опция отображения процесса обучения с диспетчером эпизодов, заданная как "training-progress"
или "none"
. По умолчанию вызов train
открывает Диспетчер эпизодов обучения с подкреплением, который графически и численно отображает информацию о процессе обучения, такую как вознаграждение за каждый эпизод, среднее вознаграждение, количество эпизодов и общее количество шагов. (Для получения дополнительной информации см. train
.) Чтобы выключить это отображение, установите эту опцию равной "none"
.
train | Обучите агентов обучения с подкреплением в заданном окружении |
Создайте набор опций для настройки агента обучения с подкреплением. Установите максимальное количество эпизодов и максимальное количество шагов в каждом эпизоде равным 1000. Настройте опции, чтобы остановить обучение, когда среднее вознаграждение равняется или превышает 480, и включите отображение командной строки и диспетчер эпизода обучения с подкреплением для отображения результатов обучения. Можно задать опции с помощью аргументов пары "имя-значение" при создании набора опций. Все опции, которые вы явным образом не задаете, имеют значения по умолчанию.
trainOpts = rlTrainingOptions(... 'MaxEpisodes',1000,... 'MaxStepsPerEpisode',1000,... 'StopTrainingCriteria',"AverageReward",... 'StopTrainingValue',480,... 'Verbose',true,... 'Plots',"training-progress")
trainOpts = rlTrainingOptions with properties: MaxEpisodes: 1000 MaxStepsPerEpisode: 1000 ScoreAveragingWindowLength: 5 StopTrainingCriteria: "AverageReward" StopTrainingValue: 480 SaveAgentCriteria: "none" SaveAgentValue: "none" SaveAgentDirectory: "savedAgents" Verbose: 1 Plots: "training-progress" StopOnError: "on" UseParallel: 0 ParallelizationOptions: [1x1 rl.option.ParallelTraining]
Кроме того, создайте набор опций по умолчанию и используйте запись через точку для изменения некоторых значений.
trainOpts = rlTrainingOptions; trainOpts.MaxEpisodes = 1000; trainOpts.MaxStepsPerEpisode = 1000; trainOpts.StopTrainingCriteria = "AverageReward"; trainOpts.StopTrainingValue = 480; trainOpts.Verbose = true; trainOpts.Plots = "training-progress"; trainOpts
trainOpts = rlTrainingOptions with properties: MaxEpisodes: 1000 MaxStepsPerEpisode: 1000 ScoreAveragingWindowLength: 5 StopTrainingCriteria: "AverageReward" StopTrainingValue: 480 SaveAgentCriteria: "none" SaveAgentValue: "none" SaveAgentDirectory: "savedAgents" Verbose: 1 Plots: "training-progress" StopOnError: "on" UseParallel: 0 ParallelizationOptions: [1x1 rl.option.ParallelTraining]
Теперь можно использовать trainOpts
как входной параметр к train
команда.
Создайте объект опции для одновременного обучения трех агентов в одном окружении.
Установите максимальное количество эпизодов и максимальные шаги на эпизод равными 1000
. Сконфигурируйте опции, чтобы остановить обучение первого агента, когда его среднее вознаграждение за 5 эпизодов равняется или превышает 400, второго агента, когда его среднее вознаграждение над 10
эпизоды равны или превышают 500, и третий, когда его среднее вознаграждение за 15 эпизодов равняется или превышает 600. Порядок агентов является тем, который используется при создании окружения.
Сохраните агентов, когда вознаграждение для первого агента в текущем эпизоде превышает 100, или когда вознаграждение для второго агента превышает 120, вознаграждение для третьего агента равняется или превышает 140.
Включите отображение командной строки и Диспетчер эпизодов обучения с подкреплением для отображения результатов обучения. Можно задать опции с помощью аргументов пары "имя-значение" при создании набора опций. Все опции, которые вы явным образом не задаете, имеют значения по умолчанию.
trainOpts = rlTrainingOptions(... 'MaxEpisodes',1000,... 'MaxStepsPerEpisode',1000,... 'ScoreAveragingWindowLength',[5 10 15],... 'StopTrainingCriteria',"AverageReward",... 'StopTrainingValue',[400 500 600],... 'SaveAgentCriteria',"EpisodeReward",... 'SaveAgentValue',[100 120 140],... 'Verbose',true,... 'Plots',"training-progress")
trainOpts = rlTrainingOptions with properties: MaxEpisodes: 1000 MaxStepsPerEpisode: 1000 ScoreAveragingWindowLength: [5 10 15] StopTrainingCriteria: "AverageReward" StopTrainingValue: [400 500 600] SaveAgentCriteria: "EpisodeReward" SaveAgentValue: [100 120 140] SaveAgentDirectory: "savedAgents" Verbose: 1 Plots: "training-progress" StopOnError: "on" UseParallel: 0 ParallelizationOptions: [1x1 rl.option.ParallelTraining]
Кроме того, создайте набор опций по умолчанию и используйте запись через точку для изменения некоторых значений.
trainOpts = rlTrainingOptions; trainOpts.MaxEpisodes = 1000; trainOpts.MaxStepsPerEpisode = 1000; trainOpts.ScoreAveragingWindowLength = [5 10 15]; trainOpts.StopTrainingCriteria = "AverageReward"; trainOpts.StopTrainingValue = [400 500 600]; trainOpts.SaveAgentCriteria = "EpisodeReward"; trainOpts.SaveAgentValue = [100 120 140]; trainOpts.Verbose = true; trainOpts.Plots = "training-progress"; trainOpts
trainOpts = rlTrainingOptions with properties: MaxEpisodes: 1000 MaxStepsPerEpisode: 1000 ScoreAveragingWindowLength: [5 10 15] StopTrainingCriteria: "AverageReward" StopTrainingValue: [400 500 600] SaveAgentCriteria: "EpisodeReward" SaveAgentValue: [100 120 140] SaveAgentDirectory: "savedAgents" Verbose: 1 Plots: "training-progress" StopOnError: "on" UseParallel: 0 ParallelizationOptions: [1x1 rl.option.ParallelTraining]
Можно задать скаляр, чтобы применить один и тот же критерий ко всем агентам. Например, используйте длину окна 10
для всех трех агентов.
trainOpts.ScoreAveragingWindowLength = 10
trainOpts = rlTrainingOptions with properties: MaxEpisodes: 1000 MaxStepsPerEpisode: 1000 ScoreAveragingWindowLength: 10 StopTrainingCriteria: "AverageReward" StopTrainingValue: [400 500 600] SaveAgentCriteria: "EpisodeReward" SaveAgentValue: [100 120 140] SaveAgentDirectory: "savedAgents" Verbose: 1 Plots: "training-progress" StopOnError: "on" UseParallel: 0 ParallelizationOptions: [1x1 rl.option.ParallelTraining]
Теперь можно использовать trainOpts
как входной параметр к train
команда.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.