traingdx

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

Описание

net.trainFcn = 'traingdx' устанавливает сетевую trainFcn свойство.

[trainedNet,tr] = train(net,...) обучает сеть с traingdx.

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

Обучение происходит согласно traingdx параметры обучения, показанные здесь с их значениями по умолчанию:

  • net.trainParam.epochs - Максимальное количество эпох для обучения. Значение по умолчанию является 1000.

  • net.trainParam.goal - Цель эффективности. Значение по умолчанию 0.

  • net.trainParam.lr - Скорость обучения. Значение по умолчанию является 0,01.

  • net.trainParam.lr_inc - Отношение к увеличению скорости обучения. Значение по умолчанию является 1.05.

  • net.trainParam.lr_dec - Отношение к снижению скорости обучения. Значение по умолчанию является 0,7.

  • net.trainParam.max_fail - Максимальные отказы в валидации. Значение по умолчанию 6.

  • net.trainParam.max_perf_inc - Максимальное увеличение эффективности. Значение по умолчанию 1.04.

  • net.trainParam.mc - Постоянная импульса. Значение по умолчанию 0.9.

  • net.trainParam.min_grad - Минимальный градиент эффективности. Значение по умолчанию 1e-5.

  • net.trainParam.show - Эпохи между отображениями (NaN при отсутствии отображений). Значение по умолчанию является 25.

  • net.trainParam.showCommandLine - Сгенерируйте выход в командной строке. Значение по умолчанию false.

  • net.trainParam.showWindow - Показать обучающий графический интерфейс пользователя. Значение по умолчанию true.

  • net.trainParam.time - Максимальное время обучения в секундах. Значение по умолчанию inf.

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

свернуть все

Входная сеть, заданная как сетевой объект. Чтобы создать сетевой объект, используйте для примера, feedforwardnet или narxnet.

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

свернуть все

Обученная сеть, возвращается как network объект.

Обучающая запись (epoch и perf), возвращается как структура, поля которой зависят от функции сетевого обучения (net.NET.trainFcn). Он может включать такие поля, как:

  • Обучение, деление данных и эффективность функции и параметры

  • Индексы деления данных для наборов для обучения, валидации и тестирования

  • Маски деления данных для валидации обучения и тестирования наборов

  • Количество эпох (num_epochs) и лучшая эпоха (best_epoch).

  • Список имен состояний обучения (states).

  • Поля для каждого имени состояния, регистрирующие его значение на протяжении всего обучения

  • Выступления лучшей сети (best_perf, best_vperf, best_tperf)

Подробнее о

свернуть все

Использование сети

Можно создать стандартную сеть, которая использует traingdx с feedforwardnet или cascadeforwardnet. Чтобы подготовить пользовательскую сеть для обучения с traingdx,

  1. Задайте net.trainFcn на 'traingdx'. Это устанавливает net.trainParam на traingdxпараметры по умолчанию.

  2. Задайте net.trainParam свойства к желаемым значениям.

В любом случае вызов train с полученной сетью обучает сеть с traingdx.

См. help feedforwardnet и help cascadeforwardnet для примеров.

Алгоритмы

Функция traingdx объединяет адаптивную скорость обучения с обучением импульсом. Он вызывается так же, как и traingda, за исключением того, что он имеет коэффициент импульса mc как дополнительный параметр обучения.

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

Backpropagation используется для вычисления производных от perf эффективности относительно переменных веса и смещения X. Каждая переменная настраивается в соответствии с градиентным спуском с импульсом,

dX = mc*dXprev + lr*mc*dperf/dX

где dXprev - это предыдущее изменение веса или смещения.

Для каждой эпохи, если эффективность уменьшается к цели, то скорость обучения увеличивается на множитель lr_inc. Если эффективность увеличивается больше, чем коэффициент max_perf_inc, скорость обучения корректируется фактором lr_dec и изменение, которое увеличило эффективность, не производится.

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

  • Максимальное количество epochs (повторения) достигается.

  • Максимальное количество time превышено.

  • Эффективность минимизирована до goal.

  • Градиент эффективности падает ниже min_grad.

  • Эффективность валидации увеличилась более чем max_fail раз с момента последнего уменьшения (при использовании валидации).

См. также

| | |

Представлено до R2006a