exponenta event banner

trainrp

Упругое обратное распространение

Синтаксис

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

Описание

trainrp - сетевая обучающая функция, которая обновляет значения веса и смещения в соответствии с алгоритмом упругого обратного распространения (Rprop).

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

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

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

net.trainParam.epochs1000

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

net.trainParam.show25

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

net.trainParam.showCommandLinefalse

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

net.trainParam.showWindowtrue

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

net.trainParam.goal0

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

net.trainParam.timeinf

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

net.trainParam.min_grad1e-5

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

net.trainParam.max_fail6

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

net.trainParam.lr0.01

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

net.trainParam.delt_inc1.2

Приращение к изменению веса

net.trainParam.delt_dec0.5

Уменьшение до изменения веса

net.trainParam.delta00.07

Начальное изменение веса

net.trainParam.deltamax50.0

Максимальное изменение веса

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

Можно создать стандартную сеть, использующую trainrp с feedforwardnet или cascadeforwardnet.

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

  1. Набор net.trainFcn кому 'trainrp'. Эти наборы net.trainParam кому trainrpПараметры по умолчанию.

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

В любом случае вызов train с результирующей сетью направляет сеть с trainrp.

Примеры

Вот проблема, состоящая из входов p и целевые показатели t решается с помощью сети.

p = [0 1 2 3 4 5];
t = [0 0 0 1 1 1];

Двухслойная прямая сеть с двумя скрытыми нейронами, и эта тренировочная функция создана.

Создание и тестирование сети.

net = feedforwardnet(2,'trainrp');

Здесь сеть проходит обучение и повторное тестирование.

net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.1;
net = train(net,p,t);
a = net(p)

Посмотрите help feedforwardnet и help cascadeforwardnet для других примеров.

Подробнее

свернуть все

Упругое обратное распространение

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

Целью обучающего алгоритма упругого обратного распространения (Rprop) является устранение этих вредных эффектов величин частных производных. Только знак производной может определить направление обновления веса; величина производной не влияет на обновление веса. Размер изменения веса определяется отдельным значением обновления. Значение обновления для каждого веса и смещения увеличивается на коэффициент delt_inc всякий раз, когда производная функции производительности по отношению к этому весу имеет один и тот же знак для двух последовательных итераций. Значение обновления уменьшается на коэффициент delt_dec всякий раз, когда производная по отношению к этому весу меняет знак из предыдущей итерации. Если производная равна нулю, значение обновления остается прежним. Всякий раз, когда веса колеблются, изменение веса уменьшается. Если вес продолжает изменяться в одном и том же направлении для нескольких итераций, величина изменения веса увеличивается. Полное описание алгоритма Rprop приведено в [RiBr93].

Следующий код воссоздает предыдущую сеть и обучает ее с помощью алгоритма Rprop. Параметры обучения для trainrp являются epochs, show, goal, time, min_grad, max_fail, delt_inc, delt_dec, delta0, и deltamax. Первые восемь параметров обсуждались ранее. Последние два являются начальным размером шага и максимальным размером шага соответственно. Производительность Rprop не очень чувствительна к настройкам параметров обучения. В приведенном ниже примере параметры обучения остаются на значениях по умолчанию:

p = [-1 -1 2 2;0 5 0 5];
t = [-1 -1 1 1];
net = feedforwardnet(3,'trainrp');
net = train(net,p,t);
y = net(p)

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

Алгоритмы

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

Обратное распространение используется для расчета производных производительности perf в отношении переменных веса и смещения X. Каждая переменная корректируется в соответствии со следующим:

dX = deltaX.*sign(gX);

где элементы deltaX все инициализированы в delta0, и gX - градиент. При каждой итерации элементы deltaX изменяются. Если элемент gX изменяет знак с одной итерации на следующую, затем соответствующий элемент deltaX уменьшается на delta_dec. Если элемент gX поддерживает тот же знак от одной итерации к следующей, затем соответствующий элемент deltaX увеличивается на delta_inc. См. Ридмиллер, М., и Х. Браун, «Прямой адаптивный метод для более быстрого обучения обратному распространению: алгоритм RPROP», Труды Международной конференции IEEE по нейронным Networks,1993, стр. 586-591.

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

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

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

  • Производительность минимизирована для goal.

  • Градиент производительности падает ниже min_grad.

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

Ссылки

Ридмиллер, М., и Х. Браун, «Прямой адаптивный метод для более быстрого обучения обратному распространению: алгоритм RPROP», Труды Международной конференции IEEE по нейронным Networks,1993, стр. 586-591.

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