Сделай Сам Свою Работу на 5

Функции адаптации и обучения

Функции адаптации

Метод адаптации. В качестве метода адаптации сетей в ППП NNT применяется функция adapt, которая позволяет установить функции адаптации сети и настройки ее параметров, присваивая свойствам net.adaptFcn и net.adaptParam требуемые значения.

 

ADAPT Адаптация параметров сети

Синтаксис:

[net,Y,E,Pf,Af] = adapt(net,P,T,Pi,Ai)

Описание:

Функция [net, Y, E, Pf, Af] = adapt(net, P, T, Pi, Ai) является методом для объектов класса network object, который реализует режим адаптации нейронной сети. Эта функция характеризуется следующими входными и выходными аргументами.

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

net – имя нейронной сети;

P – массив входов;

T – вектор целей, по умолчанию нулевой вектор;

Pi – начальные условия на линиях задержки входов, по умолчанию нулевой вектор;

Ai – начальные условия на линиях задержки слоев, по умолчанию нулевой вектор.

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

net – структура объекта network object после адаптации;

Y – массив выходов;

E – массив ошибок;

Pf – начальные условия на линиях задержки входов после адаптации;

Af – начальные условия на линиях задержки слоев после адаптации.

Заметим, что входной аргумент T используется только при наличии целевых выходов. Аргументы Pi и Pf используются только в случае динамических сетей, имеющих линии задержки на входах или в слоях.

Входные аргументы P и T могут иметь 2 формата: формат cell array и double array. Формат cell array наиболее прост для понимания и соответствует последовательному представлению данных.

Последовательное представление данных. Каждую строку массива ячеек можно рассматривать как временную последовательность, и тогда описание многомерной сети может быть выполнено следующим образом:

P – массив ячеек размера Ni´TS, каждый элемент которого P{i, ts} – числовой массив размера Ri´Q;

T – массив ячеек размера Nt´TS, каждый элемент которого P{i, ts} – числовой массив размера Vi´Q;

Pi –массив ячеек размера Ni´ID, каждый элемент которого Pi{i, k} – числовой массив размера Ri´Q;

Ai – массив ячеек размера Nl´LD, каждый элемент которого Ai{i, k} – числовой массив размера Si´Q;

Y – массив ячеек размера No´TS, каждый элемент которого Y{i, ts} – числовой массив размера Ui´Q;

Pf – массив ячеек размера Ni´ID, каждый элемент которого Pf{i, k} – числовой массив размера Ri´Q;

Af – массив ячеек размера Nl´LD, каждый элемент которого Af{i, k} – числовой массив размера Si´Q.

Параметры описания массивов ячеек и их связь с параметрами сети показаны в следующей таблице.

Параметр описания Параметр сети Назначение
Ni net.numInputs Количество векторов входа
Nl net.numLayers Количество слоев
No net.numOutputs Количество выходов
Nt net.numTargets Количество целевых выходов
ID net.numInputDelays Максимальное значение задержки на входе
TS   Число шагов по времени
Q   Количество реализаций для фиксированного момента времени
LD net.numLayerDelays Максимальные значения задержек для слоев
Ri net.inputs{i}.size Количество элементов i-го вектора входа
Si net.layers{i}.size Количество нейронов i-го слоя
Vi net.targets{i}.size Количество элементов i-го вектора цели
Ui net.outputs{i}.size Количество элементов i-го вектора выхода

 

Столбцы массивов начальных условий Pi, Pf, Ai, Af упорядочены следующим образом:

Pi{i, k} – значение начального условия для линии задержки i-го входа в момент времени ts = k – ID;

Pf{i, k} – значение начального условия для линии задержки i-го входа в момент времени ts = TS + k – ID;

Ai{i, k} – значение начального условия для линии задержки i-го слоя в момент времени ts = k – LD;

Af{i, k} – значение начального условия для линии задержки i-го слоя в момент времени ts = TS + k – LD.

Групповое представление данных можно использовать только при адаптации статических сетей (TS = 1). При этом следует помнить, что при переходе от формата последовательного представления данных cell array к формату группового представления double array массив ячеек, содержащий, например, Ni числовых массивов размера Ri´Q, преобразуется в единственный числовой массив размера ´Q.

Следующая таблица поясняет связь этих форм представления.

 

  Формат
