- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
9. Применение нейронных сетей
В настоящее время многие задачи, имеющие важное практическое значение и которые не имели приемлемого решения в прошлом, могут быть решены с использованием нейронных сетей. Ниже рассматривается решение таких задач, связанных с аппроксимацией и фильтрацией сигналов, моделированием динамических систем, распознаванием образов и проектированием систем управления.
9.1. Аппроксимация и фильтрация сигналов
9.1.1. Предсказание стационарного сигнала Постановка задачи
Задан гармонический сигнал с круговой частотой 41/с (2Гц) и длительностью 5с. Дискретный сигнал T получен в результате квантования исходного сигнала по времени с частотой 40Гц (такт дискретности 0.025с):
time = 0:0.025:5;
T = sin(time*4*pi);
stairs(time,T);
axis([0 5 –1 1]), xlabel(‘time, с’), ylabel(‘T’)
На рис. 9.1 показан график дискретного сигнала Т.
Рис. 9.1
Требуется предсказать значение сигнала ykна выходе сети в момент времениtk, используя 5 последних значений сигнала Т в качестве входа, т. е.
(9.1)
где yk= sin(4tk ) = sin(4kh),tk =t0:h:tf= 0 : 0.025 : 5.
В математическом смысле это задача экстраполяции сигнала на 1 шаг вперед. С позиции теории нейронных сетей это задача настройки параметров и обучения сети. Сформируем обучающее множество следующим образом. Входная последовательность Р1 определена на интервале от 0 до 1c и имеет длину Q1, а каждый вектор входа состоит из пяти компонент, соответствующих запаздывающим значениям сигнала T; целевой вектор Т1 сформирован из значений сигнала Т, начиная с шестого; контрольное подмножество T2 формируется из значений сигнала Т на интервале от 3 до 5 с:
Q = length(T);
h = 0.025;
Q1 = 1/h;
P1 = zeros(5,Q1);
P1(1,1:Q1) = T(1,1:Q1);
P1(2,2:Q1) = T(1,1:(Q1–1));
P1(3,3:Q1) = T(1,1:(Q1–2));
P1(4,4:Q1) = T(1,1:(Q1–3));
P1(5,5:Q1) = T(1,1:(Q1–4));
T1 = T(1,6:(Q1+5));
T2 = T(1,3/h:Q);
Синтез сети
Поскольку сигнал стационарный и соотношения между прошлыми и будущими значениями остаются неизменными, можно воспользоваться линейной моделью нейронной сети, рассчитывая веса на основе прямого решения системы линейных уравнений. Такой подход реализует М-функция newlind. Она вычисляет веса и смещение, которые минимизируют среднеквадратичную ошибку предсказания, которые зависят от длины обучающей последовательности Q1. Сеть для решения этой задачи должна состоять из одного нейрона с пятью входами (рис.9.2).
net = newlind(P1,T1);
Рис. 9.2
Графики зависимостей значений весовых коэффициентов wiи смещенияbпоказаны на рис. 9.3,а и б соответственно.
а |
б |
Рис. 9.3
Значения этих величин стабилизируются после 0.5 с, когда исчерпывается 1 период синусоиды.
На рис. 9.4 представлена зависимость среднеквадратичной ошибки, которая характеризует погрешность экстраполяции в зависимости от длины обучающей последовательности.
Рис. 9.4
Проверка сети
Выполним проверку сети, используя входную последовательность обучающего подмножества и сравнивая выход сети с фактическим значением сигнала T (рис. 9.5):
Q1 = 40;
a = sim(net,P1(:,1:Q1));
t1 = 6:Q1+5;
plot(time(t1),a,'*r', time(1:Q1+5),T(1,1:Q1+5))
xlabel('Time, c');
Рис. 9.5
Как следует из анализа этого рисунка, нейронная сеть достаточно точно отслеживает входной сигнал.
Теперь проверим работу сети, используя контрольное множество T2. Определим длину входной последовательности N1, равную 20, и построим график реакции сети (рис. 9.6):
N1 = 20;
Tt = T2(1,1:N1);
P2(1,:) = Tt(1,:);
P2(2,2:end) = Tt(1,1:end–1);
P2(3,3:end) = Tt(1,1:end–2);
P2(4,4:end) = Tt(1,1:end–3);
P2(5,5:end) = Tt(1,1:end–4);
a = sim(net,P2);
figure(3), clf
h1 = plot(time(1:size(P2, 2)–5), a(1:end–5), '*'); hold on
h2 = plot(time(1:size(P2, 2)–5), Tt(6:end), 'r');
Рис. 9.6
Вычислим погрешность сети, используя информацию из описания графических объектов Line с дескрипторами h1 и h2:
y1 = get(h1,'YData'); y2 = get(h2,'YData');
minlength = min(length(y1), length(y2));
e = y1(1:minlength) – y2(1:minlength);
nre = sqrt(mse(e));
График погрешности экстраполяции в функции от длины обучающего сигнала и в зависимости от количества точек экстраполяции в качестве параметра показан на рис. 9.7.
Рис. 9.7
Из анализа этого графика следует, что при малом числе экстраполируемых точек 6, 8 и длительности обучающей последовательности более 0.1 с погрешности малы. С ростом числа экстраполируемых точек 10, 20, 30 требуется большая длина обучающей последовательности, и при длине, превышающей 20 тактов (0.5 с), погрешность не зависит от числа точек экстраполяции и монотонно убывает с увеличением длины обучающего множества.
Читатель может обратиться к демонстрационному примеру applin1, где исследуется подобная задача.