- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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.1. Применение системы Simulink
ППП Simulink, входящий в состав программных продуктов фирмы MathWorks, предназначен для моделирования динамических систем, описываемых обыкновенными дифференциальными уравнениями. С описанием этого пакета можно ознакомиться по книгам [51, 52].
Применение Simulink для моделирования нейронных сетей требует расширения библиотеки стандартных модулей моделями блоков, необходимых для сборки нейронных сетей. Это блоки функций взвешивания, накопления и активации, характерные только для нейронных сетей. Эти и другие блоки, необходимые для моделирования нейронных сетей, составляют библиотеку Neural Network Toolbox Block Library.
Библиотеки блоков для моделирования нейронных сетей
Доступ к библиотеке блоков для моделирования нейронных сетей может быть получен либо из средства просмотра SIMULINKLibraryBrowser(рис. 11.79, а), где имеется доступ к библиотекам блоков всех программных продуктов фирмыMathWorks, установленных на данном компьютере, либо посредством вызова с помощью команды neural библиотеки Neural Network Toolbox Block Library (рис. 11.79, б).
а |
б |
Рис. 11.79
Библиотека блоков функций активации.Раскрытие разделаTransferFunctionsв окнеSIMULINKLibraryBrowser(рис. 11.79,а) либо двойной щелчок левой клавиши мыши в области библиотекиTransferFunctions(рис. 11.79,б) открывают окно, содержащее блоки функций активации (рис. 11.80).
Рис. 11.80
Библиотека блоков функций накопления.Раскрытие раздела Net Input Functions в окнеSIMULINKLibraryBrowser(рис. 11.79,а) либо двойной щелчок левой клавиши мыши в области библиотеки Net Input Functions (рис. 11.79,б) открывают окно, содержащее блоки функций накопления (рис. 11.81).
Рис. 11.81
Библиотека блоков функций взвешивания.Раскрытие раздела Weight Functions в окнеSIMULINKLibraryBrowser(рис. 11.79,а) либо двойной щелчок левой клавиши мыши в области библиотеки Weight Functions (рис. 11.79,б) открывают окно, содержащее блоки функций взвешивания (рис. 11.82).
Рис. 11.82
Эти функции выполняют взвешивание вектора входа, используя формат вектора весов в виде вектор-строки. Поэтому для взвешивания векторов входа с помощью матрицы весов требуется S блоков функций взвешивания, по числу нейронов в слое.
Библиотека блоков управляющих устройств для моделирования систем управления. Раскрытие раздела Control Systems в окнеSIMULINKLibraryBrowser(рис. 11.79, а) либо двойной щелчок левой клавиши мыши в области библиотеки Control Systems (рис. 11.79, б) открывают окно, содержащее блоки функций для моделирования управляющих устройств систем управления, а также блок осциллографаGraphдля построения предельных циклов (рис. 11.83).
Рис. 11.83
Подробное описание функций, реализуемых перечисленными блоками, можно найти в соответствующих разделах книги.
Построение моделей нейронных сетей
GENSIM |
Формирование S-модели нейронной сети |
Синтаксис:
gensim(net,ST)
Описание:
Функция gensim(net, ST) формирует S-модель нейронной сети с именем net для ее запуска в среде системы Simulink; аргумент ST задает такт дискретности, который необходим для моделирования динамических сетей. Если сеть не имеет ЛЗ, т. е. является статической системой, то значение ST следует задать равным –1, что соответствует неопределенному такту дискретности.
Пример:
Создадим однослойную линейную сеть, реализующую следующее соотношение между входом и целью:
P = [1 2 3 4 5];
T = [1 3 5 7 9];
net = newlind(P,T);
Для того чтобы сформировать S-модель этой сети, используем команду
gensim(net,–1) % Рис.11.84
Рис. 11.84
В результате откроется окно системы Simulink с S-моделью нейронной сети, которая включает блок входа, блок нейронной сети и блок осциллографа (рис. 11.84).
Нажатие кнопки Toggle model browser(Включить средство просмотра модели) переводит окно системы Simulink в другое состояние (рис. 11.85).
Рис. 11.85
Окно Simulink дополняется средством просмотра модели, расположенным слева от схемы сети. Включение кнопки Show library linksи соседней с нейBrowse masked subsystemsпозволяет раскрыть описание структуры нейронной сети и просматривать ее элементы простым выбором того или иного элемента структуры. Рис. 11.86,а–ж, поясняет эту возможность.
-
а
б
в
г
д
е
ж
Рис. 11.86
Для подготовки S-модели нейронной сети (см. рис. 11.85) к моделированию следует ввести значение входного сигнала, активизируя двойным щелчком левой клавиши мыши блок Input1. Блок входа позволяет ввести значение некоторой константы; введем значение, равное 2 (рис. 11.87,а).
а |
б |
Рис. 11.87
Теперь можно выполнить моделирование нейронной сети, выбирая опцию Start из меню Simulation либо активизируя кнопку Start simulation на инструментальной панели. После выполнения моделирования активизируем блок Scope, который позволяет увидеть отклик сети на входное воздействие (рис. 11.87, б). Этот отклик равен постоянному значению 3 и свидетельствует о том, что данная нейронная сеть относится к классу статических систем.
Теперь рассмотрим пример моделирования динамической сети. Обратимся к сети Элмана, рассмотренной в гл. 8 и связанной с детектированием амплитуды гармонического сигнала.
Сформируем и обучим сеть Элмана:
p1 = sin(1:20);
p2 = sin(1:20)*2;
t1 = ones(1,20);
t2 = ones(1,20)*2;
p = [p1 p2 p1 p2];
t = [t1 t2 t1 t2];
Pseq = con2seq(p);
Tseq = con2seq(t);
R = 1; % Число элементов входа
S2 = 1; % Число нейронов выходного слоя
S1 = 10; % Число нейронов рекуррентного слоя
net = newelm([–2 2],[S1 S2],{'tansig','purelin'},'traingdx');
net.trainParam.epochs = 1000;
net.trainParam.show = 25;
net.trainParam.goal = 0.01;
[net,tr] = train(net,Pseq,Tseq);
Создадим S-модель этой сети, дополнив ее блокомToWorkspace, который позволяет записать результаты моделирования в виде массиваyoutв рабочую область системыMATLAB(рис.11.88,а):
gensim(net)
-
а
б
Рис. 11.88
Структурная схема сети Элмана показана на рис. 11.88, би представляет двухслойную сеть с обратной связью в первом слое.
Задав значение входного сигнала (рис.11.89, а), выполним моделирование сети и выведем результат в виде графика изменения выхода сети (рис. 11.89, б), используя данные из рабочей области системы MATLAB:
stairs(tout(1:5:end),yout) % Рис.11.89,б
а |
б |
Рис. 11.89
Сеть Элмана приходит в установившееся состояние к 10-му такту времени.
Справка:
help network/gensim
Сопутствующие функции: GENSIMM.
GENSIMM |
Формирование М-файла для моделирования нейронной сети |
Синтаксис:
<имя_файла> = gensimm(net)
Описание:
Функция <имя_файла> = gensimm(net) генерирует М-файл для моделирования нейронной сети и размещает его в каталоге C:\WINDOWS\TEMP\matlab_nnet\<имя_М-файла>; этот путь доступа соответствует строковой переменной с именем <имя_файла>.
Пример:
Сформируем М-файл для S-модели сети Элмана:
p1 = sin(1:20);
p2 = sin(1:20)*2;
t1 = ones(1,20);
t2 = ones(1,20)*2;
p = [p1 p2 p1 p2];
t = [t1 t2 t1 t2];
Pseq = con2seq(p);
Tseq = con2seq(t);
R = 1; % Число элементов входа
S2 = 1; % Число нейронов выходного слоя
S1 = 10; % Число нейронов рекуррентного слоя
net = newelm([–2 2],[S1 S2],{'tansig','purelin'},'traingdx');
netelm = gensimm(net)
netelm =C:\WINDOWS\TEMP\matlab_nnet\tp134040.m
Выведем на экран терминала текст М-файла:
type(netelm)
function [perf,El,Ac,N,LWZ,IWZ,BZ] = tp134040(net,Pd,Ai,Tl,Q,TS)
%TP134040 Temporary network simulation file.
%
% [perf,El,Ac,N,LWZ,IWZ,BZ] = tp134040(net,Pd,Ai,Tl,Q,TS)
% net – Neural network.
% Pd – numInputs–by–numLayers–by–TS cell array of delayed inputs.
% Ai – numLayers–by–numLayerDelays cell array of layer delay conditions.
% Tl – numLayers–by–TS cell array of layer targets.
% Q – number of concurrent simulations.
% TS – number of time steps.
% returns:
% perf – network performance:
% El – numLayers–by–TS cell array of layer errors:
% Ac – numLayers–by–(numLayerDelays+TS) cell array of layer outputs:
% N – numLayers–by–TS cell array of net inputs:
% LWZ – numLayers–by–numLayers–by–TS cell array of weighed layer outputs:
% IWZ – numLayers–by–numInputs–by–TS cell array of weighed inputs:
% BZ – numLayers–by–1 cell array of expanded biases:
% Input weights
IW1_1 = net.IW{1,1};
% Layer weights
LW1_1 = net.LW{1,1};
LW2_1 = net.LW{2,1};
% Biases
QOnes = ones(1,Q);
B1 = net.b{1}(:,QOnes);
B2 = net.b{2}(:,QOnes);
BZ = {B1; B2};
% Signals
El = cell(2,TS);
Ac = [Ai cell(2,TS)];
N = cell(2,TS);
IWZ = cell(2,1,TS);
LWZ = cell(2,2,TS);
for ts=1:TS;
tsc = ts + 1;
% Simulate Layer 1
IWZ{1,1,ts} = IW1_1*Pd{1,1,ts};
LWZ{1,1,ts} = LW1_1*Ac{1,tsc–1};
N{1,ts} = IWZ{1,1,ts}+LWZ{1,1,ts}+B1;
Ac{1,tsc} = tansig(N{1,ts});
% Simulate Layer 2
LWZ{2,1,ts} = LW2_1*Ac{1,tsc};
N{2,ts} = LWZ{2,1,ts}+B2;
Ac{2,tsc} = N{2,ts};
El{2,ts} = Tl{2,ts} – Ac{2,tsc};
end;
perf = mse(El,net,net.trainParam);
Сформированный М-файл имеет следующие входные и выходные аргументы.
Входные аргументы:
net– имя нейронной сети;
Pd– массив ячеек задержанных входов размераnumInputsnumLayersTS;
Ai– массив ячеек начальных условий на ЛЗ размераnumLayersnumLayerDelays;
Tl– массив ячеек векторов целей для слоя размераnumLayersTS;
Q– число выборок;
TS– длина выборки по времени.
Выходные аргументы:
perf– значение функционала качества;
El– массив ячеек ошибок слоя размераnumLayersTS;
Ac– массив ячеек выходов слоя размераnumLayers(numLayerDelays+TS);
N– массив ячеек входов размераnumLayersTS;
LWZ– массив ячеек взвешенных выходов слоя размераnumLayersnumLayersTS;
IWZ– массив ячеек взвешенных входов слоя размераnumLayersnumInputsTS;
BZ– массив ячеек для смещений размераnumLayers1.
Последующие операторы М-файла позволяют видеть, как моделируется нейронная сеть.
Сопутствующие функции: SIM.