Аргумент Cell array Double array
  Size(P) Size(P{I,1}) Size(P)
  P   Ni´1   Ri´Q
  T   Nt´1   Vi´Q
  Pi   Ni´ID   Ri´Q
  Ai   Nl´LD   Si´Q
  Y   No´1   Ui´Q
  Pf   Ni´ID   Ri´Q
  Af   Nl´LD   Si´Q

Алгоритм:

Метод adapt вызывает функцию адаптации, заданную свойством net.adaptFcn со значениями параметров адаптации, заданными свойством net.adaptParam. Заданную входную последовательность длиной TS циклов сеть обрабатывает следующим способом: на каждом шаге адаптации сети представляется 1 вектор последовательности и обновляются веса и смещения. Таким образом, при проходе одной последовательности параметры сети обновляются TS раз.

Сопутствующие функции: SIM, INIT, TRAIN.

Переопределяемые методы:

network\sim

network\init

network\train

 

ADAPTWB Функция установки режима адаптации

Синтаксис:

[net,Ac,El] = adaptwb(net,Pd,Tl,Ai,Q,TS)

info = adaptwb(code)

Описание:

Функция [net, Ac, El] = adaptwb(net, Pd, Tl, Ai, Q, TS) устанавливает режим адаптации, при котором веса и смещения каждого слоя могут быть настроены с использованием собственной функции настройки. Функция adaptwb имеет следующие входные и выходные аргументы.

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

net – исходная нейронная сеть;

Pd – вектор максимальных задержек по слоям;

Tl – вектор целей для слоя;

Ai – начальные условия на линиях задержки;

Q – количество реализаций для фиксированного момента времени;

TS – число шагов по времени.

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

net – структура объекта network object после адаптации;

Ac – массив выходов слоя;

El – массив ошибок для слоя.

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

Pd – массив ячеек размера ID´Ni´TS, каждый элемент которого Pd{i, j, ts} – числовой массив размера Zij´Q;

Tl – массив ячеек размера Nl´TS, каждый элемент которого Tl{i, ts} – числовой массив размера Vi´Q, возможно пустой [];

Ai – массив ячеек размера Nl´LD, каждый элемент которого Ai{i, k} – числовой массив размера Si´Q;

Ac – массив ячеек размера Nl´(LD+TS), каждый элемент которого Ac{i, k} – числовой массив размера Si´Q;

El – массив ячеек размера Nl´TS, каждый элемент которого El{i, k} – числовой массив размера Vi´Q, возможно пустой [].

Параметры описания массивов ячеек и их связь с параметрами сети представлены
в следующей таблице.

 

Параметр описания Параметр сети Назначение
Ni net.numInputs Количество векторов входа
Nl net.numLayers Количество слоев
No net.numOutputs Количество выходов
Nt net.numTargets Количество целевых выходов
ID net.numInputDelays Максимальное значение задержки на входе
LD net.numLayerDelays Максимальные значения задержек для слоев
Ri net.inputs{i}.size Количество элементов i-го вектора входа
Si net.layers{i}.size Количество нейронов i-го слоя
Vi net.targets{i}.size Количество элементов i-го вектора цели
TS   Число шагов по времени
Q   Количество реализаций для фиксированного момента времени
Zij   Произведение длины вектора входа слоя i на максимальное значение задержки от слоя i к слою j: Ri * length(net.inputWeights{i, j}.delays)

 

Функция адаптации adaptwb имеет параметр net.adaptParam.passes, который определяет количество проходов обучающей последовательности в процессе адаптации, по умолчанию 1.

Функция info = adaptwb(code) возвращает информацию о параметрах адаптации, соответствующую следующим значениям аргумента code:

'pnames' – имена параметров адаптации;

'pdefaults' – значения параметров адаптации по умолчанию.

Применение функции:

Функция адаптации adaptwb используется при создании сетей с помощью методов newp, newlin, а также при формировании сетей с атрибутами, определяемыми пользователем.

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

· установить свойство сети net.adaptFcn равным 'adaptwb'. Это автоматически установит свойство net.adaptParam равным значению по умолчанию;

· установить значения свойств net.layerWeights{i, j}.learnFcn, net.biases{i}.learnFcn
соответствующими выбранным функциям настройки.

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

