- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
11.9. Моделирование нейронных сетей и система Simulink Функции моделирования сети
SIM |
Моделирование нейронной сети |
Синтаксис:
[Y,Pf,Af,E,perf] = sim(net,P,Pi,Ai,T)
[Y,Pf,Af,E,perf] = sim(net,{Q TS},Pi,Ai,T)
[Y,Pf,Af,E,perf] = sim(net,Q,Pi,Ai,T)
Описание:
Функция [Y, Pf, Af E, perf] = sim(net, P, Pi, Ai, T) выполняет моделирование нейронной сети и имеет следующие входные и выходные аргументы.
Входные аргументы:
net –имя нейронной сети;
P– массив входов;
Pi –начальные условия на ЛЗ входов, по умолчанию нулевой вектор;
Ai –начальные условия на ЛЗ слоев, по умолчанию нулевой вектор;
T– вектор целей, по умолчанию нулевой вектор.
Выходные аргументы:
Y – массив выходов;
Pf – состояния на ЛЗ входов после моделирования;
Af – состояния на ЛЗ слоев после моделирования;
E – массив ошибок;
perf – значение функционала качества.
Заметим, что аргументы Pi, Ai, Pf и Af являются необязательными и применяются в случае динамических сетей с ЛЗ.
Входные аргументы P и T могут иметь 2 формата: cell array и double array. Формат cell array наиболее прост для понимания и соответствует последовательному представлению данных.
Последовательное представление данных. Каждую строку массива ячеек можно рассматривать как временную последовательность, и тогда описание многомерной сети может быть выполнено следующим образом:
P – массив ячеек размера NiTS, каждый элемент которого P{i, ts} – числовой массив размера RiQ;
T – массив ячеек размера NtTS, каждый элемент которого P{i, ts} – числовой массив размера ViQ;
Pi –массив ячеек размера NiID, каждый элемент которого Pi{i, k} – числовой массив размера RiQ;
Ai – массив ячеек размера NlLD, каждый элемент которого Ai{i, k} – числовой массив размера SiQ;
Y – массив ячеек размера NoTS, каждый элемент которого Y{i, ts} – числовой массив размера UiQ;
Pf – массив ячеек размера NiID, каждый элемент которого Pf{i, k} – числовой массив размера RiQ;
Af – массив ячеек размера NlLD, каждый элемент которого Af{i, k} – числовой массив размера SiQ.
Параметры описания массивов ячеек и их связь с параметрами сети показаны в следующей таблице.
Параметр описания |
Параметр сети |
Назначение |
Ni |
net.numInputs |
Количество векторов входа |
Nl |
net.numLayers |
Количество слоев |
No |
net.numOutputs |
Количество выходов |
Nt |
net.numTargets |
Количество целевых выходов |
ID |
net.numInputDelays |
Максимальное значение задержки на входе |
TS |
|
Число шагов по времени |
Q |
|
Количество реализаций для фиксированного момента времени |
LD |
net.numLayerDelays |
Максимальные значения задержек для слоев |
Ri |
net.inputs{i}.size |
Количество элементов i-го вектора входа |
Si |
net.layers{i}.size |
Количество нейронов i-го слоя |
Vi |
net.targets{i}.size |
Количество элементов i-го вектора цели |
Ui |
net.outputs{i}.size |
Количество элементов i-го вектора выхода |
Столбцы массивов начальных условий Pi, Pf, Ai, Af упорядочены следующим образом:
Pi{i, k}– значение начального условия для линии задержкиi-го входа в момент времениts = k – ID;
Pf{i, k} – значение начального условия для линии задержкиi-го входа в момент времениts = TS + k – ID;
Ai{i, k}– значение начального условия для линии задержкиi-го слоя в момент времениts = k – LD;
Af{i, k}– значение начального условия для линии задержкиi-го слоя в момент времениts = TS + k – LD.
Групповое представлениеданных можно использовать только при адаптации статических сетей (TS = 1). При этом следует помнить, что при переходе от формата последовательного представления данныхcellarrayк формату группового представленияdoublearrayмассив ячеек, содержащий, например,Niчисловых массивов размераRiQпреобразуется в единственный числовой массив размераQ.
Следующая таблица поясняет связь этих форм представления.
-
Формат
Аргумент
Cell array
Double array
Size(P)
Size(P{I,1})
Size(P)
P
Ni1
RiQ
T
Nt1
ViQ
Pi
NiID
RiQ
Ai
NlLD
SiQ
Y
No1
UiQ
Pf
NiID
RiQ
Af
NlLD
SiQ
Функция [Y,Pf,Af,E,perf] =sim(net, {QTS},Pi,Ai,T) применяется для моделирования динамических сетей без входов при последовательном представлении данных.
Функция [Y,Pf,Af,E,perf] =sim(net,Q,Pi,Ai,T) применяется для моделирования динамических сетей без входов при групповом представлении данных.
Пример:
Создадим нейронную сеть персептрона с одним слоем и двухэлементным входом с диапазоном значений [0 1] и одним нейроном:
net = newp([0 1;0 1],1);
Теперь можно промоделировать персептрон, подавая различные последовательности векторов входа: 1 вектор с двумя элементами, группа из двух векторов с тремя элементами, последовательность из трех векторов, что соответствует различным формам представления данных:
p1 = [.2; .9]; a1 = sim(net,p1)
p2 = [.2 .5 .1 ;.9 .3 .7]; a2 = sim(net,p2)
p3 = {[.2; .9] [.5; .3] [.1; .7]}; a3 = sim(net,p3)
a1 = 1
a2 = 1 1 1
a3 = [1] [1] [1]
В данном случае в качестве результата выводятся только выходы нейрона.
Создадим динамическую однослойную линейную сеть с двумя нейронами, трехэлементным входом с диапазоном значений [0 2] и ЛЗ на входе [0 1]:
net = newlin([0 2;0 2;0 2],2,[0 1]);
Линейный слой моделируется с последовательностью из двух векторов входа для заданных по умолчанию начальных условия на ЛЗ:
p1 = {[2; 0.5; 1] [1; 1.2; 0.1]};
[y1,pf] = sim(net,p1)
y1 = [21 double] [21 double]
pf = [31 double]
Затем этот слой моделируется еще для трех векторов, используя состояния на элементах задержки как новые начальные условия:
p2 = {[0.5; 0.6; 1.8] [1.3; 1.6; 1.1] [0.2; 0.1; 0]};
[y2,pf] = sim(net,p2,pf)
y2 = [21 double] [21 double] [21 double]
pf = [31 double]
Создадим двухслойную сеть Элмана с одноэлементным входом с диапазоном значений [0 1], имеющую 3 нейрона с функцией активации tansig в слое 1 и 2 нейрона с функцией активации purelin в слое 2. Сеть Элмана имеет ЛЗ [0 1] при переходе от слоя 1 к слою 2:
net = newelm([0 1],[3 2],{'tansig','purelin'});
Сеть моделируется для трехэлементного вектора входа, используя заданные по умолчанию начальные условия на ЛЗ:
p1 = {0.2 0.7 0.1};
[y1,pf,af,e,perf] = sim(net,p1)
y1 = [21 double] [21 double] [21 double]
pf = Empty cell array: 1–by–0
af =
[31 double]
[21 double]
e = [21 double] [21 double] [21 double]
perf = 0.8153
[e{:}]
ans =
0.4779 –0.5393 1.0238
–1.0069 –1.3680 –0.6627
Выполним еще 1 шаг моделирования, но теперь для четырехэлементного вектора входа, используя состояния на элементах задержки как новые начальные условия:
p2 = {0.1 0.9 0.8 0.4};
[y1,pf,af,e,perf] = sim(net,p2,pf,af)
y2 = [21 double] [21 double] [21 double] [21 double]
pf = Empty cell array: 1–by–0
af =
[31 double]
[21 double]
e = [21 double] [21 double] [21 double] [21 double]
perf = 0.8560
[e{:}]
ans =
–0.3919 –0.3637 –0.2766 0.2490
–1.2888 –1.3479 –1.3269 –1.0886
Cправкa:
help network/sim
Сопутствующие функции: INIT, ADAPT, TRAIN.