- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
Одномерная карта Кохонена
Рассмотрим 100 двухэлементных входных векторов единичной длины, распределенных равномерно в пределах от 0 до 90°:
angles = 0:0.5*pi/99:0.5*pi;
P = [sin(angles); cos(angles)];
plot(P(1,1:10:end), P(2,1:10:end),'*b'), hold on
График входных векторов приведен на рис. 7.13, а, и на нем символом * отмечено положение каждого 10-го вектора.
а |
б |
Рис. 7.13
Сформируем самоорганизующуюся карту Кохонена в виде одномерного слоя из 10 нейронов и выполним обучение в течение 2000 циклов:
net = newsom([0 1;0 1], [10]);
net.trainParam.epochs = 2000;
net.trainParam.show = 100;
[net, tr] = train(net,P);
plotsom(net.IW{1,1},net.layers{1}.distances) % Рис.7.13,а
figure(2)
a = sim(net,P);
bar(sum(a')) % Рис.7.13,б
Весовые коэффициенты нейронов, определяющих центры кластеров, отмечены на рис. 7.13, ацифрами. На рис. 7.13,бпоказано распределение обучающих векторов по кластерам. Как и ожидалось, они распределены практически равномерно с разбросом от 8 до 12 векторов в кластере.
Таким образом, сеть подготовлена к кластеризации входных векторов. Определим, к какому кластеру будет отнесен вектор [1; 0]:
a = sim(net,[1;0])
a = (10,1) 1
Как и следовало ожидать, он отнесен к кластеру с номером 10.
Двумерная карта Кохонена
Этот пример демонстрирует обучение двумерной карты Кохонена. Сначала создадим обучающий набор случайных двумерных векторов, элементы которых распределены по равномерному закону в интервале [–1 1]:
P = rands(2,1000);
plot(P(1,:),P(2,:),'+') % Рис.7.14
Рис. 7.14
Для кластеризации векторов входа создадим самоорганизующуюся карту Кохонена размера 56 с 30 нейронами, размещенными на гексагональной сетке:
net = newsom([–1 1; –1 1],[5,6]);
net.trainParam.epochs = 1000;
net.trainParam.show = 100;
net = train(net,P);
plotsom(net.IW{1,1},net.layers{1}.distances)
Результирующая карта после этапа размещения показана на рис. 7.15, а. Продолжим обучение и зафиксируем карту после 1000 шагов этапа подстройки (рис. 7.15,б), а затем после 4000 шагов (рис. 7.15,в). Нетрудно убедиться, что нейроны карты весьма равномерно покрывают область векторов входа.
а |
б |
в |
Рис. 7.15
Определим принадлежность нового вектора к одному из кластеров карты Кохонена и построим соответствующую вершину вектора на рис. 7.15,в:
a = sim(net,[0.5;0.3])
a = (19,1) 1
hold on, plot(0.5,0.3,'*k') % Рис.7.15,в
Нетрудно убедиться, что вектор отнесен к 19-му кластеру.
Промоделируем обученную карту Кохонена, используя массив векторов входа:
a = sim(net,P);
bar(sum(a')) % Рис.7.16
Из анализа рис. 7.16 следует, что количество векторов входной последовательности, отнесенных к определенному кластеру, колеблется от 13 до 50.
Рис. 7.16
Таким образом, в процессе обучения двумерная самоорганизующаяся карта Кохонена выполнила кластеризацию массива векторов входа. Следует отметить, что на этапе размещения было выполнено лишь 20 % от общего числа шагов обучения, т. е. 80 % общего времени обучения связано с тонкой подстройкой весовых векторов. Фактически на этом этапе выполняется в определенной степени классификация входных векторов.
Слой нейронов карты Кохонена можно представлять в виде гибкой сетки, которая натянута на пространство входных векторов. В процессе обучения карты, в отличие от обучения слоя Кохонена, участвуют соседи нейрона-победителя, и, таким образом, топологическая карта выглядит более упорядоченной, чем области кластеризации слоя Кохонена.
Читатель может продолжить изучение самоорганизующихся сетей, обратившись к демонстрационным программам demosm1иdemosm2.
7.2. LVQ-сети
Ниже рассматриваются сети для классификации входных векторов, или LVQ (Learning Vector Quantization)-сети. Как правило, они выполняют и кластеризацию и классификацию векторов входа. Эти сети являются развитием самоорганизующихся сетей Кохонена [23].
По команде help lvq можно получить следующую информацию об М-функциях, входящих в состав ППП Neural Network Toolbox и относящихся к построению LVQ-сетей:
Learning Vector Quantization |
Сети для классификации векторов |
New networks |
Формирование сети |
newlvq |
Создание сети для классификации входных векторов |
Using networks |
Работа с сетью |
sim init adapt train |
Моделирование Инициализация Адаптация Обучение |
Weight functions |
Операции с весовой функцией |
negdist dotprod |
Функция отрицательного расстояния Скалярное произведение |
Net input functions |
Операции над входами |
netsum |
Суммирование |
Transfer functions |
Функции активации |
compet purelin |
Конкурирующая Линейная |
Performance functions |
Функции погрешности обучения |
mse |
Среднеквадратичная ошибка обучения |
Initialization functions |
Функции инициализации сети |
initlay initwb midpoint |
Послойная инициализация Инициализация весов и смещений Инициализация весов по правилу средней точки |
Learning functions |
Функции настройки параметров |
learnlv1 learnlv2 |
Функция настройки lv1 Функция настройки lv2 |
Adapt functions |
Функции адаптации |
adapt |
Адаптация весов и смещений |
Training functions |
Функции обучения |
trainr |
Повекторное обучение весов и смещений |
Demonstrations |
Демонстрационные примеры |
demolvq1 |
Пример классификации векторов |