· выполнить инициализацию сети;

· присвоить значения параметрам адаптации, т. е. свойствам net.adaptParam;

· применить функцию adapt.

Алгоритм:

Веса и смещения слоя изменяются в соответствии с заданной функцией настройки
на каждом шаге адаптации.

Сопутствующие функции: NEWP, NEWLIN, TRAIN.

В состав 12-го выпуска программных продуктов фирмы MathWorks включена новая обучающая функция trains, которая реализует адаптивное обучение с последовательным представлением входов и предназначена для того, чтобы в дальнейшем заменить функцию адаптации adaptwb, которая отнесена к категории устаревших (obsolete). Это означает, что при использовании метода adapt теперь следует устанавливать свойство сети net.adaptFcn равным 'trains'. Если же используется метод train, то следует установить свойство сети net.trainFcn равным 'trains'. Фактически это означает, что процедуры адаптации выводятся из употребления и заменяются процедурами обучения. Однако для сохранения преемственности с предшествующими версиями ППП NNT допустимо использовать
и метод адаптации.

 

trains Адаптивное обучение с последовательным представлением входов

Синтаксис:

[net,TR,Ac,El] = trains(net,Pd,Tl,Ai,Q,TS,VV,TV)

info = trains(code)

Описание:

Функция trains не вызывается непосредственно. К ней обращаются методы adapt
и train, когда свойства net.adaptFcn или net.trainFcn соответствуют значению 'trains'. Функция trains настраивает веса и смещения на каждом шаге адаптивного обучения. При этом реализуется последовательное представление входов.

Функция [net, TR, Ac, El] = trains(net Pd, Tl, Ai, Q, TS, VV, TV) имеет следующие входные и выходные аргументы.

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

net – исходная нейронная сеть;

Pd – вектор максимальных задержек по слоям;

Tl – вектор целей для слоя;

Ai – начальные условия на линиях задержки;

Q – количество реализаций для фиксированного момента времени;

TS – число шагов по времени;

VV – структура, описывающая контрольное множество;

TV – структура, описывающая тестовое множество.

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

net – структура объекта network object после адаптации;

TR – характеристики процедуры обучения:

TR.timesteps – длина последней выборки;

TR.perf – значения функции качества на последнем цикле обучения;

Ac – массив выходов слоя для последнего цикла;

El – массив ошибок для слоя для последнего цикла.

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

Pd – массив ячеек размера ID´Ni´TS, каждый элемент которого Pd{i, j, ts} – числовой массив размера Zij´Q;

Tl – массив ячеек размера Nl´TS, каждый элемент которого Tl{i, ts} – числовой массив размера Vi´Q, возможно пустой [];

Ai – массив ячеек размера Nl´LD, каждый элемент которого Ai{i, k} – числовой массив размера Si´Q;

Ac – массив ячеек размера Nl´(LD+TS), каждый элемент которого Ac{i, k} – числовой массив размера Si´Q;

El – массив ячеек размера Nl´TS, каждый элемент которого El{i, k} – числовой массив размера Vi´Q, возможно пустой [].

Параметры описания массивов ячеек и их связь с параметрами сети представлены
в следующей таблице.

 

Параметр описания Параметр сети Назначение
Ni net.numInputs Количество векторов входа
Nl net.numLayers Количество слоев
No net.numOutputs Количество выходов
Nt net.numTargets Количество целевых выходов
ID net.numInputDelays Максимальное значение задержки на входе
LD net.numLayerDelays Максимальные значения задержек для слоев
Ri net.inputs{i}.size Количество элементов i-го вектора входа
Si net.layers{i}.size Количество нейронов i-го слоя
Vi net.targets{i}.size Количество элементов i-го вектора цели
TS   Число шагов по времени
Q   Количество реализаций для фиксированного момента времени
Zij   Произведение длины вектора входа слоя i на максимальное значение задержки от слоя i к слою j: Ri * length(net.inputWeights{i, j}.delays)

 

Функция адаптивного обучения trains имеет параметр net.trainParam.passes, который определяет количество проходов обучающей последовательности в процессе адаптации, по умолчанию 1.

Функция trains не использует для оценки представительности выборки контрольного и тестового подмножеств, поэтому входные аргументы VV и TV игнорируются.

