exponenta event banner

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