exponenta event banner

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 может обучать любую сеть, если ее функции веса, чистого ввода и переноса имеют производные функции.

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