MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем
 

Математика\Neural Network Toolbox Перейти на страницу содержания раздела

Список функций Neural NetworkToolbox: Функции тренировки

  В оглавление \ К следующему разделу \ К предыдущему разделу

TRAINBFG
Функция тренировки сети,
использующая BFGS квази-Ньютононовский метод

Синтаксис:

[net,tr,Ac,El]=trainbfg(net,Pd,Tl,Ai,Q,TS,VV,TV)
info=trainbfg(code)

Описание:

TRAINBFG - функция тренировки сети, которая модернизирует значения весов и смещений в соответствии с BFGS квази-Ньютоновским методом.

TRAINBFG(NET,Pd,Tl,Ai,Q,TS,VV,TV)

Входные параметры:

  • NET – нейронная сеть;
  • Pd - векторы входных задержек;
  • Tl - векторы эталонов слоя;
  • Ai - начальные условия входных задержек;
  • Q - размер пакета;
  • TS - временные шаги;
  • VV - пустая матрица или структура контрольных векторов;
  • TV - пустая матрица или структура тестовых векторов.

Выходные параметры:

  • NET – тренированная сеть;
  • TR - запись, включающая параметры тренировки;
  • TR.epoch – количество эпох тренировки;
  • TR.perf – параметр тренировки;
  • TR.vperf – параметр контрольной проверки;
  • TR.tperf – параметр тестирования;
  • Ac - суммарные выходы слоя для последней эпохи;
  • El - ошибки слоя для последней эпохи.

Тренировка реализуется в соответствии с параметрами функции обучения TRAINBFG. Эти параметры вместе с их значениями по умолчанию перечислены ниже:

  • net.trainParam.epochs – (100) - Максимальное количество эпох тренировки;
  • net.trainParam.show – (25) - Количество эпох между графиками;
  • net.trainParam.goal – (0) - Условие остановки по отклонению от эталона;
  • net.trainParam.time – (inf) - Максимальное время тренировки в секундах;
  • net.trainParam.min_grad – (1e-6) - Минимальный градиент;
  • net.trainParam.max_fail – (5) - Максимальное количество ошибок на контрольном массиве.

Параметры связанные с методами линейного поиска (для разных методов используются разное количество параметров):

  • net.trainParam.scal_tol – (20) - Деление на дельту для определения допуска при линейном поиске;
  • net.trainParam.alpha – (0.001) - Масштабный коэффициент, который определяет достаточное уменьшение функционирования;
  • net.trainParam.beta – (0.1) - Масштабный коэффициент, который определяет достаточно большое приращение;
  • net.trainParam.delta – (0.01) - Величина начального шага;
  • net.trainParam.gama – (0.1) - Параметр предназначенный для устранения малых уменьшений функционирования;
  • net.trainParam.low_lim – (0.1) - Нижний предел изменения размера шага;
  • net.trainParam.up_lim – (0.5) - Верхний предел изменения размера шага;
  • net.trainParam.maxstep – (100) - Максимальная длительность шага;
  • net.trainParam.minstep – (1.0e-6) - Минимальная длительность шага;
  • net.trainParam.bmax – (26) - Максимальный размер шага;

Размерности переменных:

  • Pd - NoxNixTS массив ячеек, каждый элемент которого P{i,j,ts} - матрица DijxQ;
  • Tl - NlxTS массив ячеек, каждый элемент которого P{i,ts} - матрица VixQ;
  • Ai - NlxLD массив ячеек, каждый элемент которого Ai{i,k} - матрица SixQ;

где

  • Ni = net.numInputs,
  • Nl = net.numLayers,
  • LD = net.numLayerDelays,
  • Ri = net.inputs{i}.size,
  • Si = net.layers{i}.size,
  • Vi = net.targets{i}.size,
  • Dij = Ri * length(net.inputWeights{i,j}.delays).

Если VV не [], то представляет собой структуру контрольных векторов:

  • VV.PD – Задержки контрольных входов;
  • VV.Tl – Контрольные эталоны слоя;
  • VV.Ai – Входные начальные условия контрольного массива;
  • VV.Q - Размер пакета контрольных массивов;
  • VV.TS – Временные шаги контрольного массива.

Контрольные векторы используются для досрочной остановки тренировки если показатель функционирования сети на контрольном массиве векторов перестанет улучшаться или будет оставаться на одном уровне для MAX_FAIL эпох подряд.

Если TV не [],то представляет собой структуру тестовых векторов:

  • TV.PD - Задержки тестовых входов;
  • TV.Tl - Тестовые эталоны слоя;
  • TV.Ai - Входные начальные условия тестового массива;
  • TV.Q - Размер пакета тестовых массивов;
  • TV.TS - Временные шаги тестового массива.

Эти векторы используются для проверки обобщающей способности тренированной сети.

TRAINBFG(CODE) возвращает полезную информацию для каждой из строк CODE:

  • 'pnames' - Имена параметров тренировки;
  • 'pdefaults' – Параметры тренировки по умолчанию.

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

Стандартную сеть, которая использует TRAINBFG можно создать с помощью функций NEWFF, NEWCF или  NEWELM.

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

1) Установить NET.trainFcn как 'trainbfg'. Тем самым NET.trainParam будет по умолчанию TRAINBFG.

2) Установить требуемые значения для свойств NET.trainParam.

Вызов TRAIN с готовой сетью обеспечит тренировку сети с помощью TRAINBFG.

Примеры.

Заданы входы P и эталоны T. Создать сеть для решения этой задачи.

P = [0 1 2 3 4 5];
T = [0 0 0 1 1 1];

Создадим двухслойную однонаправленную сеть. Диапазон входных значений [0,10]. Первый слой содержит два TANSIG нейрона, второй слой состоит из одного LOGSIG нейрона. Для тренировки используем функцию TRAINBFG.

% Создание и тестирование сети
net = newff([0 5],[2 1],{'tansig','logsig'},'trainbfg');
a = sim(net,P)
% Тренировка и повторное тестирование сети
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.1;
net = train(net,P,T);
a = sim(net,P)

Алгоритм.

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

Для вычисления производных эффективности функционирования PERF относительно весовых переменных X используется алгоритм обратного распространения. Каждая переменная модифицируется согласно уравнению:

X = X + a*dX;

где dX направление поиска. Параметр a выбирается таким образом, чтобы минимизировать эффективность функционирования вдоль направления поиска. Функция линейного поиска searchFcn используется чтобы локализовать точку минимума. Первое направление поиска – обратный градиент функционирования. По окончании итерации направление поиска вычисляется в соответствии со следующей формулой:

dX = -H\gX;

где gX градиент а H аппроксимирующая Hessian матрица (гессиан).

Тренировка останавливается, если выполняется одно из следующих условий:

1) Достигнуто максимальное значение количества эпох “EPOCHS".

2) Превышено значение максимального времени тренировки “TIME".

3) Эффективность функционирования достигнет значения “GOAL".

4) Градиент эффективности функционирования уменьшится ниже “MINGRAD".

5) Контрольное значение функционирования увеличилось более чем “MAX_FAIL” раз подряд после после того, как оно в последний раз уменьшилось (при использовании контрольного массива).

  В оглавление \ К следующему разделу \ К предыдущему разделу

 

Поиск по сайту:

Система Orphus

Яндекс.Метрика