trainbr

Байесовская регуляризация обратного распространения

Описание

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 - Максимальное значение для му. Значение по умолчанию 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, № 3, 1992, pp. 415-447) и Foresee and Hagan (Proceedings of the International Joint Conference on Neural Networks, June, 1997).

Эта байесовская регуляризация происходит в рамках алгоритма Левенберга-Марквардта. Backpropagation используется для вычисления якобианской 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] MacKay, David J. C. «Bayesian interpolation». Нейронные расчеты. Том 4, № 3, 1992, стр. 415-447.

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

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