traingd

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

Синтаксис

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

Описание

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

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

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

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

net.trainParam.epochs1000

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

net.trainParam.goal0

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

net.trainParam.showCommandLinefalse

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

net.trainParam.showWindowtrue

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

net.trainParam.lr0.01

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

net.trainParam.max_fail6

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

net.trainParam.min_grad1e-5

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

net.trainParam.show25

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

net.trainParam.timeinf

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

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

Можно создать стандартную сеть, которая использует 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];

Создайте сеть feedforward.

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