Функция info = trains(code) возвращает информацию о параметрах адаптивного обучения, соответствующую следующим значениям аргумента code:

'pnames' – имена параметров адаптивного обучения;

'pdefaults' – значения параметров адаптивного обучения, принимаемые по умолчанию.

Применение функции:

Чтобы сформировать нейронную сеть, используя функцию адаптивного обучения trains, следует:

· установить свойство net.adaptFcn равным 'trains'. Это автоматически установит свойство net.adaptParam равным значению по умолчанию;

· установить значения свойств net.layerWeights{i, j}.learnFcn, net.biases{i}.learnFcn
соответствующими выбранным функциям настройки.

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

· установить желаемые значения параметров настройки весов и смещений;

· вызвать функцию adapt.

Алгоритм:

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

Пример:

Создать нейронную сеть на основе персептрона с вектором входа из двух элементов со значениями из диапазона [–2 2] и выполнить адаптивное обучение, используя функцию trains.

Формирование персептрона:

net = newp([–2 2;–2 2],1);

Формирование векторов входа и цели:

P = {[2;2] [1;–2] [–2;2] [–1;1]};

T = {[0] [1] [0] [1]};

Адаптивное обучение с использованием трех циклов:

net.adaptFcn = 'trains';

net.adaptParam.passes = 3;

[net,a,e]=adapt(net,P,T);

а

а = 0 1 0 1

Выход сети после адаптивного обучения полностью совпадает с вектором целей.

Сформировать линейную динaмическую нейронную сеть с одним выходом, линией задержки на входе [0 1], диапазоном изменения элементов входа [–1 1] и адаптивно обучить ее за 80 проходов с параметром скорости обучения 0.01.

Формирование сети:

net = newlin([–1 1],1,[0 1],0.01);

Формирование векторов входа и цели:

P1 = {0 –1 1 1 0 –1 1 0 0 1};

T1 = {0 –1 0 2 1 –1 0 1 0 1};

Адаптивное обучение:

net.trainFcn='trains';

net.trainParam.passes = 80;

[net,TR]=train(net,P1,T1);

Выполним моделирование сети при заданном входе:

Y = sim(net,P1); Y = [Y{:}]

Y = 0.0201 –0.9411 0.0282 1.9344 0.9732

–0.9411 0.0282 0.9732 0.0201 0.9813

Результат моделирования близок к вектору целей. При этом среднеквадратичная ошибка составляет

E = mse(Y–[T1{:}])

E = 0.0015

Сопутствующие функции: NEWP, NEWLIN, TRAIN, TRAINB, TRAINC, TRAINR.

Функции обучения

Метод обучения. В качестве метода обучения сетей в ППП NNT версии 4 применяется функция train, которая позволяет установить процедуры обучения сети и настройки ее параметров, присваивая свойствам net.trainFcn и net.trainParam требуемые значения.

 

train Обучение нейронной сети

Синтаксис:

[net, TR] = train(net,P,T,Pi,Ai)

[net, TR] = train(net,P,T,Pi,Ai,VV,TV)

Описание:

Функция [net, TR] = train(net, P, T, Pi, Ai) является методом для объектов класса network object, который реализует режим обучения нейронной сети. Эта функция характеризуется следующими входными и выходными аргументами.

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

net – имя нейронной сети;

P – массив входов;

T – вектор целей, по умолчанию нулевой вектор;

Pi – начальные условия на линиях задержки входов, по умолчанию нулевой вектор;

Ai – начальные условия на линиях задержки слоев, по умолчанию нулевой вектор.

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

net – структура объекта network object после обучения;

TR – характеристики процедуры обучения:

TR.timesteps – длина последней выборки;

TR.perf – значения функции качества на последнем цикле обучения.

Заметим, что входной аргумент T используется только при наличии целевых выходов. Аргументы Pi и Pf используются только в случае динамических сетей, имеющих линии задержки на входах или в слоях.

Входные аргументы P и T могут иметь 2 формата: cell array и double array. Формат cell array наиболее прост для понимания и соответствует последовательному представлению данных.

Последовательное представление данных. Каждую строку массива ячеек можно рассматривать как временную последовательность, и тогда описание многомерной сети может быть представлено следующим образом:

P – массив ячеек размера Ni´TS, каждый элемент которого P{i, ts} – числовой массив размера Ri´Q;

