exponenta event banner

rlTrainingOptions

Варианты обучения агентов по обучению

Описание

Использовать rlTrainingOptions для указания параметров обучения для агента. Для обучения агента используйте train.

Дополнительные сведения об агентах обучения см. в разделе Обучение агентов обучения усилению.

Создание

Описание

trainOpts = rlTrainingOptions возвращает параметры по умолчанию для обучения агента обучения усилению. Используйте параметры обучения, чтобы указать параметры сеанса обучения, такие как максимальное количество обучаемых эпизодов, критерии прекращения обучения, критерии сохранения агентов и параметры использования параллельных вычислений. После настройки параметров используйте trainOpts в качестве входного аргумента для train.

пример

opt = rlTrainingOptions(Name,Value) создает набор параметров обучения и задает свойства объекта, используя один или несколько аргументов пары имя-значение.

Свойства

развернуть все

Максимальное количество эпизодов для обучения агента, указанное как положительное целое число. Независимо от других критериев прекращения, обучение прекращается после MaxEpisodes.

Пример: 'MaxEpisodes',1000

Максимальное количество шагов для выполнения в эпизоде, указанное как положительное целое число. Как правило, условия завершения эпизода определяются в среде. Это значение является максимальным количеством шагов для выполнения в эпизоде, если другие условия прекращения не выполнены.

Пример: 'MaxStepsPerEpisode',1000

Длина окна для усреднения баллов, вознаграждений и количества шагов для каждого агента, заданного как скаляр или вектор.

Если учебная среда содержит одного агента, укажите ScoreAveragingWindowLength как скаляр.

Если учебная среда представляет собой многоагентную среду Simulink ®, укажите скаляр для применения одинаковой длины окна ко всем агентам.

Чтобы использовать различную длину окна для каждого агента, укажите ScoreAveragingWindowLength как вектор. В этом случае порядок элементов в векторе соответствует порядку агентов, используемых при создании среды.

Для вариантов, выраженных в виде средних значений, ScoreAveragingWindowLength - количество эпизодов, включенных в средний показатель. Например, если StopTrainingCriteria является "AverageReward", и StopTrainingValue является 500 для данного агента, то для этого агента обучение прекращается, когда среднее вознаграждение превышает количество эпизодов, указанных в ScoreAveragingWindowLength равно или превышает 500. Для других агентов обучение продолжается до:

  • Все агенты достигают своих критериев остановки.

  • Количество эпизодов достигает MaxEpisodes.

  • Остановите обучение, нажав кнопку Stop Training в менеджере эпизодов или нажав Ctrl-C в командной строке MATLAB ®.

Пример: 'ScoreAveragingWindowLength',10

Условие окончания обучения, указанное как одна из следующих строк:

  • "AverageSteps" - Прекращать обучение, когда среднее количество выполняемых шагов на эпизод равно или превышает критическое значение, указанное опцией StopTrainingValue. Среднее значение вычисляется с помощью окна 'ScoreAveragingWindowLength'.

  • "AverageReward" - Прекращайте обучение, когда среднее вознаграждение равняется или превышает критическое значение.

  • "EpisodeReward" - Прекратить обучение, когда вознаграждение в текущем эпизоде равно или превышает критическое значение.

  • "GlobalStepCount" - Прекращать обучение, когда общее количество шагов во всех эпизодах (общее количество вызовов агента) равно или превышает критическое значение.

  • "EpisodeCount" - Прекращать тренировку, когда количество тренировочных эпизодов равно или превышает критическое значение.

Пример: 'StopTrainingCriteria',"AverageReward"

Критическое значение условия окончания обучения, указанное как скаляр или вектор.

Если учебная среда содержит одного агента, укажите StopTrainingValue как скаляр.

Если учебная среда является многоагентной средой Simulink, укажите скаляр для применения одного и того же критерия завершения ко всем агентам. Чтобы использовать различные критерии завершения для каждого агента, укажите StopTrainingValue как вектор. В этом случае порядок элементов в векторе соответствует порядку агентов, используемых при создании среды.

Для данного агента обучение заканчивается, когда условие завершения, указанное StopTrainingCriteria параметр равен или превышает это значение. Для других агентов обучение продолжается до:

  • Все агенты достигают своих критериев остановки.

  • Количество эпизодов достигает maxEpisodes.

  • Остановите обучение, нажав кнопку Остановить обучение в менеджере эпизодов или нажав Ctrl-C в командной строке MATLAB.

Например, если StopTrainingCriteria является "AverageReward", и StopTrainingValue является 100 для данного агента, то для этого агента обучение прекращается, когда среднее вознаграждение превышает количество эпизодов, указанных в ScoreAveragingWindowLength равно или превышает 100.

Пример: 'StopTrainingValue',100

Условие сохранения агентов во время обучения, указанное как одна из следующих строк:

  • "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 как скаляр.

Если учебная среда является многоагентной средой Simulink, укажите скаляр для применения одного и того же критерия сохранения к каждому агенту. Для сохранения агентов, удовлетворяющих определенному критерию, укажите SaveAgentValue как вектор. В этом случае порядок элементов в векторе соответствует порядку агентов, используемых при создании среды. При выполнении условий сохранения агента все агенты сохраняются в одном файле MAT.

При указании условия сохранения агентов-кандидатов с помощью SaveAgentCriteria, программное обеспечение устанавливает это значение равным 500. Измените значение, чтобы указать условие сохранения агента. См. раздел SaveAgentCriteria для получения дополнительной информации.

Пример: 'SaveAgentValue',100

