- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
Архитектура сети
Архитектура модифицированной сети Хопфилда представлена на рис. 8.5.
Рис. 8.5
Вход pустанавливает значения начальных условий. В сети используется линейная функция активации с насыщениемsatlins, которая описывается следующим образом:
(8.3)
Эта сеть может быть промоделирована с одним или большим количеством векторов входа, которые задаются как начальные условия. После того как начальные условия заданы, сеть генерирует выход, который по обратной связи подается на вход. Этот процесс повторяется много раз, пока выход не установится в положение равновесия. Можно надеяться, что каждый вектор выхода в конечном счете сойдется к одной из точек равновесия, наиболее близкой к входному сигналу.
Рассмотрим следующий пример. Предположим, что требуется разработать сеть с двумя устойчивыми точками в вершинах трехмерного куба:
T = [–1 –1 1; 1 –1 1]'
T =
–1 1
–1 –1
1 1
Выполним синтез сети:
net = newhop(T);
gensim(net)
Структура сети представлена на рис. 8.6.
a |
б |
в |
Рис. 8.6
Читателю следует обратить внимание, что на схеме рис.8.6, а вход и выход слоя совпадают; на рис.8.6, б показаны используемые в рекуррентном слое элементы. Обратимся к информации о структуре слоя:
net.layers{1}
ans =
dimensions: 3
distanceFcn: 'dist'
distances: [33 double]
initFcn: 'initwb'
netInputFcn: 'netsum'
positions: [0 1 2]
size: 3
topologyFcn: 'hextop'
transferFcn: 'satlins'
userdata: [11 struct]
Из этого списка следует, что в слое используется функция инициализации initwb, функция суммирования входов netsum и функция активации satlins.
На рис. 8.6, в показан блок, описывающий матрицу весов, которая определяет переходную матрицу динамической модели рекуррентного слоя.
Динамическая модель рекуррентного слоя модифицированной сети Хопфилда описывается следующим образом:
. (8.4)
При внимательном анализе приведенного соотношения можно действительно убедиться, что матрица весов LW11равносильна переходной матрице динамической системы, а вектор смещенийb1– вектору передачи единичного входа. Необходимо сформировать эти элементы, если заданы точки равновесия системыtв вершинах гиперкуба.
Синтез сети
Метод проектирования модифицированных сетей Хопфилда описан в работе [25], на основе этого метода разработан алгоритм синтеза, который реализован в ППП NTв виде подфункцииsolvehop2(t)М-функцииnewhop.
Если задано множество целевых точек равновесия, представленных матрицей T, то функцияnewhopвозвращает матрицу весов и вектор смещений для рекуррентного слоя сети Хопфилда. При этом гарантируется, что точки устойчивого равновесия будут соответствовать целевым векторам, но могут появиться и так называемые паразитные точки. В процессе синтеза сети число таких нежелательных точек сводится к минимуму.
Пусть задано Qцелевых векторов, образующих матрицуTразмераSQ:
(8.5)
Образуем новую матрицу YразмераSQ–1 следующего вида:
(8.6)
Вычислим разложение матрицы Yпо сингулярным числам:
(8.7)
Далее образуем матрицы
(8.8)
где K– ранг матрицыY.
Построим динамическую систему
, (8.9)
где T – матрица вида ТР – ТМ; – динамический параметр (в алгоритме принят равным 10); E– единичная матрица.
Вычислим дискретную модель для системы (8.9):
, (8.10)
где Ф– переходная матрица вида;F– матрица передачи входа видас1=eh –1,c2 = (1–e–h)/;h– такт дискретности (в алгоритме принят равным 0.15c).
Соответствующая матрица весов рекуррентного слоя и вектор смещения вычисляются следующим образом:
(8.11)
Когда сеть спроектирована, она может быть проверена с одним или большим числом векторов входа. Весьма вероятно, что векторы входа, близкие к целевым точкам, равновесия найдут свои цели. Способность модифицированной сети Хопфилда быстро обрабатывать наборы векторов входа позволяет проверить сеть за относительно короткое время. Сначала можно проверить, что точки равновесия целевых векторов действительно принадлежат вершинам гиперкуба, а затем можно определить области притяжения этих точек и обнаружить паразитные точки равновесия, если они имеются.
Рассмотрим следующий пример. Предположим, что требуется создать модифицированную сеть Хопфилда с двумя точками равновесия, заданными в трехмерном пространстве:
T = [–1 –1 1; 1 –1 1]'
T =
–1 1
–1 –1
1 1
Выполним синтез сети, используя М-функцию newhop:
net = newhop(T);
Удостоверимся, что разработанная сеть имеет устойчивые состояния в этих двух точках. Выполним моделирование сети Хопфилда, приняв во внимание, что эта сеть не имеет входов и содержит рекуррентный слой; в этом случае целевые векторы определяют начальное состояние слоя Ai, а второй аргумент функции sim определяется числом целевых векторов:
Ai = T;
[Y,Pf,Af] = sim(net,2,[],Ai);
Y
Y =
–1 1
–1 –1
1 1
Действительно, устойчивые положения равновесия сети находятся в назначенных точках.
Зададим другое начальное условие в виде массива ячеек:
Ai = {[–0.9; –0.8; 0.7]};
Ai{1,1}
ans =
–0.9000
–0.8000
0.7000
Эта точка расположена вблизи первого положения равновесия, так что можно ожидать, что сеть будет сходиться именно к этой точке. При таком способе вызова функции sim в качестве второго параметра указываются такт дискретности и количество шагов моделирования:
[Y,Pf,Af] = sim(net,{1 5},{},Ai);
Y{1}
Y =
–1
–1
1
Действительно, из заданного начального состояния сеть вернулась в устойчивое положение равновесия. Желательно, чтобы сеть вела себя аналогичным образом при задании любой начальной точки в пределах куба, вершины которого составлены изо всех комбинаций чисел 1 и –1 в трехмерном пространстве. К сожалению, этого нельзя гарантировать, и достаточно часто сети Хопфилда включают нежелательные паразитные точки равновесия.
Пример:
Рассмотрим сеть Хопфилда с четырьмя нейронами и определим 4 точки равновесия в виде следующего массива целевых векторов:
T = [1 –1; –1 1; 1 1; –1 –1]'
T =
1 –1 1 –1
–1 1 1 –1
На рис. 8.7 показаны эти 4 точки равновесия на плоскости состояний сети Хопфилда.
plot(T(1,:), T(2,:),'*r') % Рис.8.7
axis([–1.1 1.1 –1.1 1.1])
title('Точки равновесия сети Хопфилда')
xlabel('a(1)'), ylabel('a(2)')
Рис. 8.7
Рассчитаем веса и смещения модифицированной сети Хопфилда, использую М-функцию newhop:
net = newhop(T);
W= net.LW{1,1}
b = net.b{1,1}
W =
1.1618 0
0 1.1618
b =
3.5934e–017
3.5934e–017
Проверим, принадлежат ли вершины квадрата к сети Хопфилда:
Ai = T;
[Y,Pf,Af] = sim(net,4,[],Ai)
Y =
1 –1 1 –1
–1 1 1 –1
Pf = []
Af =
1 –1 1 –1
–1 1 1 –1
Как и следовало ожидать, выходы сети равны целевым векторам.
Теперь проверим поведение сети при случайных начальных условиях:
plot(T(1,:), T(2,:),'*r'), hold on
axis([–1.1 1.1 –1.1 1.1])
xlabel('a(1)'), ylabel('a(2)')
new = newhop(T);
[Y,Pf,Af] = sim(net,4,[],T);
for i =1:25
a = {rands(2,1)};
[Y,Pf,Af] = sim(net,{1,20},{},a);
record = [cell2mat(a) cell2mat(Y)];
start = cell2mat(a);
plot(start(1,1), start(2,1), 'kx', record(1,:), record(2,:))
end
Результат представлен на рис. 8.8.
Рис. 8.8
Читатель может продолжить изучение модифицированных сетей Хопфилда, обратившись к демонстрационным примерам. Пример двумерной сети можно найти в демонстрации demohop1, пример неустойчивой точки равновесия – в демонстрацииdemohop2. Демонстрацияdemohop3дает пример трехмерной модифицированной сети Хопфилда.Демонстрация demohop4 иллюстрирует появление устойчивых паразитных точек равновесия.