Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / Потемкин В.Г. MATLAB 6.doc
Скачиваний:
5
Добавлен:
07.09.2025
Размер:
15.55 Mб
Скачать

Сети – классификаторы входных векторов

neWLVQ

Нейронная сеть LVQ

Синтаксис:

net = newlvq(PR,S1,PC,LR,LF)

Описание:

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

Функция net = newlvq(PR, s1, PC, lr, lf) формирует сеть LVQ и имеет следующие входные и выходные аргументы.

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

PR – массив размера R2 из Q минимальных и максимальных значений вектора входа;

s1 – число нейронов скрытого слоя;

PC – вектор размера 1S2, указывающий распределение по долям векторов каждого класса;

lr – параметр скорости настройки, по умолчанию 0.01;

lf – функция настройки, по умолчанию learnlv2.

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

net – объект класса network object, определяющий сеть-классификатор LVQ.

Свойства сети:

Сеть LVQ – это двухслойная сеть. Первый слой использует функции взвешивания negdist, накопления netsum и активации compet. Второй слой использует функции взвешивания dotprodt, накопления netsum и активации purelin. Слои не имеют смещений. Веса первого слоя инициализируются с помощью функции midpoint; веса второго слоя устанавливаются так, чтобы каждому нейрону на выходе соответствовал единственный нейрон скрытого слоя. Адаптация и обучение выполняются с помощью функций adaptwb и trainwb1, которые модифицируют веса первого слоя, используя заданные функции обучения. Функциями настройки могут быть М-функции learnlv1 и learnlv2.

Пример:

Векторы входа P и выходные классы Tc, представленные ниже, определяют задачу классификации, которая будет решена LVQ-сетью:

P = [–3 –2 –2 0 0 0 0 +2 +2 +3;

0 +1 –1 2 1 –1 –2 +1 –1 0];

Tc = [1 1 1 2 2 2 2 1 1 1];

Целевые классы Tc преобразуем в целевые векторы T, создадим сеть LVQ со входами P, четырьмя нейронами и долями распределения по классам [0.6 0.4]:

T = ind2vec(Tc);

net = newlvq(minmax(P),4,[.6 .4]);

gensim(net) % Рис.11.32

Структура нейронной сети LVQ показана на рис. 11.32. Выполним обучение сети:

Рис. 11.32

net = train(net,P,T);

Промоделируем сеть на векторе входа:

Y = sim(net,P);

Yc = vec2ind(Y)

Yc = 1 1 1 2 2 2 2 1 1 1

Классификация входного вектора выполнена без ошибок.

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

Рекуррентные сети

neWELM

Нейронная сеть ELM

Сеть Элмана

Синтаксис:

net = newelm(PR, [S1 S2 ... SNl], {TF1 TF2 ... TFNl}, btf, blf, pf)

Описание:

Функция newelm предназначена для создания динамических сетей Элмана, которые применяются для построения моделей динамических систем.

Функция net = newelm(PR, [S1 S2 ... SNl], {TF1 TF2 ... TFNl}, btf, blf, pf) формирует сеть Элмана и имеет следующие входные и выходные аргументы.

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

PR – массив размера R2 минимальных и максимальных значений для R векторов входа;

Si – количество нейронов в слое i;

TFi – функция активации слоя i, по умолчанию tansig;

btf – обучающая функция, реализующая метод обратного распространения, по умолчанию traingdx;

blf – функция настройки, реализующая метод обратного распространения, по умолчанию learngdm;

pf – критерий качества обучения, по умолчанию mse.

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

net – объект класса network object динамической сети Элмана.

Свойства сети:

Обучающими функциями могут быть любые функции, реализующие метод обратного распространения: trainlm, trainbfg, trainrp, traingd и др.

Функциями настройки могут быть функции, реализующие метод обратного распространения: learngd, learngdm.

Критерием качества обучения может быть любая дифференцируемая функция: mse, msereg.

При реализации сети Элмана не рекомендуется применять такие алгоритмы обучения, как trainlm или trainrp, которые работают с большим размером шага.

Пример:

Зададим вход P в виде случайной булевой последовательности из нулей и единиц; выходом сети должна быть такая булева последовательность T, элементы которой принимают значение 1 только в том случае, когда в последовательности P встретились 2 единицы подряд:

P = round(rand(1,20))

T = [0 (P(1:end–1)+P(2:end)==2)]

P = 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 0 1

T = 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0

Требуется построить сеть, которая распознает во входном сигнале 2 единицы, следующие подряд. Сначала эти последовательности представим в виде массивов ячеек:

Pseq = con2seq(P); Tseq = con2seq(T);

Создадим сеть Элмана с диапазоном входного сигнала от 0 до 1 с 10 скрытыми и одним выходным нейронами (рис. 11.33):

net = newelm([0 1],[10 1],{'tansig','logsig'});

gensim(net) % Рис.11.33

Рис. 11.33

Затем обучим сеть с допустимой средней квадратичной ошибкой 0.001 и смоделируем ее:

net.trainParam.goal = 0.001;

net.trainParam.epochs = 1000;

net = train(net,Pseq,Tseq);

Y = sim(net,Pseq)

Y1 = seq2con(Y);

E = round(T–Y1{1})

E = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Результат свидетельствует о том, что сеть справилась с поставленной задачей.

Алгоритм:

Сеть Элмана состоит из Nl слоев, использующих функции взвешивания dotprod, накопления netsum и заданные пользователем функции активации. Все слои имеют смещения. Выход последнего слоя является выходом сети. Веса и смещения инициализируются с помощью функции initnw. Адаптация реализуется с помощью функции adaptwb, которая настраивает веса с помощью заданной функции настройки.

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

neWHOP

Сеть Хопфилда HOP

Синтаксис:

net = newhop(T)

Описание:

Сети Хопфилда применяются для решения задач распознавания образов.

Функция net = newhop(T) имеет 1 входной аргумент – массив T размера RQ, объединяющий Q целевых векторов (со значениями +1 или –1), R – число элементов вектора входа.

Функция возвращает рекуррентную сеть Хопфилда в виде объекта класса network object.

Свойства:

Сеть Хопфилда имеет 1 нейронный слой с функциями взвешивания dotprod, накопления netsum и активации satlins. Слой охвачен динамической обратной связью и имеет смещения.

Пример:

Создадим сеть Хопфилда с двумя устойчивыми точками в трехмерном пространстве:

T = [–1 –1 1; 1 –1 1]';

net = newhop(T);

gensim(net) % Рис.11.34

Рис. 11.34

Проверим, что сеть устойчива в этих точках, и используем их как начальные условия для линии задержки. Если сеть устойчива, можно ожидать, что выходы Y будут те же самые.

Ai = T;

[Y,Pf,Af] = sim(net,2,[],Ai);

Y =

–1 1

–1 –1

1 1

Таким образом, вершины гиперкуба являются устойчивыми точками равновесия сети Хопфилда.

Проверим сходимость сети при произвольном входном векторе Ai:

Ai = {[–0.9; –0.8; 0.7]};

[Y,Pf,Af] = sim(net,{1 5},{},Ai);

Y{1}

ans =

–1

–1

1

Сеть Хопфилда обеспечила переход к устойчивому положению равновесия, ближайшему к заданному входу.

Алгоритм:

Сети Хопфилда разработаны для того, чтобы приводить случайные входные векторы к точкам равновесия, которые соответствуют определенным, заданным пользователем, целям. Алгоритм минимизирует число устойчивых паразитных точек равновесия [25].

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