rlTrainingOptions

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

Описание

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

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

Создание

Описание

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

пример

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

Свойства

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

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

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

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

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

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

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

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

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

  • "AverageReward" — Остановите обучение, когда рабочее среднее вознаграждение будет равняться или будет превышать критическое значение.

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

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

  • "EpisodeCount" — Остановите обучение, когда количество эпизодов тренировки будет равняться или будет превышать критическое значение.

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

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

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

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

  • "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" или числовой скаляр.

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

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

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

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

Отметьте для использования параллельного обучения в виде разделенной запятой пары, состоящей из 'UseParallel' и любой true или false. Установка этой опции к true конфигурирует обучение использовать параллельные вычисления. Чтобы задать опции для параллельного обучения, используйте ParallelizationOptions свойство.

Используя параллельные вычисления требует программного обеспечения Parallel Computing Toolbox™.

Для получения дополнительной информации об обучении с помощью параллельных вычислений, смотрите, Обучают Агентов Обучения с подкреплением.

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

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

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

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

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

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

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

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

  • "gradients" — Вычислите и отправьте градиенты в хост. Хост применяет градиенты, чтобы обновить параметры сетей.

Примечание

AC и агенты PG принимают только DataToSendFromWorkers = "gradients". DQN и агенты DDPG принимают только DataToSendFromWorkers = "experiences".

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

Примечание

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

  • Агенты PG принимают только StepUntilDataIsSent = -1.

Инициализация Randomizer для рабочих в виде одного следующее:

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

  • –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Обучите агента обучения с подкреплением в заданной среде

Примеры

свернуть все

Создайте набор опций для обучения агент обучения с подкреплением. Определите максимальный номер эпизодов и максимальных шагов на эпизод к 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"
                   UseParallel: 0
        ParallelizationOptions: [1×1 rl.option.ParallelTraining]
            SaveAgentDirectory: "savedAgents"
                   StopOnError: "on"
                       Verbose: 1
                         Plots: "training-progress"

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

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"
                   UseParallel: 0
        ParallelizationOptions: [1×1 rl.option.ParallelTraining]
            SaveAgentDirectory: "savedAgents"
                   StopOnError: "on"
                       Verbose: 1
                         Plots: "training-progress"

Можно теперь использовать trainOpts как входной параметр к train команда.

Введенный в R2019a

Для просмотра документации необходимо авторизоваться на сайте