T – массив ячеек размера Nt´TS, каждый элемент которого T{i, ts} – числовой массив размера Vi´Q;

Pi – массив ячеек размера Ni´ID, каждый элемент которого Pi{i, k} – числовой массив размера Ri´Q;

Ai – массив ячеек размера Nl´LD, каждый элемент которого Ai{i, k} – числовой массив размера Si´Q;

Y – массив ячеек размера No´TS, каждый элемент которого Y{i, ts} – числовой массив размера Ui´Q;

Pf – массив ячеек размера Ni´ID, каждый элемент которого Pf{i, k} – числовой массив размера Ri´Q;

Af – массив ячеек размера Nl´LD, каждый элемент которого Af{i, k} – числовой массив размера Si´Q.

Параметры описания массивов ячеек и их связь с параметрами сети представлены
в следующей таблице.

 

Параметр описания Параметр сети Назначение
Ni net.numInputs Количество векторов входа
Nl net.numLayers Количество слоев
No net.numOutputs Количество выходов
Nt net.numTargets Количество целевых выходов
ID net.numInputDelays Максимальное значение задержки на входе
TS   Число шагов по времени
Q   Количество реализаций для фиксированного момента времени
LD net.numLayerDelays Максимальные значения задержек для слоев
Ri net.inputs{i}.size Количество элементов i-го вектора входа
Si net.layers{i}.size Количество нейронов i-го слоя
Vi net.targets{i}.size Количество элементов i-го вектора цели
Ui net.outputs{i}.size Количество элементов i-го вектора выхода

 

Столбцы массивов начальных условий Pi, Pf, Ai, Af упорядочены в соответствии со следующими условиями:

Pi{i, k} – значение начального условия для линии задержки i-го входа в момент времени ts = k – ID;

Pf{i, k} – значение начального условия для линии задержки i-го входа в момент времени ts = TS + k – ID;

Ai{i, k} – значение начального условия для линии задержки i-го слоя в момент времени ts = k – LD;

Af{i, k} – значение начального условия для линии задержки i-го слоя в момент времени ts = TS + k – LD.

Групповое представление данных можно использовать только при обучении статических сетей (TS = 1). При этом следует помнить, что при переходе от формата последовательного представления данных cell array к формату группового представления double array массив ячеек, содержащий, например, Ni числовых массивов размера Ri´Q, преобразуется
в единственный числовой массив размера ´Q.

Следующая таблица поясняет связь этих форм представления.

 

  Формат
Аргумент Cell array Double array
  Size(P) Size(P{I,1}) Size(P)
  P   Ni´1   Ri´Q
  T   Nt´1   Vi´Q
  Pi   Ni´ID   Ri´Q
  Ai   Nl´LD   Si´Q

 

Функция [net, TR] = train(net, P, T, Pi, Ai, VV, TV) позволяет использовать в процессе обучения контрольные и тестовые подмножества для оценки представительности используемых обучающих выборок. Эти подмножества описываются массивами структур со следующими полями:

VV.P, TV.P – контрольное и тестовое подмножества векторов входов;

VV.T, TV.T – контрольное и тестовое подмножества векторов целей;

VV.Pi, TV.Pi – начальные значения задержек на входе сети для контрольного и тестового подмножеств, по умолчанию нулевые;

VV.Ai, TV.Ai – начальные значения задержек на слоях для контрольного и тестового подмножеств, по умолчанию нулевые.

Алгоритм:

Метод train вызывает функцию обучения, заданную свойством net.trainFcn со значениями параметров обучения, заданными свойством net.trainParam. Обычно цикл обучения определяется как предъявление сети всех векторов входа. Затем выполняется настройка параметров сети. Обучение продолжается до тех пор, пока не будет выполнено заданное число циклов обучения, не будет достигнуто допустимое значение критерия качества обучения или выполнено любое другое условие остановки для выбранной функции обучения.

Сопутствующие функции: sim, init, adapt.

Представление входных данных. Для задания способа представления входных данных
в ППП NNT версии 4 включены функции trainb, trainc, trainr и trains. Эти функции должны быть заданы как значения свойства net.trainFcn. Для каждой из этих функций требуется задать желаемую функцию настройки параметров, присваивая соответствующие значения свойствам net.inputWeights{i, j}.learnFcn, net.layerWeights{i, j}.learnFcn, net.biases{i}.learnFcn.

 

