exponenta event banner

traingdm

Градиентный спуск с обратным распространением импульса

Синтаксис

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

Описание

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

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

[net,tr] = train(net,...) обучает сеть с помощью traingdm.

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

net.trainParam.epochs1000

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

net.trainParam.goal0

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

net.trainParam.lr0.01

Уровень обучения

net.trainParam.max_fail6

Максимальное количество сбоев проверки

net.trainParam.mc0.9

Постоянная импульса

net.trainParam.min_grad1e-5

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

net.trainParam.show25

Эпохи между показом прогресса

net.trainParam.showCommandLinefalse

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

net.trainParam.showWindowtrue

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

net.trainParam.timeinf

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

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

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

  1. Набор net.trainFcn кому 'traingdm'. Эти наборы net.trainParam кому traingdmПараметры по умолчанию.

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

В любом случае вызов train с результирующей сетью направляет сеть с traingdm.

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

Подробнее

свернуть все

Градиентный спуск с импульсом

В дополнение к traingd, есть три других варианта градиентного спуска.

Градиентный спуск с импульсом, реализованный traingdm, позволяет сети реагировать не только на локальный градиент, но и на последние тенденции на поверхности ошибки. Действуя как фильтр нижних частот, импульс позволяет сети игнорировать небольшие элементы поверхности ошибки. Без импульса сеть может застрять в мелком локальном минимуме. С импульсом сеть может скользить по такому минимуму. Обсуждение динамики см. на стр. 12-9 [HDB96].

Градиентный спуск с импульсом зависит от двух параметров тренировки. Параметр lr указывает скорость обучения, аналогично простому градиентному спуску. Параметр mc - постоянная импульса, определяющая величину импульса. mc устанавливается между 0 (без импульса) и значениями, близкими к 1 (много импульса). Постоянная импульса 1 приводит к сети, которая полностью нечувствительна к локальному градиенту и, следовательно, не учится должным образом.

p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
net = feedforwardnet(3,'traingdm');
net.trainParam.lr = 0.05;
net.trainParam.mc = 0.9;
net = train(net,p,t);
y = net(p)

Попробуйте демонстрацию дизайна нейронной сети nnd12mo [HDB96] для иллюстрации производительности алгоритма пакетного импульса.

Алгоритмы

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

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

dX = mc*dXprev + lr*(1-mc)*dperf/dX

где dXprev является предыдущим изменением веса или смещения.

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

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

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

  • Производительность минимизирована для goal.

  • Градиент производительности падает ниже min_grad.

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

См. также

| | |

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