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