trainB Групповое обучение

1traiСинтаксис:

[net,TR,Ac,El] = trainb(net,Pd,Tl,Ai,Q,TS,VV,TV)

info = trainb(code)

Описание:

Функция trainb не вызывается непосредственно. К ней обращается метод train, когда свойство net.trainFcn соответствует значению 'trainb'. Функция trainb настраивает веса
и смещения при каждом предъявлении сети входной последовательности.

Функция [net, TR, Ac, El] = trainb(net Pd, Tl, Ai, Q, TS, VV, TV) имеет следующие входные и выходные аргументы.

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

net – исходная нейронная сеть;

Pd – вектор максимальных задержек по слоям;

Tl – вектор целей для слоя;

Ai – начальные условия на линиях задержки;

Q – количество реализаций для фиксированного момента времени;

TS – число шагов по времени;

VV – структура, описывающая контрольное множество;

TV – структура, описывающая тестовое множество.

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

net – структура объекта network object после адаптации;

TR – характеристики процедуры обучения:

TR.epoch – вектор, определяющий циклы обучения;

TR.perf – значения функции качества по циклам обучения;

TR.vperf – значения контрольной функции по циклам обучения;

TR.tperf – значения тестовой функции по циклам обучения;

Ac – массив выходов слоя для последнего цикла;

El – массив ошибок слоя для последнего цикла.

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

Pd – массив ячеек размера ID´Ni´TS, каждый элемент которого Pd{i, j, ts} – числовой массив размера Zij´Q;

Tl – массив ячеек размера Nl´TS, каждый элемент которого Tl{i, ts} – числовой массив размера Vi´Q, возможно пустой [];

Ai – массив ячеек размера Nl´LD, каждый элемент которого Ai{i, k} – числовой массив размера Si´Q;

Ac – массив ячеек размера Nl´(LD+TS), каждый элемент которого Ac{i, k} – числовой массив размера Si´Q;

El – массив ячеек размера Nl´TS, каждый элемент которого El{i, k} – числовой массив размера Vi´Q, возможно пустой [].

Параметры описания массивов ячеек и их связь с параметрами сети представлены
в следующей таблице.

Параметр описания Параметр сети Назначение
Ni net.numInputs Количество векторов входа
Nl net.numLayers Количество слоев
Nt net.numTargets Количество целевых выходов
ID net.numInputDelays Максимальное значение задержки на входе
LD net.numLayerDelays Максимальные значения задержек для слоев
Ri net.inputs{i}.size Количество элементов i-го вектора входа
Si net.layers{i}.size Количество нейронов i-го слоя
Vi net.targets{i}.size Количество элементов i-го вектора цели
TS   Число шагов по времени
Q   Количество реализаций для фиксированного момента времени
Zij   Произведение длины вектора входа слоя i на мак­си­мальное значение задержки от слоя i к слою j: Ri * length(net.inputWeights{i, j}.delays)

 

Если входные аргументы VV или TV не пустые ([ ]), то они должны быть массивами структур:

VV.PD, TV.PD – контрольное и тестовое подмножества векторов входов после линии задержки, по умолчанию нулевые;

VV.Tl, TV.Tl – контрольное и тестовое подмножества векторов целей слоя;

VV.Ai, TV.Ai – контрольное и тестовое подмножества начальных условий на входе;

VV.Q, TV.Q – число выборок контрольного и тестового подмножеств;

VV.TS, TV.TS – длина выборок контрольного и тестового подмножеств.

Контрольные и тестовые подмножества используются для предотвращения явления переобучения.

Процедура обучения прекращается при достижении следующих значений параметров функции trainb:

 

Параметр Назначение
net.trainParam.epochs Максимальное число циклов обучения, по умолчанию 100
net.trainParam.goal Предельное значение показателя качества обучения, по умолчанию 0
net.trainParam.max_fail Максимально допустимый уровень превышения ошибки контроль­ного подмножества по сравнению с обучающим, по умолчанию 5
net.trainParam.show Интервал вывода данных, по умолчанию 25 циклов, отмена вывода – NaN
net.trainParam.time Максимальное время обучения в секундах, по умолчанию Inf

 

