- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
Самоорганизующиеся сети
neWC |
Слой Кохонена WC |
Синтаксис:
net = newc(PR,s,klr,clr)
Описание:
Конкурирующий слой Кохонена относится к классу самоорганизующихся нейронных сетей, которые предназначены для решения задач кластеризации и классификации.
Функция net = newc(PR, s, klr, clr) формирует слой Кохонена и имеет следующие входные и выходные аргументы.
Входные аргументы:
PR – массив размера R2изQминимальных и максимальных значений вектора входа;
s– число нейронов;
klr– параметр настройки функцииlearnk, по умолчанию 0.01;
clr– параметр настройки функцииlearncon, по умолчанию 0.001.
Выходные аргументы:
net – объект класса network object, определяющий слой Кохонена.
Свойства:
Конкурирующий слой Кохонена использует функции взвешивания negdist, накопленияnetsumи активации compet. Веса и смещения слоя инициализируются с помощью М-функцийmidpointиinitcon. Адаптация и обучение выполняются функциямиadaptwbиtrainwb1, которые модифицируют значения веса и смещения, применяя функции настройкиlearnkиlearncon.
Примеры:
Зададим массив входа P в виде четырех двухэлементных векторов:
P = [.1 .8 .1 .9;
.2 .9 .1 .8];
Необходимо определить центры группирования (кластеризации) близких векторов. В этой задаче интуитивно ясно, что существует 2 таких центра. Поэтому сформируем слой Кохонена с двумя нейронами и определим диапазон расположения входных векторов в интервале [0 1]:
net = newc([0 1; 0 1],2);
gensim(net) % Рис.11.26
На рис. 11.26 показана структура конкурирующего слоя Кохонена.
|
|
Рис. 11.26
Выполним настройку параметров слоя, чтобы решить задачу для заданного входа:
net = train(net,P);
Центры кластеризации расположены в точках
w = net.IW{1}
w =
0.8031 0.8031
0.1536 0.1969
Построим на плоскости входных векторов точки кластеризации и сами входные векторы:
plot(P(1,:), P(2,:),'+k') % Рис.11.27
title(' Векторы входа'), xlabel('P(1,:)'), ylabel('P(2,:)')
hold on
plot(w, 'or')
Рис. 11.27
На рис. 11.27 явно выделены 2 центра кластеризации, отмеченные цифрами 1 и 2.
Моделирование сети с определением близости проверяемых точек к центрам кластеризации можно реализовать следующим образом:
P1 = [0.2:0.1:0.7;
0.2:0.1:0.7]
Y = sim(net,P1);
Yc = vec2ind(Y)
P1 =
0.2000 0.3000 0.4000 0.5000 0.6000 0.7000
0.2000 0.3000 0.4000 0.5000 0.6000 0.7000
Yc = 2 2 2 1 1 1
Сопутствующие функции: SIM, INIT, ADAPT, TRAIN, ADAPTWB, TRAINWB1.
neWSOM |
Карта Кохонена SOM |
Синтаксис:
net=newsom(PR,[d1,d2,...],tfcn,dfcn,olr,osteps,tlr,tnd)
Описание:
Карта Кохонена относится к классу самоорганизующихся многослойных нейронных сетей, которые предназначены для решения задач кластеризации и классификации.
Функция net = newsom(PR, [d1, d2, ...], tfcn, dfcn, olr, osteps, tlr, tnd) формирует многомерную карту Кохонена и имеет следующие входные и выходные аргументы.
Входные аргументы:
PR – массив размера R2изQминимальных и максимальных значений вектора входа;
di– число нейронов поi-размерности карты, по умолчанию двумерная карта с числом нейронов [5 8];
tfcn– функция топологии карты, по умолчаниюhextop;
dfcn– функция расстояния, по умолчаниюlinkdist;
olr– параметр скорости обучения на этапе размещения, по умолчанию 0.9;
osteps– число циклов обучения на этапе размещения, по умолчанию 1000;
tlr– параметр скорости обучения на этапе подстройки, по умолчанию 0.02;
tnd– размер окрестности на этапе подстройки, по умолчанию 1.
Выходные аргументы:
net – объект класса network object, определяющий многомерную самоорганизующуюся карту Кохонена.
Свойства сети:
Самоорганизующаяся карта Кохонена имеет единственный слой с функциями взвешивания negdist, накопленияnetsumи активации compet. Слой характеризуется весовой матрицей входа, но не имеет смещений. Инициализация слоя реализуется с помощью функцииmidpoint. Адаптация и обучение выполняются функциямиadaptwbиtrainwb1, которые используют функцию настройкиlearnsom. Топология карты задается функциямиhextop,gridtopиrandtop. Функциями расстояния могут быть выбраны из списка{linkdist | dist|mandist}.
Пример:
Задан случайный вектор входа, элементы которого расположены в диапазонах [0 2] и [0 1]. Построить двумерную самоорганизующуюся карту Кохонена с числом нейронов [3 5] для классификации входных векторов:
P = [rand(1,400)*2; rand(1,400)];
net = newsom([0 2; 0 1],[3 5]);
gensim(net) % Рис. 11.28
Структура карты Кохонена показана на рис. 11.28 и включает 15 функций взвешивания negdist, функции накопления netsumи активации compet.
Рис. 11.28
Построим топологию двумерной карты Кохонена (рис. 11.29):
plotsom(net.layers{1}.positions) % Рис.11.29
Рис. 11.29
Затем реализуется процедура обучения. Следует отметить, что процедура обучения длится достаточно долго; компьютер с частотой 500MГц просчитывает 25 циклов приблизительно за 90с, и строятся входные векторы с их отображениями (рис.10.30), которые формируются весами SOM:
net.trainparam.epochs = 2000;
net = train(net,P);
plot(P(1,: ),P(2,: ),’.g’,’markersize’,10)
hold on
plotsom(net.iw{1,1},net.layers{1}.distances)
Рис. 11.30
Промоделируем обученную карту Кохонена на массиве векторов входа (рис. 11.31):
a = sim(net,P);
bar(sum(a')) % Рис.11.31
Рис. 11.31
Из анализа рис. 11.31 следует, что количество входных векторов, отнесенных к определенному кластеру, колеблется от 12 до 35. Таким образом, в процессе обучения двумерная самоорганизующаяся карта Кохонена выполнила кластеризацию массива векторов входа.
Сопутствующие функции: SIM, INIT, ADAPT, TRAIN, ADAPTWB, TRAINWB1.