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];

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

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