![](/user_photo/2706_HbeT2.jpg)
- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
Радиальные базисные сети
neWRB |
Радиальная базисная сеть RB |
Синтаксис:
net = newrb(P,T,goal,spread)
Описание:
Радиальные базисные сети предназначены для аппроксимации функций. Функция newrbдобавляет нейроны к скрытому слою радиальной базисной сети, пока не будет достигнута допустимая средняя квадратичная ошибка обучения.
Функция net = newrb(P, T, goal, spread) формирует радиальную базисную сеть и имеет следующие входные и выходные аргументы.
Входные аргументы:
P – массив размера RQизQвходных векторов,R– число элементов вектора входа;
T – массив размера SQизQвекторов цели;
goal– средняя квадратичная ошибка, по умолчанию 0.0;
spread– параметр влияния, по умолчанию 1.0.
Выходные аргументы:
net – объект класса network object радиальной базисной сети.
Свойства сети:
Параметр влияния spread существенно влияет на качество аппроксимации функции: чем его значение больше, тем более гладкой будет аппроксимация. Слишком большое значение параметраspreadприведет к тому, что для получения гладкой аппроксимации быстро изменяющейся функции потребуется большое количество нейронов; слишком малое значение параметраspreadпотребует большого количества нейронов для аппроксимации гладкой функции.
Пример:
Создадим радиальную базисную сеть для следующей обучающей последовательности при средней квадратичной ошибке 0.1 (рис. 11.20):
P = 0:3;
T = [0.0 2.0 4.1 5.9];
net = newrb(P,T,0.1);
net.layers{1}.size
ans = 3
gensim(net) % Рис.11.20
Рис. 11.20
Сформированная радиальная базисная сеть имеет 3 нейрона с функцией активации radbas.
Выполним моделирование сети для нового входа (рис. 11.21):
plot(P,T,'*r','MarkerSize',2,'LineWidth',2)
hold on
V = sim(net,P); % Векторы входа из обучающего множества
plot(P,V,'ob','MarkerSize',8, 'LineWidth',2)
P1 = 0.5:2.5;
Y = sim(net,P1)
plot(P1,Y,'+k','MarkerSize',10, 'LineWidth',2) % Рис.11.21
Рис. 11.21
Алгоритм:
Функция newrbсоздает радиальную базисную сеть с двумя слоями. Первый слой включает нейроны с функцией активации radbas и использует функции взвешиванияdistи накопленияnetprod. Второй, линейный слой включает нейроны с функцией активации purelinи использует функции взвешиванияdotprod и накопленияnetsum.
Сеть формируется следующим образом. Изначально первый слой не имеет нейронов. Сеть моделируется и определяется вектор входа с самой большой погрешностью, добавляется нейрон с функцией активации radbas и весами, равными вектору входа, затем вычисляются весовые коэффициенты линейного слоя, чтобы не превысить допустимой средней квадратичной погрешности.
Сопутствующие функции: SIM, NEWRBE, NEWGRNN, NEWPNN.
neWRBE |
Радиальная базисная сеть с нулевой ошибкой RBE |
Синтаксис:
net = newrbe(P,T,spread)
Описание:
Функция net = newrb(P, T, spread) формирует радиальную базисную сеть с нулевой ошибкой и имеет следующие входные и выходные аргументы.
Входные аргументы:
P – массив размера RQизQвходных векторов,R– число элементов вектора входа;
T – массив размера SQизQвекторов цели;
spread– параметр влияния, по умолчанию 1.0.
Выходные аргументы:
net – объект класса network object радиальной базисной сети с нулевой ошибкой.
Чем больше значение параметра spread, тем более гладкой будет аппроксимация. Слишком большое значениеspreadможет привести к вычислительным проблемам.
Пример:
Создадим радиальную базисную сеть с нулевой ошибкой для следующей обучающей последовательности:
P = 0:3;
T = [0.0 2.0 4.1 5.9];
net = newrbe(P,T);
net.layers{1}.size
ans = 4
Сформированная радиальная базисная сеть с нулевой ошибкой имеет 4 нейрона в первом слое. Сравните с предыдущим случаем, когда число нейронов было равно трем.
Выполним моделирование сети для нового входа (рис. 11.22):
plot(P,T,'*r','MarkerSize',2,'LineWidth',2)
hold on
V = sim(net,P); % Векторы входа из обучающего множества
plot(P,V,'ob','MarkerSize',8, 'LineWidth',2)
P1 = 0.5:2.5;
Y = sim(net,P1)
plot(P1,Y,'+k','MarkerSize',10, 'LineWidth',2) % Рис.11.22
Рис. 11.22
Алгоритм:
Функция newrbeсоздает радиальную базисную сеть с двумя слоями. Первый слой включает нейроны с функцией активации radbas и использует функции взвешиванияdistи накопленияnetprod.Второй, линейный слой включает нейроны с функцией активацииpurelinи использует функции взвешиванияdotprod и накопленияnetsum.
Функция newrbeустанавливает веса первого слоя равнымиP', а смещения – равными0.8326/spread, в результате радиальная базисная функция пересекает значение 0.5 при значениях взвешенных входовspread. Веса второго слояIW{2,1}и смещенияb{2}определяются путем моделирования выходов первого слояA{1}и последующего решения системы линейных уравнений:
[W{2,1} b{2}] * [A{1}; ones] = T
Сопутствующие функции: SIM, NEWRB, NEWGRNN, NEWPNN.
neWGRNN |
Обобщенная регрессионная сеть GRNN |
Синтаксис:
net = newgrnn(P,T,spread)
Описание:
Обобщенные регрессионные сети являются разновидностью радиальных базисных сетей и используются для анализа временных рядов, решения задач обобщенной регрессии и аппроксимации функций. Характерной особенностью этих сетей является высокая скорость их обучения.
Функция net = newgrnn(P, T, spread) формирует обобщенную регрессионную сеть и имеет следующие входные и выходные аргументы.
Входные аргументы:
P – массив размера RQизQвходных векторов,R– число элементов вектора входа;
T – массив размера SQизQвекторов цели;
spread– параметр влияния, по умолчанию 1.0.
Выходные аргументы:
net – объект класса network object обобщенной регрессионной сети.
Чем больше число используемых радиальных базисных функций, тем более гладкой будет аппроксимация функции. Чтобы выполнить точную аппроксимацию, следует использовать значение параметра spreadменьшее, чем расстояние между векторами входа. Чтобы получить гладкую аппроксимацию, следует увеличить значение параметраspread.
Свойства:
Функция newgrnn создает двухслойную нейронную сеть, архитектура которой совпадает с архитектурой радиальной базисной сети. Первый слой включает нейроны с функцией активации radbas и использует функции взвешиванияdistи накопленияnetprod. Второй, линейный слой включает нейроны с функцией активации purelinи использует функции взвешиванияnormprod и накопленияnetsum. Смещения используются только в первом слое.
Функция newgrnn устанавливает веса первого слоя равнымиP', а смещения – равными0.8326/spread, что приводит к радиальным базисным функциям, которые пересекают величину 0.5 при значениях взвешенных входовspread. Веса второго слояW2устанавливаются равнымиT.
Примеры:
Создадим обобщенную регрессионную сеть с входами P и целями T:
P = 0:3;
T = [0.0 2.0 4.1 5.9];
net = newgrnn(P,T);
gensim(net) % Рис.11.24
Рис. 11.23
На рис. 11.23 мы обращаем внимание на блок функции взвешивания normprod, который отличает обобщенную регрессионную сеть от радиальной базисной. Структура сети может быть проанализирована по дереву в левой части рисунка.
Выполним моделирование сети для нового входа и построим график (рис. 11.24):
plot(P,T,'*r','MarkerSize',2,'LineWidth',2)
hold on
V = sim(net,P); % Векторы входа из обучающего множества
plot(P,V,'ob','MarkerSize',8, 'LineWidth',2)
P1 = 0.5:2.5;
Y = sim(net,P1);
plot(P1,Y,'+k','MarkerSize',10, 'LineWidth',2) % Рис.11.24
Y = sim(net, 0:0.5:3)
Y = 0.8104 1.3759 2.1424 3.0300 3.9030 4.6345 5.1615
Рис. 11.24
Из анализа результатов моделирования следует, что на границах интервала расхождения существенны.
Если уменьшить значение параметра влияния до 0.1, то мы получим аппроксимацию высокой точности:
net = newgrnn(P,T,0.1);
Y = sim(net, 0:0.5:3)
Y = 0.0000 1.0000 2.0000 3.0500 4.1000 5.0000 5.9000
Сопутствующие функции: SIM, NEWRB, NEWRBE, NEWPNN.
neWPNN |
Вероятностная нейронная сеть PNN |
Синтаксис:
net = newpnn(P,T,spread)
Описание:
Вероятностные нейронные сети (PNN) – разновидность радиальных базисных сетей, применяемая для решения задач классификации.
Функция net = newgrnn(P, T, spread) формирует обобщенную регрессионную сеть и имеет следующие входные и выходные аргументы.
Входные аргументы:
P – массив размера RQизQвходных векторов,R– число элементов вектора входа;
T – массив размера SQизQвекторов цели;
spread– параметр влияния, по умолчанию 1.0.
Выходные аргументы:
net – объект классаnetwork object вероятностной нейронной сети.
Если параметр spreadблизок к нулю, то сеть будет действовать как классификатор ближайших соседей. Когда параметрspreadвозрастает, то вероятностная сеть будет учитывать влияние близлежащих векторов.
Пример:
Задача классификации определена множествами входа P и индексов класса Tc:
P = [1 2 3 4 5 6 7];
Tc = [1 2 3 2 2 3 1];
Индексы класса преобразуем в вектор целей и сформируем вероятностную нейронную сеть (рис. 11.25):
T = ind2vec(Tc)
net = newpnn(P,T);
gensim(net) % Рис.11.25
Рис. 11.25
Обращаем внимание читателя, что в качестве второго слоя сети PNNприменяется конкурирующий слой с функцией активацииcompet.
Выполним моделирование сети, используя обучающее множество входов:
Y = sim(net,P)
Yc = vec2ind(Y)
Yc = 1 2 3 2 2 3 1
Результат, как и следовало ожидать, совпадает с множеством целей.
Алгоритм:
Функция newpnn создает двухслойную нейронную сеть, архитектура которой совпадает с архитектурой радиальной базисной сети. Первый слой включает нейроны с функцией активации radbas и использует функции взвешиванияdistи накопленияnetprod.Второй, линейный слой включает нейроны с функцией активации competи использует функции взвешиванияdotprod и накопленияnetsum. Смещения используются только в первом слое.
Функция newpnn устанавливает веса первого слоя равнымиP', а смещения слоя – равными0.8326/spread, в результате чего радиальные базисные функции достигают уровня 0.5 при значениях взвешенных входовspread. Веса второго слояW2устанавливаются равнымиT.
Сопутствующие функции: SIM, IND2VEC, VEC2IND, NEWRB, NEWRBE, NEWGRNN.