exponenta event banner

TrainingOptionsRMSProp

Варианты обучения для оптимизатора RMSProp

Описание

Варианты обучения для оптимизатора RMSProp (среднеквадратичное распространение), включая информацию о скорости обучения, коэффициент регуляции L2 и размер мини-партии.

Создание

Создать TrainingOptionsRMSProp объект с использованием trainingOptions и определение 'rmsprop' в качестве solverName входной аргумент.

Свойства

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

Графики и отображение

Графики для отображения во время обучения сети, указанные как одно из следующих:

  • 'none' - Не отображать графики во время обучения.

  • 'training-progress'- Ход обучения на участке. На графике показаны потери и точность мини-партии, потери и точность проверки и дополнительная информация о ходе обучения. В верхнем правом углу графика имеется кнопка остановки. Нажмите кнопку, чтобы остановить обучение и вернуть текущее состояние сети.

Индикатор отображения информации о ходе обучения в командном окне, указанный как 1 (true) или 0 (false).

Отображаемая информация включает номер эпохи, номер итерации, прошедшее время, потери мини-партии, точность мини-партии и базовую скорость обучения. При обучении регрессионной сети вместо точности отображается среднеквадратическая ошибка (RMSE). При проверке сети во время обучения отображаемая информация также включает потерю проверки и точность проверки (или RMSE).

Типы данных: logical

Частота подробной печати, которая представляет собой число итераций между печатью в командное окно, указанное как положительное целое число. Это свойство действует только в том случае, если Verbose значение равно true.

При проверке сети во время обучения trainNetwork печатается в окне команд каждый раз при проверке.

Параметры мини-пакета

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

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

Размер мини-пакета, используемого для каждой итерации обучения, указанный как положительное целое число. Мини-пакет - это подмножество обучающего набора, которое используется для оценки градиента функции потерь и обновления весов.

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

  • 'once' - Перетасовка данных обучения и валидации один раз перед обучением.

  • 'never' - Не перетасовывать данные.

  • 'every-epoch' - Перетасовка данных обучения перед каждой эпохой обучения и перетасовка данных проверки перед каждой проверкой сети. Если размер мини-партии не разделяет равномерно количество обучающих образцов, то trainNetwork отбрасывает обучающие данные, которые не укладываются в окончательную полную мини-партию каждой эпохи. Установите Shuffle значение для 'every-epoch' чтобы избежать отбрасывания одних и тех же данных каждую эпоху.

Проверка

Данные для проверки во время обучения, указанные как хранилище данных, таблица или массив ячеек, содержащий предикторы проверки и ответы.

Можно указать предикторы проверки и ответы, используя те же форматы, которые поддерживаются trainNetwork функция. Можно указать данные проверки как хранилище данных, таблицу или массив ячеек. {predictors,responses}, где predictors содержит предикторы проверки и responses содержит ответы проверки.

Дополнительные сведения см. в разделе images, sequences, и features входные аргументы trainNetwork функция.

Во время обучения, trainNetwork вычисляет точность проверки и потери проверки на данных проверки. Чтобы указать частоту проверки, используйте 'ValidationFrequency' аргумент пары имя-значение. Можно также использовать данные проверки для автоматического прекращения обучения, когда потеря проверки перестает уменьшаться. Чтобы включить автоматическую остановку проверки, используйте 'ValidationPatience' аргумент пары имя-значение.

Если ваша сеть имеет уровни, которые ведут себя иначе во время прогнозирования, чем во время обучения (например, уровни отсева), то точность проверки может быть выше, чем точность обучения (мини-пакет).

Данные проверки тасуются в соответствии с 'Shuffle' значение. Если 'Shuffle' значение равно 'every-epoch'затем данные проверки тасуются перед каждой сетевой проверкой.

Частота проверки сети в количестве итераций, заданная как положительное целое число.

ValidationFrequency значение - количество итераций между оценками метрик проверки.

Терпение остановки проверки обучения сети, указанное как положительное целое число или Inf.

'ValidationPatience' значение - это количество раз, когда потери в наборе проверки могут быть больше или равны ранее наименьшим потерям перед остановкой обучения сети.

Параметры решателя

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

Параметры графика обучения, определенные как структура. LearnRateScheduleSettings имеет поле Method, который определяет тип метода для корректировки скорости обучения. Возможные методы:

  • 'none' - Уровень обучения постоянен на протяжении всего обучения.

  • 'piecewise' - Уровень обучения периодически падает во время обучения.

