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

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

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

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

TRAINBR
Функция тренировки
на основе обратного распространения ошибки
с использованием Байесовской регуляризации

Синтаксис:

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

Описание:

TRAINBR - функция обучения сети, которая модифицирует значения весов и смещений в соответствии с алгоритмом оптимизации Левенберга-Маркарта. При этом минимизируется комбинация квадратов ошибок и весов, затем определяется скорректированная комбинация, которая обеспечивает улучшение обобщающей способности сети. Эта процедура называется байесовской регуляризацией.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1) Установить NET.trainFcn как 'trainbr'. Тем самым значения NET.trainParam будут значениями по умолчанию для функции TRAINBR.

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

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

Примеры.

Задача сглаживания зашумленной синусоидальной волны. Входы и эталонные значения сети:

p = [-1:.05:1];
t = sin(2*pi*p)+0.1*randn(size(p));

Создадим двухслойную однонаправленную сеть. Диапазон входных значений [-1,1]. Первый слой содержит 20 TANSIG нейронов, второй слой состоит из одного PURELIN нейрона. Для тренировки используем функцию TRAINBR. График, полученный в результате сглаживания выглядит плавным.

% Создание сети
net=newff([-1 1],[20,1],{'tansig','purelin'},'trainbr');
% Тренировка и тестирование сети
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net = train(net,p,t);
a = sim(net,p)
figure
plot(p,a,p,t,'+')

Алгоритм.

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

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

Литература по байесовской регуляризации:

  • MacKay, Neural Computation, vol. 4, no. 3, 1992, pp. 415-447.
  • Foresee and Hagan, Proceedings of the International Joint Conference on Neural Networks, June, 1997.

Параметр MEM_REDUC указывает, как использовать память и быстродействие при вычислении Якобиана jX. Если MEM_REDUC = 1, то trainbr выполняется максимально быстро, но при этом требуется много памяти. Увеличение MEM_REDUC до 2 вдвое уменьшает объем используемой памяти, но при этом снижается скорость вычислений. Дальнейшее увеличение этого параметра приводит к снижению требований к объему памяти с соответствующим снижением скорости вычислений.

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

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

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

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

4) MU превышает MU_MAX.

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

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

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

 

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

Система Orphus

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