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

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

Алгоритмы

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

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

dX = lr * dperf/dX

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

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

  • Максимальное количество time превышено.

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

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

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

См. также

| | |

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