Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
857
Добавлен:
07.03.2016
Размер:
15.55 Mб
Скачать

11.9. Моделирование нейронных сетей и система Simulink Функции моделирования сети

SIM

Моделирование нейронной сети

Синтаксис:

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

[Y,Pf,Af,E,perf] = sim(net,{Q TS},Pi,Ai,T)

[Y,Pf,Af,E,perf] = sim(net,Q,Pi,Ai,T)

Описание:

Функция [Y, Pf, Af E, perf] = sim(net, P, Pi, Ai, T) выполняет моделирование нейронной сети и имеет следующие входные и выходные аргументы.

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

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

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

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

Ai –начальные условия на ЛЗ слоев, по умолчанию нулевой вектор;

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

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

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

Pf – состояния на ЛЗ входов после моделирования;

Af – состояния на ЛЗ слоев после моделирования;

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

perf – значение функционала качества.

Заметим, что аргументы Pi, Ai, Pf и Af являются необязательными и применяются в случае динамических сетей с ЛЗ.

Входные аргументы 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). При этом следует помнить, что при переходе от формата последовательного представления данныхcellarrayк формату группового представленияdoublearrayмассив ячеек, содержащий, например,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

Функция [Y,Pf,Af,E,perf] =sim(net, {QTS},Pi,Ai,T) применяется для моделирования динамических сетей без входов при последовательном представлении данных.

Функция [Y,Pf,Af,E,perf] =sim(net,Q,Pi,Ai,T) применяется для моделирования динамических сетей без входов при групповом представлении данных.

Пример:

Создадим нейронную сеть персептрона с одним слоем и двухэлементным входом с диапазоном значений [0 1] и одним нейроном:

net = newp([0 1;0 1],1);

Теперь можно промоделировать персептрон, подавая различные последовательности векторов входа: 1 вектор с двумя элементами, группа из двух векторов с тремя элементами, после­дова­тельность из трех векторов, что соответствует различным формам представления данных:

p1 = [.2; .9]; a1 = sim(net,p1)

p2 = [.2 .5 .1 ;.9 .3 .7]; a2 = sim(net,p2)

p3 = {[.2; .9] [.5; .3] [.1; .7]}; a3 = sim(net,p3)

a1 = 1

a2 = 1 1 1

a3 = [1] [1] [1]

В данном случае в качестве результата выводятся только выходы нейрона.

Создадим динамическую однослойную линейную сеть с двумя нейронами, трехэлементным входом с диапазоном значений [0 2] и ЛЗ на входе [0 1]:

net = newlin([0 2;0 2;0 2],2,[0 1]);

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

p1 = {[2; 0.5; 1] [1; 1.2; 0.1]};

[y1,pf] = sim(net,p1)

y1 = [21 double] [21 double]

pf = [31 double]

Затем этот слой моделируется еще для трех векторов, используя состояния на элементах задержки как новые начальные условия:

p2 = {[0.5; 0.6; 1.8] [1.3; 1.6; 1.1] [0.2; 0.1; 0]};

[y2,pf] = sim(net,p2,pf)

y2 = [21 double] [21 double] [21 double]

pf = [31 double]

Создадим двухслойную сеть Элмана с одноэлементным входом с диапазоном значений [0 1], имеющую 3 нейрона с функцией активации tansig в слое 1 и 2 нейрона с функцией активации purelin в слое 2. Сеть Элмана имеет ЛЗ [0 1] при переходе от слоя 1 к слою 2:

net = newelm([0 1],[3 2],{'tansig','purelin'});

Сеть моделируется для трехэлементного вектора входа, используя заданные по умолчанию начальные условия на ЛЗ:

p1 = {0.2 0.7 0.1};

[y1,pf,af,e,perf] = sim(net,p1)

y1 = [21 double] [21 double] [21 double]

pf = Empty cell array: 1–by–0

af =

[31 double]

[21 double]

e = [21 double] [21 double] [21 double]

perf = 0.8153

[e{:}]

ans =

0.4779 –0.5393 1.0238

–1.0069 –1.3680 –0.6627

Выполним еще 1 шаг моделирования, но теперь для четырехэлементного вектора входа, используя состояния на элементах задержки как новые начальные условия:

p2 = {0.1 0.9 0.8 0.4};

[y1,pf,af,e,perf] = sim(net,p2,pf,af)

y2 = [21 double] [21 double] [21 double] [21 double]

pf = Empty cell array: 1–by–0

af =

[31 double]

[21 double]

e = [21 double] [21 double] [21 double] [21 double]

perf = 0.8560

[e{:}]

ans =

–0.3919 –0.3637 –0.2766 0.2490

–1.2888 –1.3479 –1.3269 –1.0886

Cправкa:

help network/sim

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