Функция info = trainb(code) возвращает информацию о параметрах группового обучения, соответствующую следующим значениям аргумента code:

'pnames' – имена параметров группового обучения;

'pdefaults' – значения параметров группового обучения, принимаемые по умолчанию.

Применение функции:

Чтобы сформировать нейронную сеть, используя функцию обучения trainb, следует:

· установить свойство net.trainFcn равным 'trainb'. Это автоматически установит свойство net.trainParam равным значению по умолчанию;

· установить значения свойств net.inputWeights{i, j}.learnFcn, net.layerWeights{i, j}.learnFcn, net.biases{i}.learnFcn соответствующими выбранным функциям настройки.

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

· установить желаемые значения параметров настройки весов и смещений;

· установить желаемые значения свойств net.trainParam;

· вызвать функцию train.

Алгоритм:

Элементы матриц весов и векторов смещения изменяются в соответствии с заданной функцией настройки на каждом цикле обучения.

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

· достигнуто максимальное число циклов обучения;

· значение функции качества стало меньше предельного;

· превышено максимальное время, отпущенное на обучение;

· ошибка контрольного подмножества превысила ошибку обучающего более чем
в max_fail раз.

Пример:

Сформировать динaмическую линейную нейронную сеть с одним выходом, линией задержки на входе [0 1], диапазоном изменения элементов входа [–1 1] и адаптивно обучить ее за 200 циклов с параметром скорости обучения 0.01.

Формирование сети:

net = newlin([–1 1],1,[0 1],0.01);

Формирование векторов входа и цели:

P1 = {0 –1 1 1 0 –1 1 0 0 1};

T1 = {0 –1 0 2 1 –1 0 1 0 1};

Групповое обучение:

net.trainFcn='trainb';

net.trainParam.epochs = 200;

[net,TR]=train(net,P1,T1); % Рис.11.42

На рис. 11.42 представлена зависимость показателя качества в течение 200 циклов обучения.

Рис. 11.42

Выполним моделирование сети при заданном входе:

Y = sim(net,P1); Y = [Y{:}]

Y = 0.0002 –0.9994 0.0003 1.9993 0.9997

–0.9994 0.0003 0.9997 0.0002 0.9998

Результат моделирования близок к вектору целей. При этом среднеквадратичная ошибка составляет

E = mse(Y–[T1{:}])

E = 1.5137e–007

Сопутствующие функции: NEWP, NEWLIN, TRAIN.

 

trainc Обучение нейронной сети c циклическим представлением входа

Синтаксис:

[net,TR,Ac,El] = trainc(net,Pd,Tl,Ai,Q,TS,VV,TV)

info = trainc(code)

Описание:

Функция trainc не вызывается непосредственно. К ней обращается метод train, когда свойство net.trainFcn соответствует значению 'trainc'. Функция trainc настраивает веса и смещения при каждом предъявлении сети входной последовательности в циклическом порядке.

Функция [net, TR, Ac, El] = trainc(net Pd, Tl, Ai, Q, TS, VV, TV) имеет следующие входные и выходные аргументы.

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

net – исходная нейронная сеть;

Pd – вектор максимальных задержек по слоям;

Tl – вектор целей для слоя;

Ai – начальные условия на линиях задержки;

Q – количество реализаций для фиксированного момента времени;

TS – число шагов по времени;

VV – структура, описывающая контрольное множество;

TV – структура, описывающая тестовое множество.

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

net – структура объекта network object после адаптации;

TR – характеристики процедуры обучения:

TR.epoch – вектор, определяющий циклы обучения;

TR.perf – значения функции качества по циклам обучения;

Ac – массив выходов слоя для последнего цикла;

El – массив ошибок слоя для последнего цикла.

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

Pd – массив ячеек размера ID´Ni´TS, каждый элемент которого Pd{i, j, ts} – числовой массив размера Zij´Q;

Tl – массив ячеек размера Nl´TS, каждый элемент которого Tl{i, ts} – числовой массив размера Vi´Q, возможно пустой [];

Ai – массив ячеек размера Nl´LD, каждый элемент которого Ai{i, k} – числовой массив размера Si´Q;

Ac – массив ячеек размера Nl´(LD+TS), каждый элемент которого Ac{i, k} – числовой массив размера Si´Q;