Папка для сохраненных агентов, указанная как строковый или символьный вектор. Имя папки может содержать полный или относительный путь. Когда происходит эпизод, который удовлетворяет условию, указанному SaveAgentCriteria и SaveAgentValue , программа сохраняет агенты в MAT-файле в этой папке. Если папка не существует, train создает его. Когда SaveAgentCriteria является "none", этот параметр игнорируется и train не создает папку.

Пример: 'SaveAgentDirectory', pwd + "\run1\Agents"

Флаг для использования параллельного обучения, указанный как logical. Установка для этого параметра значения true настраивает обучение на использование параллельной обработки для моделирования среды, тем самым позволяя использовать несколько ядер, процессоров, компьютерных кластеров или облачных ресурсов для ускорения обучения. Чтобы указать параметры параллельного обучения, используйте ParallelizationOptions собственность.

Обратите внимание, что для ускорения глубоких вычислений нейронной сети (таких как вычисление градиента, обновление параметров и прогнозирование) с помощью локального графического процессора устанавливать не требуется UseParallel к true. Вместо этого при создании своего представления актера или критика используйте rlRepresentationOptions объект, в котором UseDevice параметр имеет значение "gpu".

Для использования параллельных вычислений или графического процессора требуется программное обеспечение Parallel Computing Toolbox™. Использование компьютерных кластеров или облачных ресурсов дополнительно требует Server™ MATLAB Parallel.

Дополнительные сведения об обучении работе с многоядерными процессорами и графическими процессорами см. в разделе Обучение агентов работе с параллельными вычислениями и графическими процессорами.

Пример: 'UseParallel',true

Параметры параллелизма для управления параллельным обучением, указанные как ParallelTraining объект. Дополнительные сведения об обучении с использованием параллельных вычислений см. в разделе Обучение агентов обучения усилению.

ParallelTraining имеет следующие свойства, которые можно изменить с помощью точечной нотации после создания rlTrainingOptions объект.

Режим параллельных вычислений, указанный как одно из следующих:

  • "sync" - Использование parpool для синхронного обучения имеющихся работников. В этом случае работники приостанавливают выполнение до тех пор, пока все работники не закончат работу. Хост обновляет параметры актера и критика на основе результатов от всех работников и отправляет обновленные параметры всем работникам.

  • "async" - Использование parpool для выполнения асинхронного обучения доступных работников. В этом случае работники отправляют свои данные обратно на хост по завершении и получают обновленные параметры от хоста. Затем рабочие продолжают выполнять свою задачу.

Тип данных, которые работники отправляют на узел, указанный как одна из следующих строк:

  • "experiences" - Моделирование выполняется работниками, а обучение - хостом. В частности, работники моделируют агента по отношению к окружающей среде и посылают данные опыта (наблюдение, действие, вознаграждение, следующее наблюдение и флаг, указывающий, достигнуто ли состояние терминала) на хост. Для агентов с градиентами хост вычисляет градиенты на основе опыта, обновляет параметры сети и отправляет обновленные параметры работникам, которые могут выполнить новое моделирование в среде.

  • "gradients" - Как моделирование, так и обучение выполняются работниками. В частности, рабочие моделируют агент в зависимости от среды, вычисляют градиенты на основе опыта и отправляют градиенты на хост. Хост усредняет градиенты, обновляет параметры сети и отправляет обновленные параметры работникам, которые могут выполнить новое моделирование в среде.

Примечание

Для агентов AC и PG необходимо указать DataToSendFromWorkers как "gradients".

Для агентов DQN, DDPG, PPO, TD3 и SAC необходимо указать DataToSendFromWorkers как "experiences".

Количество шагов, после которых работники отправляют данные на хост и получают обновленные параметры, указанные как –1 или положительное целое число. Когда этот параметр –1работник ожидает окончания эпизода, а затем отправляет все данные шага хосту. В противном случае работник ожидает указанного количества шагов перед отправкой данных.

Примечание

  • Агенты переменного тока не принимают StepsUntilDataIsSent = -1. Для A3C обучения, комплект StepsUntilDataIsSent равно NumStepToLookAhead Опция агента переменного тока.

  • Для агентов PG необходимо указать StepsUntilDataIsSent = -1.

Инициализация рандомизатора для работников, указанная как одно из следующих:

  • –1 - назначьте каждому работнику уникальное случайное начальное число. Значением начального числа является идентификатор работника.

  • –2 - Не присваивайте работникам случайное семя.

  • Вектор (Vector) - вручную укажите случайное начальное число для каждого работника. Число элементов в векторе должно соответствовать числу работников.

Параметр для отправки переменных модели и рабочей области параллельным работникам, указанный как "on" или "off". Когда опция "on", хост отправляет рабочим переменные, используемые в моделях и определенные в базовой рабочей области MATLAB.

Дополнительные файлы для присоединения к параллельному пулу, заданному как строковый или строковый массив.

Функция для запуска перед началом обучения, заданная как дескриптор функции, не имеющей входных аргументов. Эта функция выполняется один раз для каждого работника до начала обучения. Запишите эту функцию для выполнения любой обработки, необходимой перед обучением.

Функция для выполнения после окончания обучения, заданная как дескриптор функции, не имеющей входных аргументов. Эту функцию можно записать для очистки рабочей области или выполнения другой обработки после завершения обучения.

Отображение хода обучения в командной строке, указанной как логические значения false (0) или true (1). Установить в значение true запись информации из каждого учебного эпизода в командную строку MATLAB во время обучения.

Опция остановки обучения при возникновении ошибки во время эпизода, указанная как "on" или "off". Когда этот параметр "off", ошибки фиксируются и возвращаются в SimulationInfo вывод trainи тренировки продолжаются до следующего эпизода.

Возможность отображения хода обучения с помощью менеджера эпизодов, указанного как "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 команда.

Представлен в R2019a