Опции для учебных агентов обучения с подкреплением
Используйте rlTrainingOptions
объект задать опции обучения для агента. Чтобы обучить агента, использовать train
.
Для получения дополнительной информации об учебных агентах смотрите, Обучают Агентов Обучения с подкреплением.
возвращает опции по умолчанию для обучения агент обучения с подкреплением. Используйте опции обучения, чтобы задать параметры для сеанса обучения, такие как максимальное количество эпизодов, чтобы обучаться, критерии остановки обучения, критериев сохранения агентов и опций для использования параллельных вычислений. После конфигурирования опций используйте trainOpts
= rlTrainingOptionstrainOpts
как входной параметр для train
.
создает набор опции обучения и устанавливает свойства объектов с помощью одного или нескольких аргументов пары "имя-значение".opt
= rlTrainingOptions(Name,Value
)
MaxEpisodes
— Максимальное количество эпизодов, чтобы обучить агента
(значение по умолчанию) | положительное целое числоМаксимальное количество эпизодов, чтобы обучить агента в виде положительного целого числа. Независимо от других критериев завершения обучение завершает работу после MaxEpisodes
.
Пример: 'MaxEpisodes',1000
MaxStepsPerEpisode
— Максимальное количество шагов, чтобы запуститься на эпизод
(значение по умолчанию) | положительное целое числоМаксимальное количество шагов, чтобы запуститься на эпизод в виде положительного целого числа. В общем случае вы задаете условия завершения эпизода в среде. Это значение является максимальным количеством шагов, чтобы запуститься в эпизоде, если другие условия завершения не соблюдают.
Пример: 'MaxStepsPerEpisode',1000
ScoreAveragingWindowLength
— Длина окна для усреднения
(значение по умолчанию) | положительный целочисленный скаляр | положительный целочисленный векторДлина окна для усреднения баллов, вознаграждений и количества шагов для каждого агента в виде скаляра или вектора.
Если учебная среда содержит одного агента, задайте 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
— Критическое значение учебного условия завершения
(значение по умолчанию) | скаляр | векторКритическое значение учебного условия завершения в виде скаляра или вектора.
Если учебная среда содержит одного агента, задайте 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
затем для DQN, DDPG, TD3 и SAC NumStepsToLookAhead
свойство или соответствующий объект опции агента должны быть установлены в 1
, в противном случае ошибка сгенерирована. Это гарантирует, что события хранятся непрерывно. Когда агенты AC обучены параллельно, предупреждение сгенерировано если StepsUntilDataIsSent
свойство ParallelizationOptions
объект установлен в различное значение, чем NumStepToLookAhead
свойство объекта опции агента AC.
Обратите внимание на то, что, если вы хотите ускорить вычисления глубокой нейронной сети (такие как расчет градиента, обновление параметра и предсказание) использование локального графического процессора, вы не должны устанавливать UseParallel
к истине. Вместо этого при создании агента или представления критика, используйте rlRepresentationOptions
объект, в который UseDevice
опция установлена в "gpu"
. Используя параллельные вычисления или графический процессор требует программного обеспечения Parallel Computing Toolbox™. Используя компьютерные кластеры или ресурсы облака дополнительно требует MATLAB Parallel Server™. Для получения дополнительной информации об обучении с помощью многоядерных процессоров и графических процессоров, смотрите, Обучают Агентов Используя Параллельные вычисления и графические процессоры.
Пример: 'UseParallel',true
ParallelizationOptions
— Опции, чтобы управлять параллельным обучениемParallelTraining
объектОпции распараллеливания, чтобы управлять параллельным обучением в виде ParallelTraining
объект. Для получения дополнительной информации об обучении с помощью параллельных вычислений, смотрите, Обучают Агентов Обучения с подкреплением.
ParallelTraining
объект имеет следующие свойства, которые можно изменить запись через точку использования после создания rlTrainingOptions
объект.
Mode
— Режим параллельных вычислений"sync"
(значение по умолчанию) | "async"
Режим параллельных вычислений в виде одного из следующего:
"sync"
Использование parpool
запускать синхронное обучение на доступных рабочих. В этом случае рабочие приостанавливают выполнение, пока все рабочие не закончены. Хост обновляет агента и параметры критика на основе результатов всех рабочих и отправляет обновленные параметры всем рабочим. Обратите внимание на то, что синхронное обучение требуется для основанного на градиенте распараллеливания, это когда DataToSendFromWorkers
установлен в "gradients"
затем Mode
должен быть установлен в "sync"
.
"async"
Использование parpool
запускать асинхронное обучение на доступных рабочих. В этом случае рабочие передают свои данные обратно в хост, как только они закончили и получают обновленные параметры от хоста. Рабочие затем продолжают свою задачу.
DataToSendFromWorkers
— Тип данных, которые рабочие отправляют в хост"experiences"
(значение по умолчанию) | "gradients"
Тип данных, которые рабочие отправляют в хост в виде одной из следующих строк:
"experiences"
— Симуляция выполняется рабочими, и изучение выполняется хостом. А именно, рабочие симулируют агента против среды и отправляют данные об опыте (наблюдение, действие, вознаграждение, следующее наблюдение и флаг, указывающий, было ли терминальное условие достигнуто) к хосту. Для агентов с градиентами хост вычисляет градиенты из событий, обновляет сетевые параметры и передает обновленные параметры обратно рабочим, они могут выполнить новую симуляцию против среды.
"gradients"
— И симуляция и изучение выполняются рабочими. А именно, рабочие симулируют агента против среды, вычисляют градиенты из событий и отправляют градиенты в хост. Хост составляет в среднем градиенты, обновляет сетевые параметры и передает обновленные параметры обратно рабочим, они могут выполнить новую симуляцию против среды. Эта опция требует синхронного обучения, которое является ею, требует Mode
быть установленным в "sync"
.
Примечание
Для AC и агентов PG, необходимо задать DataToSendFromWorkers
как "gradients"
.
Для DQN, DDPG, PPO, TD3 и агентов SAC, необходимо задать DataToSendFromWorkers
как "experiences"
.
StepsUntilDataIsSent
— Количество шагов, после которых рабочие отправляют данные в хост
(значение по умолчанию) | положительное целое числоКоличество шагов, после которых рабочие отправляют данные в хост и получают обновленные параметры в виде –1
или положительное целое число. Когда этой опцией является –1
, рабочий ожидает до конца эпизода и затем отправляет все данные о шаге в хост. В противном случае рабочий ожидает конкретное количество шагов перед передающими данными.
Примечание
Агенты AC не принимают StepsUntilDataIsSent = -1
. Для обучения AC, набор StepsUntilDataIsSent
равняйтесь NumStepToLookAhead
Опция агента AC.
Для агентов PG необходимо задать StepsUntilDataIsSent = -1
.
WorkerRandomSeeds
— Инициализация Randomizer для рабочих
(значение по умолчанию) | –2
| векторИнициализация Randomizer для рабочих в виде одного из следующего:
–1 — Присвойте уникальный случайный seed каждому рабочему. Значение seed является ID рабочего.
–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 | Обучите агентов обучения с подкреплением в заданной среде |
Создайте набор опций для обучения агент обучения с подкреплением. Определите максимальный номер эпизодов и максимальное количество шагов на эпизод к 1 000. Сконфигурируйте опции, чтобы остановить обучение, когда среднее вознаграждение равняется или превышает 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.