traingdm

Градиентный спуск с обратной связью импульса

Синтаксис

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

Описание

traingdm сетевая учебная функция, которая обновляет вес и значения смещения согласно градиентному спуску с импульсом.

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

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

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

net.trainParam.epochs1000

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

net.trainParam.goal0

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

net.trainParam.lr0.01

Темп обучения

net.trainParam.max_fail6

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

net.trainParam.mc0.9

Постоянный импульс

net.trainParam.min_grad1e-5

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

net.trainParam.show25

Эпохи между показом прогресса

net.trainParam.showCommandLinefalse

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

net.trainParam.showWindowtrue

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

net.trainParam.timeinf

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

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

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

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

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

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

Смотрите help feedforwardnet и help cascadeforwardnet для примеров.

Больше о

свернуть все

Градиентный спуск с импульсом

В дополнение к traingd, существует три других изменения градиентного спуска.

Градиентный спуск с импульсом, реализованным traingdm, позволяет сети не только отвечать на локальный градиент, но также и к недавним трендам на ошибочной поверхности. Действуя как фильтр lowpass, импульс позволяет сети игнорировать маленькие функции на ошибочной поверхности. Без импульса сеть может застрять в мелком локальном минимуме. С импульсом сеть может скользить через такой минимум. Смотрите страницу 12-9 [HDB96] для обсуждения импульса.

Градиентный спуск с импульсом зависит от двух учебных параметров. Параметр lr указывает на темп обучения, похожий на простой градиентный спуск. Параметр mc импульс, постоянный, который задает объем импульса. mc установлен между 0 (никакой импульс) и значения близко к 1 (большой импульс). Импульс, постоянный из 1 результата в сети, которая абсолютно нечувствительна к локальному градиенту и, поэтому, не учится правильно.

p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
net = feedforwardnet(3,'traingdm');
net.trainParam.lr = 0.05;
net.trainParam.mc = 0.9;
net = train(net,p,t);
y = net(p)

Попробуйте демонстрацию Проекта Нейронной сети nnd12mo [HDB96] для рисунка производительности пакетного алгоритма импульса.

Алгоритмы

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

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

dX = mc*dXprev + lr*(1-mc)*dperf/dX

где dXprev предыдущее изменение в весе или смещении.

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

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

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

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

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

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

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

| | |

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