- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 1. Ппп Neural Network Toolbox
- •1. Система matlab 6
- •1.1. Операционная среда matlab 6
- •Командное окно
- •Окно предыстории
- •Окно запуска
- •Окно текущего каталога
- •Окно рабочей области
- •Справочная подсистема
- •1.3. Демонстрационные примеры ппп nnt
- •2. Модель нейрона и архитектура сети
- •2.1. Модель нейрона
- •2.1.1. Простой нейрон
- •2.1.2. Функция активации
- •2.1.3. Нейрон с векторным входом
- •2.2. Архитектура нейронных сетей
- •2.2.1. Однослойные сети
- •2.2.2. Многослойные сети
- •2.2.3. Сети с прямой передачей сигнала
- •2.3. Создание, инициализация и моделирование сети Формирование архитектуры сети
- •Инициализация сети
- •Моделирование сети
- •3. Обучение нейронных сетей
- •3.1. Процедуры адаптации и обучения
- •Явление переобучения
- •Свойство обобщения
- •3.1.1. Способы адаптации и обучения
- •Адаптация нейронных сетей
- •Xlabel(''), ylabel('Выходыa(I)'),grid
- •Xlabel(''), ylabel('Весавходовw(I)'),grid
- •Xlabel(' Циклы'), ylabel('Ошибка'),grid
- •Xlabel(''), ylabel('Выходыa(I)'),grid
- •Xlabel(''), ylabel('Весавходовw(I)'),grid
- •Xlabel('Циклы'), ylabel('Ошибка'),grid
- •Xlabel(''), ylabel('Выходыa(I)'),grid
- •Xlabel(''), ylabel('Весавходовw(I)'),grid
- •Xlabel('Циклы'), ylabel('Ошибка'),grid
- •Обучение нейронных сетей
- •3.2. Методы обучения
- •3.2.1. Обучение однослойной сети
- •3.2.2. Обучение многослойной сети
- •Метод обратного распространения ошибки
- •Характеристика методов обучения
- •3.3. Алгоритмы обучения
- •3.3.1. Градиентные алгоритмы обучения Алгоритм gd
- •Алгоритм gdm
- •Алгоритм gda
- •Алгоритм Rprop
- •3.3.2. Алгоритмы метода сопряженных градиентов
- •Алгоритм cgf
- •Алгоритм cgp
- •Алгоритм cgb
- •Алгоритм scg
- •3.3.3. Квазиньютоновы алгоритмы Алгоритм bfgs
- •Алгоритм oss
- •Алгоритм lm
- •3.3.4. Алгоритмы одномерного поиска
- •Алгоритм gol
- •Алгоритм bre
- •Алгоритм hyb
- •Алгоритм cha
- •Алгоритм bac
- •3.3.5. Расширение возможностей процедур обучения
- •Переобучение
- •Метод регуляризации
- •Формирование представительной выборки
- •Предварительная обработка и восстановление данных
- •Пример процедуры обучения
- •4. Персептроны
- •4.1. Архитектура персептрона
- •4.2. Модель персептрона
- •Моделирование персептрона
- •Инициализация параметров
- •4.3. Процедуры настройки параметров
- •Правила настройки
- •Процедура адаптации
- •5. Линейные сети
- •5.1. Архитектура линейной сети
- •5.2. Создание модели линейной сети
- •5.3. Обучение линейной сети
- •Процедура настройки
- •Процедура обучения
- •5.4. Применение линейных сетей Задача классификации векторов
- •Фильтрация сигнала
- •Предсказание сигнала
- •Подавление шумов
- •Многомерные цифровые фильтры
- •6. Радиальные базисные сети
- •Модель нейрона и архитектура сети
- •Создание сети
- •Радиальная базисная сеть с нулевой ошибкой
- •Итерационная процедура формирования сети
- •Примеры радиальных базисных сетей
- •6.1. Сети grnn
- •Архитектура сети
- •Синтез сети
- •6.2. Сети pnn
- •Архитектура сети
- •Синтез сети
- •7. Сети кластеризации и классификации данных
- •7.1. Самоорганизующиеся нейронные сети
- •7.1.1. Слой Кохонена
- •Архитектура сети
- •Создание сети
- •Правило обучения слоя Кохонена
- •Правило настройки смещений
- •Обучение сети
- •7.1.2. Карта Кохонена
- •Топология карты
- •Функции для расчета расстояний
- •Архитектура сети
- •Создание сети
- •Обучение сети
- •Одномерная карта Кохонена
- •Двумерная карта Кохонена
- •Архитектура сети
- •Создание сети
- •Обучение сети Правила настройки параметров
- •Процедура обучения
- •8. Рекуррентные сети
- •8.1. Сети Элмана
- •Архитектура
- •Создание сети
- •Обучение сети
- •Проверка сети
- •8.2. Сети Хопфилда
- •Архитектура сети
- •Синтез сети
- •9. Применение нейронных сетей
- •9.1. Аппроксимация и фильтрация сигналов
- •9.1.1. Предсказание стационарного сигнала Постановка задачи
- •Синтез сети
- •Проверка сети
- •9.1.2. Слежение за нестационарным сигналом
- •Инициализация сети
- •Проверка сети
- •9.1.3. Моделирование стационарного фильтра
- •Постановка задачи
- •Синтез сети
- •Проверка сети
- •9.1.4. Моделирование нестационарного фильтра
- •Постановка задачи
- •Инициализация сети
- •Проверка сети
- •9.2. Распознавание образов
- •Постановка задачи
- •Нейронная сеть
- •Архитектура сети
- •Инициализация сети
- •Обучение
- •Обучение в отсутствие шума
- •Обучение в присутствии шума
- •Повторное обучение в отсутствие шума
- •Эффективность функционирования системы
- •9.3. Нейронные сети и системы управления
- •9.3.1. Регулятор с предсказанием
- •9.3.2. Регулятор narma-l2
- •9.3.3. Регулятор на основе эталонной модели
- •Часть2. Операторы, функции и команды
- •10. Вычислительная модель нейронной сети
- •10.1. Описание сети Описание архитектуры
- •Функции инициализации, адаптации и обучения
- •10.2. Описание элементов сети
- •Описание входов
- •Описание слоев
- •Описание выходов
- •Описание целей
- •Описание смещений
- •Описание весов входа
- •Описание весов слоя
- •Матрицы весов и векторы смещений
- •Информационные поля
- •11. Формирование моделей нейронных сетей
- •11.1. Модели сетей
- •11.1.1. Однослойные сети Персептрон
- •Линейные сети
- •11.1.2. Многослойные сети
- •Радиальные базисные сети
- •Самоорганизующиеся сети
- •Сети – классификаторы входных векторов
- •Рекуррентные сети
- •11.2. Функции активации
- •Персептрон
- •Линейные сети
- •Радиальные базисные сети
- •Самоорганизующиеся сети
- •Рекуррентные сети
- •11.3. Синаптические функции
- •Функции взвешивания и расстояний
- •Функции накопления
- •11.4. Функции инициализации
- •11.5. Функции адаптации и обучения Функции адаптации
- •Функции обучения
- •Градиентные алгоритмы обучения
- •Алгоритмы метода сопряженных градиентов
- •Квазиньютоновы алгоритмы обучения
- •11.5.1. Функции оценки качества обучения
- •11.6. Функции настройки параметров
- •11.6.1. Функции одномерного поиска
- •11.7. Масштабирование и восстановление данных
- •11.8. Вспомогательные функции
- •Утилиты вычислений
- •Операции с массивами данных
- •Графические утилиты
- •Информация о сети и ее топологии
- •11.9. Моделирование нейронных сетей и система Simulink Функции моделирования сети
- •11.9.1. Применение системы Simulink
- •Библиотеки блоков для моделирования нейронных сетей
- •Построение моделей нейронных сетей
- •Индексный указатель Команды, функции и операторы ппп Neural Network Toolbox
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
Сети – классификаторы входных векторов
neWLVQ |
Нейронная сеть LVQ |
Синтаксис:
net = newlvq(PR,S1,PC,LR,LF)
Описание:
Нейронные сети-классификаторы входных векторов, или сети LVQ,в отличие от самоорганизующихся сетей выполняют не только кластеризацию, но и классификацию входных векторов.
Функция net = newlvq(PR, s1, PC, lr, lf) формирует сеть LVQи имеет следующие входные и выходные аргументы.
Входные аргументы:
PR – массив размера R2изQминимальных и максимальных значений вектора входа;
s1– число нейронов скрытого слоя;
PC – вектор размера 1S2, указывающий распределение по долям векторов каждого класса;
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 – массив размера R2 минимальных и максимальных значений для 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 размера RQ, объединяющий 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.