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];

Сеть форварда канала 2D слоя с двумя скрытыми нейронами и этой учебной функцией создается.

Создайте и протестируйте сеть.

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. См. Riedmiller, M. и Х. Брауна, “Прямой метод адаптации для более быстрой обратной связи, учащейся: алгоритм RPROP”, Продолжения Международной конференции IEEE по вопросам Нейронных сетей, 1993, стр 586–591.

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

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

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

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

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

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

Ссылки

Riedmiller, M. и Х. Браун, “Прямой метод адаптации для более быстрой обратной связи, учащейся: алгоритм RPROP”, Продолжения Международной конференции IEEE по вопросам Нейронных сетей, 1993, стр 586–591.

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

| | | | | | | | |

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