traingda

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

Описание

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

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

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

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

  • 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.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)

Больше о

свернуть все

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

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

  1. Установите net.trainFcn к 'traingda'. Это устанавливает net.trainParam к traingdaпараметры по умолчанию.

  2. Установите net.trainParam свойства к требуемым значениям.

В любом случае, вызывая train с получившейся сетью обучает сеть с traingda.

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

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

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

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

Адаптивная скорость обучения требует некоторых изменений в методе обучения, используемом traingd. Во-первых, начальный сетевой выход и ошибка вычисляются. В каждую эпоху новые веса и смещения вычисляются с помощью текущей скорости обучения. Новые выходные параметры и ошибки затем вычисляются.

Как с импульсом, если новая ошибка превышает старую ошибку больше, чем предопределенное отношение, max_perf_inc (обычно 1.04), новые веса и смещения отбрасываются. Кроме того, скорость обучения уменьшена (обычно путем умножения lr_dec = 0.7). В противном случае новые веса, и т.д., сохранены. Если новая ошибка меньше старой ошибки, скорость обучения увеличена (обычно путем умножения lr_inc = 1.05).

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

Попробуйте демонстрацию Проекта Нейронной сети nnd12vl [HDB96] для рисунка эффективности переменного алгоритма скорости обучения.

Обучение обратной связи с адаптивной скоростью обучения реализовано с функциональным traingda, который называется точно так же, как traingd, за исключением дополнительных параметров обучения max_perf_inc, lr_dec, и lr_inc. Вот то, как это называется, чтобы обучить предыдущую сеть 2D слоя:

p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
net = feedforwardnet(3,'traingda');
net.trainParam.lr = 0.05;
net.trainParam.lr_inc = 1.05;
net = train(net,p,t);
y = net(p)

Алгоритмы

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

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

dX = lr*dperf/dX

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

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

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

  • Максимальная сумма time превышен.

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

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

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

Смотрите также

| | |

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