Если Method является 'piecewise', то LearnRateScheduleSettings содержит еще два поля:

  • DropRateFactor - мультипликативный коэффициент, на который снижается уровень обучения во время обучения;

  • DropPeriod - Количество периодов между корректировками уровня обучения во время обучения

Укажите параметры для графика обучения с помощью trainingOptions.

Типы данных: struct

Коэффициент для регуляризатора L2 (распад веса), определяемый как неотрицательный скаляр.

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

Скорость затухания квадрата градиентного скользящего среднего, заданного как скаляр от 0 до 1. Дополнительные сведения о различных решателях см. в разделе Стохастический градиентный спуск.

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

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

  • true - Сбросьте статистику нормализации входного уровня и пересчитайте ее во время обучения.

  • false - Расчет статистики нормализации во время обучения, когда она пуста.

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

  • 'population' - Использовать демографическую статистику. После обучения программное обеспечение завершает статистику путем повторного прохождения данных обучения и использует полученное среднее значение и дисперсию.

  • 'moving' - аппроксимировать статистику во время обучения, используя текущую оценку, заданную шагами обновления;

    μ*=λμμ^+(1−λμ)μσ2*=λσ2σ2^​+​(1-λσ2)​σ2

    где λ * и λ 2 * обозначают обновленное среднее значение и дисперсию, соответственно, λ (и) и λ (2) обозначают среднее значение и значения спада дисперсии, соответственно, λ (и 2) обозначают среднее значение и дисперсию входного слоя, соответственно, и λ (и 2) обозначают последние значения скользящего среднего значения и значения дисперсии, соответственно. После обучения программное обеспечение использует самое последнее значение статистики скользящего среднего и дисперсии. Этот параметр поддерживает только обучение ЦП и одного графического процессора.

Отсечение градиента

Положительный порог для градиента, заданный как положительный скаляр или Inf. Когда градиент превышает значение GradientThreshold, то градиент подрезан в соответствии с GradientThresholdMethod.

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

  • 'l2norm' - Если L2 норма градиента обучаемого параметра больше GradientThreshold, затем масштабировать градиент так, чтобы L2 норма равнялась GradientThreshold.

  • 'global-l2norm' - Если глобальная норма L2 L больше GradientThreshold, затем масштабировать все градиенты на коэффициент GradientThreshold/L. Глобальная L2 норма учитывает все обучаемые параметры.

  • 'absolute-value' - если абсолютное значение отдельной частной производной в градиенте обучаемого параметра больше, чем GradientThreshold, то масштабировать частную производную, чтобы она имела величину, равную GradientThreshold и сохраняют знак частной производной.

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

Параметры последовательности

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

  • 'longest' - Последовательности прокладок в каждой мини-партии должны иметь ту же длину, что и самая длинная последовательность. Этот параметр не отбрасывает данные, хотя заполнение может вызвать шум в сети.

  • 'shortest' - Усечение последовательностей в каждой мини-партии до такой же длины, что и самая короткая последовательность. Этот параметр обеспечивает отсутствие добавления дополнений за счет отбрасывания данных.

  • Положительное целое число - для каждой мини-партии поместите последовательности в ближайшую кратную указанную длину, которая больше, чем самая длинная длина последовательности в мини-партии, а затем разбейте последовательности на меньшие последовательности указанной длины. Если происходит разделение, программа создает дополнительные мини-пакеты. Используйте эту опцию, если полные последовательности не помещаются в память. Либо попробуйте уменьшить количество последовательностей на мини-пакет, установив 'MiniBatchSize' для более низкого значения.

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

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

  • 'right' - Последовательность подушек или усечений справа. Последовательности начинаются на одном и том же этапе, и программное обеспечение усекает или добавляет дополнение к концу последовательностей.

  • 'left' - Последовательность подушек или усечений слева. Программное обеспечение усекает или добавляет дополнение к началу последовательностей, так что последовательности заканчиваются на одном и том же шаге времени.

Поскольку уровни LSTM обрабатывают данные последовательности один раз за раз, когда уровень OutputMode свойство - 'last'любое заполнение на последних временных этапах может отрицательно влиять на выход слоя. Для размещения или усечения данных последовательности слева установите 'SequencePaddingDirection' опция для 'left'.

Для сетей «последовательность-последовательность» (когда OutputMode свойство - 'sequence' для каждого уровня LSTM), любое заполнение в первых временных шагах может негативно влиять на прогнозы для более ранних временных шагов. Для добавления или усечения данных последовательности справа установите 'SequencePaddingDirection' опция для 'right'.

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

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

