- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
Предварительная обработка и восстановление данных
Вычислительная процедура обучения нейронной сети связана с проведением больших объемов вычислений с данными, диапазоны изменения которых могут существенно различаться и которые имеют случайные разбросы, обусловленные погрешностью их измерения или задания. Поскольку обработка таких данных выполняется на компьютерах, имеющих ограниченный диапазон представления чисел и ограниченную точность выполнения операций умножения и алгебраического сложения в арифметике с плавающей точкой, то необходимо предпринять определенные меры, чтобы такая обработка не привела к потере точности. Для этого осуществляется предварительная обработка данных с целью привести значения элементов обучающего множества к определенному диапазону (масштабирование данных), ограничить разброс случайных величин (нормировка данных), избавиться от несущественных данных (факторный анализ). Поскольку эти операции являются вспомогательными и связаны только с особенностями вычислений, то необходимо предусмотреть восстановление масштабов данных на выходе нейронной сети. Все это направлено на то, чтобы обеспечить достоверность вычислений, повысить точность обучения и в конечном счете обеспечить эффективность функционирования проектируемой нейронной сети.
Для этой цели в составе ППП Neural Network Toolbox предусмотрены следующие М-функции для предварительной подготовки и восстановления данных при обучении нейронных сетей:
Операция |
Обработка обучающего множества |
Обработка выходных данных |
Обработка входных данных |
Масштабирование |
premnmx |
postmnmx |
tramnmx |
Нормировка |
prestd |
poststd |
trastd |
Факторный анализ |
prepca |
– |
trapca |
Регрессионный анализ |
– |
postreg |
– |
Масштабирование.Перед тем как начинать процедуру обучения, бывает полезно провести масштабирование векторов входа и целей так, чтобы их элементы оказались в определенном интервале значений. В частности, М-функцияpremnmxпредназначена для приведения данных к интервалу [–1 1].
% Масштабирование входов и целей
[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t);
net = train(net,pn,tn); % Обучение сети
Входными параметрами этой функции являются массивы p и t, соответствующие входам и целевым выходам. Элементы выходных массивов pn и tn имеют значения в интервале [–1 1]. Векторы minp и maxp включают минимальные и максимальные значения исходных векторов входа, а векторы mint и maxt – минимальные и максимальные значения исходных векторов целей. После завершения процедуры обучения эти векторы используются для масштабирования векторов входов и целей, подаваемых на вход сети. Эти параметры становятся неотъемлемой частью параметров, определяющих сеть, как, например, ее веса и смещения.
Если выполнено масштабирование входов и целей с использованием М-функции premnmx, то выходы сети будут иметь значения в интервале [–1 1]. Для приведения вектора выхода к исходным единицам измерения используется М-функция postmnmx. Ее следует применять после того, как выполнено моделирование сети:
an = sim(net,pn); % Моделирование сети с масштабированным входом
a = postmnmx(an,mint,maxt); % Восстановление исходного масштаба
Если функция масштабирования premnmxиспользовалась для обучения сети, то при последующей работе с такой сетью необходимо масштабировать новые входные последовательности, используя М-функциюtramnmx:
pnewn = tramnmx(pnew,minp,maxp); % Масштабирование поступающих входов
anewn = sim(net,pnewn); % Моделирование сети
anew = postmnmx(anewn,mint,maxt); % Восстановление исходного масштаба
Нормировка.В тех случаях, когда обучающее множество включает случайные величины, распределенные по нормальному закону, приведение элементов к единому масштабу связано с процедурой нормировки данных с использованием величин среднего значения и стандартного отклонения. Эта процедура выполняется с помощью М-функцииprestd, которая нормирует входы и цели так, чтобы они имели среднее значение, равное 0, и стандартное отклонение, равное 1.
[pn,meanp,stdp,tn,meant,stdt] = prestd(p,t);
Входными параметрами этой функции являются массивы pиt, соответствующие входам и целевым выходам. Элементы выходных массивов pnиtn будут иметь среднее значение, равное 0, и стандартное отклонение, равное 1. Векторы meanpи stdpвключают средние значения и стандартные отклонения исходных векторов входа, а векторыmeantиstdt– средние значения и стандартные отклонения исходных векторов целей. После завершения процедуры обучения эти векторы используются для масштабирования векторов входов и целей, подаваемых на вход сети. Эти величины становятся неотъемлемой частью параметров, определяющих сеть, как, например, ее веса и смещения.
Если выполнено масштабирование входов и целей с использованием М-функции prestd, то выходы сети будут нормированы так, что их среднее значение равно 0, а стандартное отклонение – 1. Для приведения вектора выхода к исходным единицам измерения используется М-функция poststd. Ее следует применять после того, как выполнено моделирование сети:
an = sim(net,pn); % Моделирование сети с нормированным входом
a = poststd(an,meant,stdt); % Восстановление исходных единиц измерения
Если функция нормировки prestdиспользовалась для обучения сети, то при последующей работе с такой сетью необходимо нормировать новые входные последовательности, используя М-функциюtrastd:
pnewn = trastd(pnew,meanp,stdp); % Нормировка векторов входа
anewn = sim(net,pnewn); % Моделирование сети
% Восстановление исходных единиц измерения
anew = poststd(anewn,meant,stdt);
Факторный анализ.Во многих случаях, когда векторы входа содержат большое число элементов, они оказываются коррелированными, т. е. взаимосвязанными между собой,и, следовательно, избыточными для процедур обучения. В этом случае полезно сократить размеры векторов входа. Для этого применяется процедура статистической обработки, называемая факторным анализом. При применении этой процедуры решаются 3 задачи:
выполняется ортогонализация векторов входа, что исключает их взаимную корреляцию;
выполняется упорядочение векторов обучающего множества так, чтобы векторы, охватывающие большой диапазон значений, были первыми (главные компоненты);
удаляются векторы, диапазон значений которых незначителен.
Для реализации процедуры факторного анализа предназначена М-функция prepca:
[pn,meanp,stdp] = prestd(p);% Нормализация вектора входа
[ptrans,transMat] = prepca(pn, 0.02);
% Устранение векторов входа, вклад которых не превышает 2 проц.
В последовательности этих операторов сначала выполняется нормировка векторов входа, затем проводится факторный анализ. Второй аргумент функции prepcaравен 0.02, что означает устранение тех главных компонентов, вклад которых составляет менее 2 %. Массивptransсодержит преобразованные векторы входа; матрицаtransMatявляется матрицей преобразования в главные компоненты. После обучения сети эта матрица должна быть использована для предварительного преобразования векторов входа. Она становится такой же неотъемлемой частью параметров сети, как ее веса и смещения. Если умножить нормированные векторы входаpnна матрицу преобразованияtransMat, то получим векторptransс упорядоченными главными компонентами.
Если функция prepca использовалась для предварительной обработки множества обучающих данных, то всякий раз, когда обученная сеть используется с новыми входами, они должны быть соответствующим образом преобразованы. Это реализуется с помощью М-функции trapca:
pnewn = trastd(pnew,meanp,stdp); % Нормировка векторов входа
pnewtrans = trapca(pnewn,transMat);
a = sim(net,pnewtrans); % Моделирование сети
Регрессионный анализ. В определенной степени качество обучения нейронной сети может быть оценено ошибками обучения, контроля и тестирования, но этого может оказаться недостаточно и требуется более детальный анализ. Один из возможных подходов – это регрессионный анализ выходов сети и соответствующих целей. В составе ПППNeuralNetworkToolboxдля этих целей предназначена М-функцияpostreg.
Следующая последовательность операторов поясняет, как можно выполнить регрессионный анализ для сети, построенной на основе процедуры с прерыванием обучения:
p = [–1:0.05:1];
t = sin(2*pi*p)+ 0.1*randn(size(p));
v.P = [–0.975:.05:0.975];
v.T = sin(2*pi*v.P)+0.1*randn(size(v.P));
net = newff([–1 1],[20,1],{'tansig','purelin'},'traingdx');
net.trainParam.show = 25;
net.trainParam.epochs = 300;
net = init(net);
[net,tr]=train(net,p,t,[],[],v);
a = sim(net,p); % Моделирование сети
figure(2)
[m,b,r] = postreg(a,t)
m = 0.99278
b = 0.0064888
r = 0.99579
Выход сети и вектор целей передаются в качестве входных аргументов функции postreg, а она возвращает параметры регрессии: первые два – m и b – определяют наклон и смещение линии регрессии в координатах цель-выход, третий – r – коэффициент корреляции. Если выходы точно равняются целям, то наклон должен быть равен 1, а смещение 0. В рассматриваемом примере можно видеть, что эти параметры действительно весьма точно отражают линейную регрессию. Коэффициент корреляции близок к 1, что указывает на существенную корреляцию между выходами и целями, т. е. малые изменения цели будут адекватно отражаться в выходах нейронной сети, что является характеристикой ее высокого качества.
а |
б |
Рис. 3.26
На рис. 3.26, а ибпоказаны соответственно результаты обучения и результаты регрессионного анализа нейронной сети, предназначенной для аппроксимации функций. Выходы сети обозначены кружками; наилучшая подгонка – пунктирной, а точная – сплошной линией. В данном случае трудно отличить наилучшую подгонку от точной, поскольку аппроксимация функции выполнена очень точно.