trainbr

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

Описание

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

пример

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

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

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

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

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

  • net.trainParam.mu — Параметр корректировки Marquardt. Значение по умолчанию 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 может обучить любую сеть пока ее вес, сетевой вход, и передаточные функции имеют производные функции.

Байесова регуляризация минимизирует линейную комбинацию квадратичных невязок и весов. Это также изменяет линейную комбинацию так, чтобы в конце обучения получившейся сети имел хорошие качества обобщения. Смотрите Маккея (Нейронный Расчет, Издание 4, № 3, 1992, стр 415 - 447) и Предвидите и Хейган (Продолжения Международной Объединенной Конференции по Нейронным сетям, июнь 1997) для более детальных обсуждений Байесовой регуляризации.

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

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