- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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.1.2. Слежение за нестационарным сигналом
- •Инициализация сети
- •Проверка сети
- •9.1.3. Моделирование стационарного фильтра
- •Постановка задачи
- •Синтез сети
- •Проверка сети
- •9.1.4. Моделирование нестационарного фильтра
- •Постановка задачи
- •Инициализация сети
- •Проверка сети
- •9.2. Распознавание образов
- •Постановка задачи
- •Нейронная сеть
- •Архитектура сети
- •Инициализация сети
- •Обучение
- •Обучение в отсутствие шума
- •Обучение в присутствии шума
- •Повторное обучение в отсутствие шума
- •Эффективность функционирования системы
- •9.3. Нейронные сети и системы управления
- •9.3.1. Регулятор с предсказанием
- •9.3.2. Регулятор narma-l2
- •9.3.3. Регулятор на основе эталонной модели
- •Функции инициализации, адаптации и обучения
- •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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
- •1. Система matlab 6 9
- •2. Модель нейрона и архитектура сети 33
- •3. Обучение нейронных сетей 47
- •10. Вычислительная модель нейронной сети 228
- •11. Формирование моделей нейронных сетей 245
Модель нейрона и архитектура сети
На рис. 6.1 показана радиальная базисная сеть с R входами. Функция активации для радиального базисного нейрона имеет вид:
(6.1)
Вход функции активации определяется как модуль разности вектора весов w и вектора входа p, умноженный на смещение b.
Рис. 6.1
График функции активации представлен на рис. 6.2.
Рис. 6.2
Эта функция имеет максимум, равный 1, когда вход равен 0. Когда расстояние между векторами w и p уменьшается, выход радиальной базисной функции увеличивается. Таким образом, радиальный базисный нейрон действует как индикатор, который формирует значение 1, когда вход p идентичен вектору весов w. Смещение b позволяет корректировать чувствительность нейрона radbas. Например, если нейрон имел смещение 0.1, то его выходом будет 0.5 для любого вектора входа p и вектора веса w при расстоянии между векторами, равном 8.333, или 0.833/b.
Радиальная базисная сеть состоит из двух слоев: скрытого радиального базисного слоя, имеющего S1 нейронов, и выходного линейного слоя, имеющего S2 нейронов (рис. 6.3).
Рис. 6.3
Входами блока ||dist|| на этом рисунке являются вектор входа p и матрица весов IW1,1, а выходом – вектор, состоящий из S1 элементов, которые определяются расстояниями между i-м вектором входа p и i-й вектор-строкой iIW1,1 матрицы весов. Такую вектор-строку будем называть вектором весов i-го нейрона. Выход блока ||dist|| умножается поэлементно на вектор смещения b1 и формирует вход функции активации. Тогда выход первого слоя может быть записан в следующей форме:
a{1}=radbas(net.prod(dist(net.IW{1,1},p),net.b{1})))
Использовать столь сложную запись при применении ППП Neural Network Toolbox не потребуется, поскольку все операции, связанные с созданием радиальной базисной сети, оформлены в виде специальных М-функций newrbe и newrb.
Для того чтобы понять поведение сети, необходимо проследить прохождение вектора входа p. При задании вектора входа каждый нейрон радиального базисного слоя выдаст значение в соответствии с тем, как близок вектор входа к вектору весов каждого нейрона. Таким образом, радиальные базисные нейроны с векторами весов, значительно отличающимися от вектора входа p, будут иметь выходы, близкие к 0, и их влияние на выходы линейных нейронов будет незначительно. Напротив, радиальный базисный нейрон с вектором весов, близким к вектору входа p, выдаст значение, близкое к 1, и это значение будет передано на линейный нейрон с весом, соответствующим выходному слою. Таким образом, если только 1 радиальный базисный нейрон имеет выход 1, а все другие имеют выходы, равные или очень близкие к 0, то выход линейного слоя будет равен весу активного выходного нейрона. Однако это исключительный случай, обычно выход формируют несколько нейронов с разными значениями весов.
Создание сети
Для построения радиальных базисных сетей предназначены М-функции newrbe и newrb. Первая позволяет построить радиальную базисную сеть с нулевой ошибкой, вторая позволяет управлять количеством нейронов скрытого слоя.
Радиальная базисная сеть с нулевой ошибкой
Для построения радиальных базисных сетей с нулевой ошибкой предназначена функция newrbe, которая вызывается следующим образом:
net = newrbe(P,T,SPREAD)
Входными аргументами функции newrbe являются массивы входных векторов P и целей T, а также параметр влияния SPREAD. Она возвращает радиальную базисную сеть с такими весами и смещениями, что ее выходы точно равны целям T. Функция newrbe создает столько нейронов радиального базисного слоя, сколько имеется входных векторов в массиве P и устанавливает веса первого слоя равными P'. При этом смещения устанавливаются равными 0.8326/SPREAD. Это означает, что уровень перекрытия радиальных базисных функций равен 0.5 и все входы в диапазоне SPREAD считаются значимыми. Ясно, что чем больший диапазон входных значений должен быть принят во внимание, тем большее значение параметра влияния SPREAD должно быть установлено. Это наиболее наглядно проявляется при решении задач аппроксимации функций, в чем можно убедиться, обратившись к демонстрационной программе demorb1.
Веса второго слоя IW21 (IW{2,1} – в обозначениях системы MATLAB) и смещений b2 (b{2}) могут быть найдены путем моделирования выходов первого слоя a1 (A{1}) и последующего решения системы линейных алгебраических уравнений (СЛАУ):
[W{2,1} b{2}] * [A{1}; ones] = T
Поскольку известны входы второго слоя A{1} и цели T, а слой линеен, то для вычисления весов и смещений второго слоя достаточно воспользоваться решателем СЛАУ
Wb = T / [P; ones(1, size(P,2))]
Здесь матрица Wb содержит веса и смещения (смещения – в последнем столбце). Сумма квадратов погрешностей сети будет всегда равна 0, так как имеем задачу с Q уравнениями (пары вход/цель) и каждый нейрон имеет Q + 1 переменных (Q весов по числу радиальных базисных нейронов и одно смещение). СЛАУ с Q уравнениями и более чем Q переменными имеет свободные переменные и характеризуется бесконечным числом решений с нулевой погрешностью.
Рассмотрим пример обучения и моделирования следующей радиальной базисной сети:
P = –1:.1:1;
T = [–.9602 –.5770 –.0729 .3771 .6405 .6600 .4609 .1336 ...
–.2013 –.4344 –.5000 –.3930 –.1647 .0988 .3072 .3960 ...
.3449 .1816 –.0312 –.2189 –.3201];
plot(P,T,'*r','MarkerSize',4,'LineWidth',2)
hold on
% Создание сети
net = newrbe(P,T); % Создание радиальной базисной сети
Warning: Rank deficient, rank = 13 tol = 2.2386e–014.
net.layers{1}.size % Число нейронов в скрытом слое
ans = 21
% Моделирование сети
V = sim(net,P); % Векторы входа из обучающего множества
plot(P,V,'ob','MarkerSize',5, 'LineWidth',2)
p = [–0.75 –0.25 0.25 0.75];
v = sim(net,p); % Новый вектор входа
plot(p,v,'+k','MarkerSize',10, 'LineWidth',2)
Результаты моделирования представлены на рис. 6.4.
Рис. 6.4
Здесь отмечены значения входов Р, целевых выходов Т, а также результаты обработки нового вектора р. Количество используемых нейронов в скрытом слое в данном случае равно 21, что соответствует длине обучающего множества.
Таким образом, в результате обучения функция newrbe создает радиальную базисную сеть с нулевой погрешностью на обучающем множестве. Единственное условие, которое требуется выполнить, состоит в том, чтобы значение параметра SPREAD было достаточно большим, чтобы активные области базисных функций перекрывались, чтобы покрыть весь диапазон входных значений. Это позволяет обеспечить необходимую гладкость аппроксимирующих кривых и препятствует возникновению явления переобучения. Однако значение SPREAD не должно быть настолько большим, чтобы радиальная базисная функция объявляла одинаково значимыми все значения входа.
Недостаток функции newrbe заключается в том, что она формирует сеть с числом нейронов в скрытом слое, равным числу элементов обучающего множества. Поэтому с помощью этой функции нельзя получить приемлемого решения в случае больших размеров обучающего множества, что характерно для реальных приложений.
