traincgp

Обратная связь метода сопряженных градиентов с обновлениями Полака-Рибиера

Синтаксис

net.trainFcn = 'traincgp'
[net,tr] = train(net,...)

Описание

traincgp является сетевой учебной функцией, которая обновляет вес и значения смещения согласно обратной связи метода сопряженных градиентов с обновлениями Полака-Рибиера.

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

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

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

net.trainParam.epochs1000

Максимальное количество эпох, чтобы обучаться

net.trainParam.show25

Эпохи между отображениями (NaN ни для каких отображений)

net.trainParam.showCommandLinefalse

Сгенерируйте командную строку вывод

net.trainParam.showWindowtrue

Покажите учебный графический интерфейс пользователя

net.trainParam.goal0

Цель производительности

net.trainParam.timeinf

Максимальное время, чтобы обучаться в секундах

net.trainParam.min_grad1e-10

Минимальный градиент производительности

net.trainParam.max_fail6

Максимальные отказы валидации

net.trainParam.searchFcn'srchcha'

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

Параметры связаны с методами поиска строки (не все используемые для всех методов):

net.trainParam.scal_tol20

Разделитесь на delta, чтобы определить допуск к линейному поиску.

net.trainParam.alpha0.001

Масштабный коэффициент, который определяет достаточное сокращение perf

net.trainParam.beta0.1

Масштабный коэффициент, который определяет достаточно большой размер шага

net.trainParam.delta0.01

Начальный размер шага на шаге местоположения интервала

net.trainParam.gama0.1

Параметр, чтобы избежать маленьких сокращений производительности, обычно устанавливайте на 0.1 (см. srch_cha),

net.trainParam.low_lim0.1

Нижний предел на изменении в размере шага

net.trainParam.up_lim0.5

Верхний предел изменения в размере шага

net.trainParam.maxstep100

Максимальная длина шага

net.trainParam.minstep1.0e-6

Минимальная длина шага

net.trainParam.bmax26

Максимальный размер шага

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

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

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

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

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

Примеры

свернуть все

Этот пример показывает, как обучить нейронную сеть с помощью функции train traincgp.

Здесь нейронная сеть обучена, чтобы предсказать содержания жира в организме.

[x, t] = bodyfat_dataset;
net = feedforwardnet(10, 'traincgp');
net = train(net, x, t);
y = net(x);

Больше о

свернуть все

Обратная связь метода сопряженных градиентов с обновлениями Полака-Рибиера

Другая версия алгоритма метода сопряженных градиентов была предложена Полаком и Рибиером. Как с алгоритмом Fletcher-надсмотрщиков, traincgf, поисковое направление в каждой итерации определяется

pk=gk+βkpk1

Для обновления Полака-Рибиера постоянный βk вычисляется

βk=Δgk1Tgkgk1Tgk1

Это - скалярное произведение предыдущего изменения в градиенте с текущим градиентом, разделенным на норму, в квадрате из предыдущего градиента. См. [FlRe64] или [HDB96] для обсуждения алгоритма метода сопряженных градиентов Полака-Рибиера.

Стандартная программа traincgp имеет производительность, подобную traincgf. Трудно предсказать, который алгоритм выполнит лучше всего на данной проблеме. Требования устройства хранения данных для Полака-Рибиера (четыре вектора) немного больше, чем для Fletcher-надсмотрщиков (три вектора).

Алгоритмы

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

Обратная связь используется, чтобы вычислить производные производительности perf относительно переменных X смещения и веса. Каждая переменная настроена согласно следующему:

X = X + a*dX;

где dX является поисковым направлением. Параметр a выбран, чтобы минимизировать производительность вдоль поискового направления. Функция поиска строки searchFcn используется, чтобы определить местоположение минимальной точки. Первое поисковое направление является отрицанием градиента производительности. В последующих итерациях поисковое направление вычисляется из нового градиента и предыдущего поискового направления согласно формуле

dX = -gX + dX_old*Z;

где gX является градиентом. Параметр Z может быть вычислен несколькими различными способами. Для изменения Полака-Рибиера метода сопряженных градиентов это вычисляется согласно

Z = ((gX - gX_old)'*gX)/norm_sqr;

где norm_sqr является квадратом нормы предыдущего градиента, и gX_old является градиентом на предыдущей итерации. Смотрите страницу 78 Шкал (Введение в Нелинейную Оптимизацию, 1985) для более детального обсуждения алгоритма.

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

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

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

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

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

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

Ссылки

Шкалы, L.E., введение в нелинейную оптимизацию, Нью-Йорк, Springer-Verlag, 1985

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

| | | | | | | | |

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