Параметры оборудования

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

  • 'auto' - Используйте графический процессор, если он доступен. В противном случае используйте ЦП.

  • 'cpu' - Использовать ЦП.

  • 'gpu' - Использовать графический процессор.

  • 'multi-gpu' - Использование нескольких графических процессоров на одном компьютере с использованием локального параллельного пула на основе профиля кластера по умолчанию. Если текущий параллельный пул отсутствует, программа запускает параллельный пул с размером пула, равным количеству доступных графических процессоров.

  • 'parallel' - Использовать локальный или удаленный параллельный пул на основе профиля кластера по умолчанию. Если текущий параллельный пул отсутствует, программа запускает его с использованием профиля кластера по умолчанию. Если пул имеет доступ к графическим процессорам, то только работники с уникальным графическим процессором выполняют вычисления обучения. Если в пуле нет графических процессоров, обучение проводится на всех доступных рабочих ЦП.

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

'gpu', 'multi-gpu', и 'parallel' параметры требуют Toolbox™ параллельных вычислений. Чтобы использовать графический процессор для глубокого обучения, необходимо также иметь поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Если выбрана одна из этих опций, и панель параллельных вычислений или подходящий графический процессор недоступны, программа возвращает ошибку.

Чтобы увидеть улучшение производительности при параллельном обучении, попробуйте увеличить MiniBatchSize и InitialLearnRate варианты обучения по количеству графических процессоров.

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

Укажите среду выполнения с помощью trainingOptions.

Типы данных: char | string

Разделение рабочей нагрузки для графических процессоров или процессоров, указанное как скаляр от 0 до 1, положительное целое число или числовой вектор. Это свойство действует только в том случае, если ExecutionEnvironment значение равно 'multi-gpu' или 'parallel'.

Контрольно-пропускные пункты

Путь, по которому сохраняются сети контрольных точек, указанный как символьный вектор.

Типы данных: char

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

ОбластьОписание
EpochТекущее число эпох
IterationНомер текущей итерации
TimeSinceStartВремя в секундах с начала тренировки
TrainingLossТекущая потеря мини-партии
ValidationLossПотеря данных проверки
BaseLearnRateТекущая базовая скорость обучения
TrainingAccuracy Точность текущей мини-партии (классификационные сети)
TrainingRMSERMSE в текущем мини-пакете (регрессионные сети)
ValidationAccuracyТочность данных проверки (классификационные сети)
ValidationRMSERMSE на данных проверки (регрессионные сети)
StateТекущее состояние обучения с возможным значением "start", "iteration", или "done".

Если поле не вычисляется или не релевантно для определенного вызова функций вывода, то это поле содержит пустой массив.

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

Типы данных: function_handle | cell

Примеры

свернуть все

Создайте набор опций для обучения нейронной сети с помощью оптимизатора RMSProp. Установите максимальное количество периодов для обучения равным 20 и используйте мини-пакет с 64 наблюдениями на каждой итерации. Укажите скорость обучения и скорость затухания скользящего среднего квадратичного градиента. Включите график хода обучения.

options = trainingOptions('rmsprop', ...
    'InitialLearnRate',3e-4, ...
    'SquaredGradientDecayFactor',0.99, ...
    'MaxEpochs',20, ...
    'MiniBatchSize',64, ...
    'Plots','training-progress')
options = 
  TrainingOptionsRMSProp with properties:

      SquaredGradientDecayFactor: 0.9900
                         Epsilon: 1.0000e-08
                InitialLearnRate: 3.0000e-04
               LearnRateSchedule: 'none'
             LearnRateDropFactor: 0.1000
             LearnRateDropPeriod: 10
                L2Regularization: 1.0000e-04
         GradientThresholdMethod: 'l2norm'
               GradientThreshold: Inf
                       MaxEpochs: 20
                   MiniBatchSize: 64
                         Verbose: 1
                VerboseFrequency: 50
                  ValidationData: []
             ValidationFrequency: 50
              ValidationPatience: Inf
                         Shuffle: 'once'
                  CheckpointPath: ''
            ExecutionEnvironment: 'auto'
                      WorkerLoad: []
                       OutputFcn: []
                           Plots: 'training-progress'
                  SequenceLength: 'longest'
            SequencePaddingValue: 0
        SequencePaddingDirection: 'right'
            DispatchInBackground: 0
         ResetInputNormalization: 1
    BatchNormalizationStatistics: 'population'

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