exponenta event banner

trainbr

Байесовская регуляризация backpropagation

Описание

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

пример

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

trainbr - сетевая обучающая функция, которая обновляет значения веса и смещения в соответствии с оптимизацией Левенберга-Марквардта. Он минимизирует комбинацию квадратичных ошибок и весов, а затем определяет правильную комбинацию так, чтобы создать сеть, которая хорошо обобщается. Процесс называется байесовской регуляризацией.

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

  • net.trainParam.epochs - Максимальное количество периодов для обучения. Значение по умолчанию - 1000.

  • net.trainParam.goal - Цель производительности. Значение по умолчанию - 0.

  • net.trainParam.mu - Параметр регулировки Марквардта. Значение по умолчанию - 0,005.

  • net.trainParam.mu_dec - Коэффициент уменьшения для mu. Значение по умолчанию - 0,1.

  • net.trainParam.mu_inc - Коэффициент увеличения для mu. Значение по умолчанию - 10.

  • net.trainParam.mu_max - Максимальное значение для mu. Значение по умолчанию: 1e10.

  • net.trainParam.max_fail - Максимальное количество сбоев проверки. Значение по умолчанию: inf.

  • net.trainParam.min_grad - Минимальный градиент производительности. Значение по умолчанию: 1e-7.

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

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

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

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

Остановки проверки отключены по умолчанию (max_fail = inf), чтобы обучение могло продолжаться до тех пор, пока не будет найдено оптимальное сочетание ошибок и весов. Тем не менее, некоторая минимизация веса/смещения все еще может быть достигнута при более коротком времени обучения, если проверка включена настройкой max_fail до 6 или какого-либо другого строго положительного значения.

Примеры

свернуть все

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

p = [-1:.05:1];
t = sin(2*pi*p)+0.1*randn(size(p));

Сеть прямой связи создается со скрытым слоем из 2 нейронов.

net = feedforwardnet(2,'trainbr');

Здесь сеть обучается и тестируется.

net = train(net,p,t);
a = net(p)

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

свернуть все

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

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

свернуть все

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

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

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

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

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

  • Число эпох (num_epochs) и лучшая эпоха (best_epoch).

  • Список названий обучающих состояний (states).

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

  • Выступления лучшей сети (best_perf, best_vperf, best_tperf)

Ограничения

Эта функция использует якобиан для вычислений, который предполагает, что производительность является средним значением или суммой квадратичных ошибок. Поэтому сети, обученные этой функции, должны использовать либо mse или sse функциональная функция.

Подробнее

свернуть все

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

Можно создать стандартную сеть, использующую trainbr с feedforwardnet или cascadeforwardnet. Подготовка пользовательской сети для обучения trainbr,

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

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

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

Алгоритмы

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

Байесовская регуляризация минимизирует линейную комбинацию квадратичных ошибок и весов. Он также модифицирует линейную комбинацию так, что в конце тренировки результирующая сеть обладает хорошими обобщающими качествами. Для получения более подробной информации о байесовской регуляризации см. MacKay (Neural Computation, Vol. 4, No. 3, 1992, pp. 415-447) и Forecee and Hagan (Proceedings of the International Joint Conference on Neural Networks, June, 1997).

Эта байесовская регуляризация происходит в рамках алгоритма Левенберга - Марквардта. Обратное распространение используется для вычисления якобиана jX эффективности perf в отношении переменных веса и смещения X. Каждая переменная корректируется в соответствии с Левенбергом-Марквардтом,

jj = jX * jX
je = jX * E
dX = -(jj+I*mu) \ je

где E все ошибки и I - единичная матрица.

Адаптивное значение mu увеличивается на mu_inc до тех пор, пока изменение, показанное выше, не приведет к снижению значения производительности. Затем выполняется изменение сети, и mu уменьшается на mu_dec.

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

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

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

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

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

  • mu превышает mu_max.

Ссылки

[1] Маккей, Дэвид Дж. С. «Байесовская интерполяция». Нейронные вычисления. т. 4, № 3, 1992, стр. 415-447.

[2] Предвидите, Ф. Дэн и Мартин Т. Хаган. «Приближение Гаусса - Ньютона к байесовскому обучению». Материалы Международной совместной конференции по нейронным сетям, июнь 1997 года.

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