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

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

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

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

TRAINCGP
Тренировка по методу
связанных градиентов Полака-Рибира (Polak-Ribiere)

Синтаксис:

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

Описание:

TRAINCGP - функция обучения сети, которая модифицирует веса и смещения в соответствии с методом обратного распространения на основе связанных градиентов Полака-Рибира (Polak-Ribiere)

TRAINCGP(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 - ошибки слоя для последней эпохи.

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

  • 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.searchFcn - ('srchcha') – имя используемой процедуры линейного поиска.

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

  • 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 - Временные шаги тестового массива.

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

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

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

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

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

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

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

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

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

Примеры.

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

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

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

% Создаем и проверяем сеть
net = newff([0 5],[2 1],{'tansig','logsig'},'traincgp');
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)

Алгоритм.

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

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

X = X + a*dX;

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

dX = -gX + dX_old*Z;

где gX градиент.

Параметр Z может быть вычислен несколькими путями. Для метода Полака-Ривира Z вычисляется по формуле:

Z=((gX-gX_old)'*gX)/norm_sqr;

где norm_sqr нормированный квадрат предыдущего градиента, а gX_old – градиент , полученный при предыдущей итерации.

Более детально с алгоритмом можно ознакомиться в "Scales, Introduction to Non-Linear Optimization 1985, p. 78".

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

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

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

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

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

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

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

 

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

Система Orphus

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