trainrp

Устойчивая обратная связь

Описание

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

пример

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

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

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

  • net.trainParam.epochs — Максимальное количество эпох, чтобы обучаться. Значением по умолчанию является 1000.

  • net.trainParam.show — Эпохи между отображениями (NaN ни для каких отображений). Значением по умолчанию является 25.

  • net.trainParam.showCommandLine — Сгенерируйте командную строку выход. Значением по умолчанию является false.

  • net.trainParam.showWindow — Покажите учебный графический интерфейс пользователя. Значением по умолчанию является true.

  • net.trainParam.goal — Цель эффективности. Значение по умолчанию 0.

  • net.trainParam.time — Максимальное время, чтобы обучаться в секундах. Значением по умолчанию является inf.

  • net.trainParam.min_grad — Минимальный градиент эффективности. Значением по умолчанию является 1e-5.

  • net.trainParam.max_fail — Максимальные отказы валидации. Значением по умолчанию является 6.

  • net.trainParam.lr — Скорость обучения. Значением по умолчанию является 0.01.

  • net.trainParam.delt_inc — Шаг, чтобы взвесить изменение. Значением по умолчанию является 1.2.

  • net.trainParam.delt_dec — Декремент, чтобы взвесить изменение. Значением по умолчанию является 0.5.

  • net.trainParam.delta0 — Начальное изменение веса. Значением по умолчанию является 0.07.

  • net.trainParam.deltamax — Максимальное изменение веса. Значением по умолчанию является 50.0.

Примеры

свернуть все

В этом примере показано, как обучить сеть прямого распространения с a trainrp учебная функция, чтобы решить задачу с входными параметрами p и цели t.

Создайте входные параметры 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.

Входные параметры

свернуть все

Введите сеть в виде сетевого объекта. Чтобы создать сетевой объект, используйте, например, feedforwardnet или narxnet.

Выходные аргументы

свернуть все

Обучивший сеть, возвращенный как network объект.

Учебная запись (epoch и perf), возвратился как структура, поля которой зависят от сетевой учебной функции (net.NET.trainFcn). Это может включать поля, такие как:

  • Обучение, деление данных, и функции эффективности и параметры

  • Индексы деления данных для обучения, валидации и наборов тестов

  • Маски деления данных для учебной валидации и наборов тестов

  • Номер эпох (num_epochs) и лучшая эпоха (best_epoch).

  • Список учебных имен состояния (states).

  • Поля для каждого имени состояния, записывающего его значение в течение обучения

  • Эффективность лучшей сети (best_perf, best_vperf, best_tperf)

Больше о

свернуть все

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

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

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

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

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

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

Устойчивая обратная связь

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

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

Следующий код воссоздает предыдущую сеть и обучает ее с помощью алгоритма Rprop. Параметры обучения для trainrp epochsshow, goalВремя, 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 времена с прошлого раза это уменьшилось (при использовании валидации).

Ссылки

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

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

| | | | | | | | |

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