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