rlTrainingOptions

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

Синтаксис

trainOpts = rlTrainingOptions
trainOpts = rlTrainingOptions(Name,Value)

Описание

пример

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

пример

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

Примеры

свернуть все

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

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

Чтобы включить параллельные вычисления для обучения агент изучения укрепления, вы сначала создаете набор опций с набором опции Parallelization к значению кроме "none". В данном примере сконфигурируйте набор опций для асинхронного параллельного обучения.

trainOpts = rlTrainingOptions('Parallelization',"async");

Когда вы устанавливаете Parallelization на это значение, программное обеспечение заполняет опцию ParallelizationOptions с объектом ParallelTraining по умолчанию.

trainOpts.ParallelizationOptions
ans = 
  ParallelTraining with properties:

             DataToSendFromWorkers: "Experiences"
              StepsUntilDataIsSent: -1
                 WorkerRandomSeeds: -1
    TransferBaseWorkspaceVariables: "on"
                     AttachedFiles: []
                          SetupFcn: []
                        CleanupFcn: []

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

trainOpts.ParallelizationOptions.StepsUntilDataIsSent = 100;
trainOpts.ParallelizationOptions.DataToSendFromWorkers = "Gradients";
trainOpts.ParallelizationOptions
ans = 
  ParallelTraining with properties:

             DataToSendFromWorkers: "Gradients"
              StepsUntilDataIsSent: 100
                 WorkerRandomSeeds: -1
    TransferBaseWorkspaceVariables: "on"
                     AttachedFiles: []
                          SetupFcn: []
                        CleanupFcn: []

Можно теперь использовать trainOpts в качестве входного параметра к команде train, чтобы выполнить обучение с параллельными вычислениями.

Входные параметры

свернуть все

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

Максимальное количество эпизодов, чтобы обучить агент, заданный как пара, разделенная запятой, состоящая из '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.

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

Примечание

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

  • Агенты 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".

Выходные аргументы

свернуть все

Набор опции для учебных агентов изучения укрепления, возвращенных как объект rlTrainingOptions. Значения свойств trainOpts инициализируются к значениям по умолчанию или к значениям, которые вы задаете с парами Name,Value. Можно далее изменить значения свойств с помощью записи через точку. Используйте набор опций в качестве входного параметра с train, когда вы обучите агенты изучения укрепления.

Введенный в R2019a

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