exponenta event banner

traingda

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

Синтаксис

net.trainFcn = 'traingda'
[net,tr] = train(net,...)

Описание

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

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

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

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

net.trainParam.epochs1000

Максимальное количество периодов для обучения

net.trainParam.goal0

Цель производительности

net.trainParam.lr0.01

Уровень обучения

net.trainParam.lr_inc1.05

Соотношение для повышения уровня обучения

net.trainParam.lr_dec0.7

Отношение к снижению уровня обучения

net.trainParam.max_fail6

Максимальное количество сбоев проверки

net.trainParam.max_perf_inc1.04

Максимальное увеличение производительности

net.trainParam.min_grad1e-5

Минимальный градиент производительности

net.trainParam.show25

Периоды между дисплеями (NaN для без дисплеев)

net.trainParam.showCommandLinefalse

Создание выходных данных командной строки

net.trainParam.showWindowtrue

Показать графический интерфейс пользователя для обучения

net.trainParam.timeinf

Максимальное время обучения в секундах

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

Можно создать стандартную сеть, использующую 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. Вот как она вызывается для обучения предыдущей двухуровневой сети:

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