Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
857
Добавлен:
07.03.2016
Размер:
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.