traingd

Обратная связь градиентного спуска

Описание

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

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

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

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

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

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

  • net.trainParam.lr — Скорость обучения. Значение по умолчанию 0.01.

  • net.trainParam.max_fail — Максимальные отказы валидации. Значением по умолчанию является 6.

  • net.trainParam.min_grad — Минимальный градиент эффективности. Значением по умолчанию является 1e-5.

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

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

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

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

Входные параметры

свернуть все

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

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

свернуть все

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

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

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

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

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

  • Номер эпох (num_epochs) и лучшая эпоха (best_epoch).

  • Список учебных имен состояния (states).

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

  • Эффективность лучшей сети (best_perf, best_vperf, best_tperf)

Больше о

свернуть все

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

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

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

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

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

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

Обратная связь градиентного спуска

Пакетной функцией обучения наискорейшему спуску является traingd. Веса и смещения обновляются в направлении отрицательного градиента функции эффективности. Если вы хотите обучить сеть с помощью пакетного наискорейшего спуска, необходимо установить сеть trainFcn к traingd, и затем вызовите функциональный train. Существует только одна учебная функция, сопоставленная с данной сетью.

Существует семь параметров обучения, сопоставленных с traingd:

  • epochs

  • show

  • goal

  • time

  • min_grad

  • max_fail

  • lr

Скорость обучения lr умноженные времена отрицание градиента, чтобы определить изменения в весах и смещениях. Чем больше скорость обучения, тем больше шаг. Если скорость обучения сделана слишком большой, алгоритм становится нестабильным. Если скорость обучения установлена слишком небольшая, алгоритм занимает много времени, чтобы сходиться. Смотрите страницу 12-8 [HDB96] для обсуждения выбора скорости обучения.

Учебное состояние отображено для каждого show итерации алгоритма. (Если show установлен в NaN, затем учебное состояние никогда не отображается.) Другие параметры определяют, когда обучение останавливается. Обучение останавливается, если количество итераций превышает epochs, если функция эффективности опускается ниже goal, если величина градиента меньше mingrad, или если учебное время более длительно, чем time секунды. max_fail, то, которое сопоставлено с ранним методом остановки, обсуждено в Улучшающемся Обобщении.

Следующий код создает набор обучающих данных входных параметров p и цели t. Для пакетного обучения все входные векторы помещаются в одну матрицу.

p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];

Создайте сеть прямого распространения.

net = feedforwardnet(3,'traingd');

В этом простом примере выключите функцию, которая введена позже.

net.divideFcn = '';

На данном этапе вы можете хотеть изменить некоторые параметры обучения по умолчанию.

net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 300;
net.trainParam.goal = 1e-5;

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

Теперь вы готовы обучить сеть.

[net,tr] = train(net,p,t);

Учебный tr записи содержит информацию о прогрессе обучения.

Теперь можно симулировать обучивший сеть, чтобы получить его ответ на входные параметры в наборе обучающих данных.

a = net(p)
a =
   -1.0026   -0.9962   1.0010   0.9960

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

Алгоритмы

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

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

dX = lr * dperf/dX

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

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

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

  • Эффективность минимизирована к goal.

  • Градиент эффективности падает ниже min_grad.

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

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

| | |

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