El – массив ячеек размера Nl´TS, каждый элемент которого El{i, k} – числовой массив размера Vi´Q, возможно пустой [].

Параметры описания массивов ячеек и их связь с параметрами сети представлены
в следующей таблице.

 

Параметр описания Параметр сети Назначение
Ni net.numInputs Количество векторов входа
Nl net.numLayers Количество слоев
Nt net.numTargets Количество целевых выходов
ID net.numInputDelays Максимальное значение задержки на входе
LD net.numLayerDelays Максимальные значения задержек для слоев
Ri net.inputs{i}.size Количество элементов i-го вектора входа
Si net.layers{i}.size Количество нейронов i-го слоя
Vi net.targets{i}.size Количество элементов i-го вектора цели
TS   Число шагов по времени
Q   Количество реализаций для фиксированного момента времени
Zij   Произведение длины вектора входа слоя i на максимальное значение задержки от слоя i к слою j: Ri * length(net.inputWeights{i, j}.delays)

 

Функция trainc не выполняет проверки обучающей последовательности на представительность, поэтому входные аргументы VV и TV не используются.

Процедура обучения прекращается при достижении следующих значений параметров функции trainc:

Параметр Назначение
net.trainParam.epochs Максимальное число циклов обучения, по умолчанию 100
net.trainParam.goal Предельное значение показателя качества обучения, по умолчанию 0
net.trainParam.show Интервал вывода данных, по умолчанию 25 циклов, отмена вывода – NaN
net.trainParam.time Максимальное время обучения в секундах, по умолчанию Inf

 

Функция info = trainc(code) возвращает информацию о параметрах обучения, соответствующую следующим значениям аргумента code:

'pnames' – имена параметров процедуры обучения с циклическим представлением входа;

'pdefaults' – значения параметров процедуры обучения с циклическим представлением входа, принимаемые по умолчанию.

Применение функции:

Чтобы сформировать нейронную сеть, используя функцию обучения trainc, следует:

· установить свойство net.trainFcn равным 'trainc'. Это автоматически установит свойство net.trainParam равным значению по умолчанию;

· установить значения свойств net.inputWeights{i, j}.learnFcn, net.layerWeights{i, j}.learnFcn, net.biases{i}.learnFcn соответствующими выбранным функциям настройки.

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

· установить желаемые значения параметров настройки весов и смещений;

· установить желаемые значения свойств net.trainParam;

· вызвать функцию train.

Алгоритм:

Элементы матриц весов и векторов смещения изменяются в соответствии с заданной функцией настройки на каждом цикле обучения.

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

· достигнуто максимальное число циклов обучения;

· значение функции качества стало меньше предельного;

· превышено максимальное время, отпущенное на обучение.

Пример:

Сформировать нейронную сеть на основе персептрона с одним выходом и вектором входа из двух элементов, принимающих значения в диапазоне [–2 2].

Формирование сети:

net = newp([–2 2; –2 2],1);

Формирование векторов входа и цели:

P = [ 2 1 –2 –1;

2 –2 2 1];

T = [ 0 1 0 1];

Обучение с циклическим представлением входа:

net.trainFcn='trainc';

[net,TR]=train(net,P,T); % Рис.11.43

На рис. 11.43 представлена зависимость показателя качества обучения от количества циклов обучения. Нетрудно убедиться, что абсолютная точность достигается на третьем цикле обучения.

Рис. 11.43

Выполним моделирование сети при заданном входе:

Y = sim(net, P)

Y = 0 1 0 1

Полученный результат полностью совпадает с заданием.

Найдем значения весов и смещения:

net.IW{1,1}, net.b{1}

ans = –2 –3

ans = 1

Сопутствующие функции: NEWP, NEWLIN, TRAIN.

 

trainr Обучение нейронной сети в режиме случайного представления входа

Синтаксис:

[net,TR,Ac,El] = trainr(net,Pd,Tl,Ai,Q,TS,VV,TV)

info = trainr(code)

Описание:

Функция trainr не вызывается непосредственно. К ней обращается метод train, когда свойство net.trainFcn соответствует значению 'trainr'. Функция trainr настраивает веса
и сме



©2015- 2017 stydopedia.ru Все материалы защищены законодательством РФ.