rlTrainingOptions

Опции для настройки агентов обучения с подкреплением

Описание

Использование rlTrainingOptions объект, чтобы задать опции обучения для агента. Чтобы обучить агента, используйте train.

Для получения дополнительной информации о обучении агентов см. 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.

  • Вы останавливаете обучение, нажимая кнопку Stop Training в Диспетчере эпизодов или нажимая 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™. Для использования компьютерных кластеров или облачных ресурсов дополнительно требуется MATLAB Parallel Server™.

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

Примечание

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

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

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

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

  • –2 - Не назначать работникам случайный seed.

  • Вектор - вручную задайте случайный seed для каждого работника. Количество элементов в векторе должно совпадать с количеством работников.

Опция для отправки переменных модели и рабочей области параллельным рабочим, заданная как "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