- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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.6.1. Функции одномерного поиска
Функции поиска одномерного экстремума используются при расчете весов и смещений в процессе обучения с применением методов сопряженного градиента и квазиньютоновых методов.
Рассмотренные алгоритмы обучения и настройки – это стратегии, которые обеспечивают минимизацию некоторого функционала качества. В процессе работы этих алгоритмов, как правило, возникает задача одномерного поиска минимума вдоль заданного направления. Это могут быть направления антиградиента или сопряженные направления. В рамках ППП Neural Network Toolbox используется 5 функций одномерного поиска. При работе того или иного алгоритма они задаются параметром srchFcn, который определяет имя функции поиска. Для многих процедур эта функция задается по умолчанию, но она может быть изменена по желанию пользователя при определении процедуры обучения или функции настройки.
Аргументы входов и выходов для всех функций одномерного поиска одинаковы и имеют следующие значения.
Входные аргументы:
net – нейронная сеть;
X – вектор текущих параметров сети;
Pd – векторы входа с учетом запаздывания;
Tl – векторы целей для слоя;
Ai – начальные значения на ЛЗ;
Q – количество реализаций векторов входа;
TS – шаг по времени;
dX – вектор приращений настраиваемых параметров;
gX – вектор градиента функционала по настраиваемым параметрам;
perf – значение функционала качества для текущего вектора настраиваемых параметров X;
dperf – производная функционала качества в текущей точке X в направлении dX;
delta – начальный размер шага;
tol – допустимая точность поиска экстремума;
ch_perf – изменение значения функционала качества на предшествующем шаге.
Выходные аргументы:
A – размер шага, доставляющий минимум функционалу качества;
gX – градиент в точке минимума;
perf – значение функционала качества в точке минимума;
retcode – трехэлементный код завершения. Первые 2 элемента определяют, сколько вычислений функции потребовалось на каждом из двух этапов минимизации; третий элемент – код возврата, который фиксирует следующие события:
-
Код возврата
Событие
0
Нормальное завершение
1
Использован минимальный шаг
2
Использован максимальный шаг
3
Условие выбора шага не выполнено
delta – новое значение шага поиска;
tol – обновленная допустимая точность при поиске.
Используемые массивы имеют следующие размеры:
Pd – массив ячеек размера NoNiTS, каждый элемент которого Pd{i,j,ts} – числовой массив размера DijQ;
Tl – массив ячеек размера NlTS, каждый элемент которогоTl{i,ts} – числовой массив размера ViQ;
Ai – массив ячеек размера NlLD, каждый элемент которого Ai{i,k} – числовой массив размера SiQ.
Параметры описания массивов ячеек и их связь с параметрами сети представлены в следующей таблице.
-
Параметр описания
Параметр сети
Назначение
Ni
net.numInputs
Количество векторов входа
Nl
net.numLayers
Количество слоев
No
net.numOutputs
Количество выходов
LD
net.numLayerDelays
Максимальные значения задержек для слоев
Ri
net.inputs{i}.size
Количество элементов i-го вектора входа
Si
net.layers{i}.size
Количество нейронов i-го слоя
Vi
net.targets{i}.size
Количество элементов i-го вектора цели
Dij
Произведение длины вектора входа слоя i на максимальное значение задержки от слоя i к слою j:
Ri * length(net.inputWeights{i, j}.delays)
SRCHGOL |
Одномерная минимизация методом золотого сечения |
Синтаксис:
[A,gX,perf,retcode,delta,tol] = srchgol(net,X,Pd,Tl,Ai,Q,TS,dX,gX,perf,dperf,delta,tol,ch_perf)
Описание:
Функция srchgol реализует одномерный поиск минимума функционала в заданном направлении. Программа использует метод золотого сечения.
Процедура srchgol имеет следующие параметры:
-
Параметр
Назначение
alpha
Коэффициент, определяющий порог уменьшения критерия качества
bmax
Максимальный размер шага
scal_tol
Параметр, связывающий погрешность tol с шагом delta
Значения для этих параметров устанавливаются по умолчанию при выборе одной из следующих функций обучения: traincgf,traincgb,traincgp,trainbfg,trainoss.
Применение функции:
Функция одномерного поиска srchgol используется при обучении и настройке сетей с помощью методов newff, newcf, newelm.
Для того чтобы подготовить сеть к обучению, например, с помощью функции traincgf, используя функцию srchgol, следует:
установить свойство net.trainFcn равным 'traincgf'. Это автоматически установит свойство net.trainParam, соответствующее параметрам функции traincgf;
установить свойство net.trainParam.searchFcn равным 'srchgol'.
Пример:
Заданы векторы входа p и целей t, требуется сформировать нейронную сеть, выходы которой близки к заданным целям:
p = [0 1 2 3 4 5];
t = [0 0 0 1 1 1];
Выберем архитектуру двухслойной сети с прямой передачей сигнала; зададим диапазон входов от 0 до 10, первый слой имеет 2 нейрона с функцией активации tansig, второй – 1 нейрон с функцией активации logsig. Используем функции обучения traincgf и поиска одномерного экстремума srchgol:
net = newff([0 10],[2 1],{'tansig','logsig'},'traincgf');
net.trainParam.searchFcn = 'srchgol';
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.0001;
net = train(net,p,t);
a = sim(net,p)
a = 0.0041 0.0042 0.0133 0.9840 0.9983 0.9984
Алгоритм:
Функция srchgol находит минимум функционала ошибки обучения в направлении dX, используя метод золотого сечения, реализованный в виде алгоритма, предложенного в работе [41].
Сопутствующие функции: SRCHBAC, SRCHBRE, SRCHCHA, SRCHHYB.
SRCHBRE |
Одномерная минимизация методом Брента |
Синтаксис:
[A,gX,perf,retcode,delta,tol] = srchbre(net,X,Pd,Tl,Ai,Q,TS,dX,gX,perf,dperf,delta,tol,ch_perf)
Описание:
Функция srchbre реализует одномерный поиск экстремума функционала в заданном направлении. Программа использует метод Брента, который является комбинацией метода золотого сечения и квадратичной интерполяции.
Процедура srchbre имеет следующие параметры:
-
Параметр
Назначение
alpha
Коэффициент, определяющий порог уменьшения критерия качества
beta
Коэффициент, определяющий выбор шага
bmax
Максимальный размер шага
scal_tol
Параметр, связывающий погрешность tol с шагом delta
Значения для этих параметров устанавливаются по умолчанию при выборе одной из следующих функций обучения: traincgf,traincgb,traincgp,trainbfg,trainoss.
Применение функции:
Функция одномерного поиска srchbre используется при обучении и настройке сетей с помощью методов newff, newcf, newelm.
Для того чтобы подготовить сеть к обучению, например, с помощью функции traincgf, используя функцию srchbre, следует:
установить свойство net.trainFcn равным 'traincgf'. Это автоматически установит свойство net.trainParam, соответствующее параметрам функции traincgf;
установить свойство net.trainParam.searchFcn равным 'srchbre'.
Функция srchbreможет использоваться с любой из перечисленных обучающих функций:traincgf,traincgb,traincgp,trainbfg,trainoss.
Пример:
Заданы векторы входа p и целей t, требуется сформировать нейронную сеть, выходы которой близки к заданным целям:
p = [0 1 2 3 4 5];
t = [0 0 0 1 1 1];
Выберем архитектуру двухслойной сети с прямой передачей сигнала; зададим диапазон входов от 0 до 10, первый слой имеет 2 нейрона с функцией активации tansig, второй – 1 нейрон с функцией активации logsig. Используем функции обучения traincgf и поиска одномерного экстремума srchbre:
net = newff([0 10],[2 1],{'tansig','logsig'},'traincgf');
net.trainParam.searchFcn = 'srchbre';
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.0001;
net = train(net,p,t);
a = sim(net,p)
a = 0.0013 0.0013 0.0104 0.9954 0.9981 0.9981
Алгоритм:
Функция srchbre находит минимум ошибки обучения в направлении dX, используя алгоритм Брента, который является комбинацией метода золотого сечения и квадратичной интерполяции [4].
Сопутствующие функции: SRCHBAC, SRCHCHA, SRCHGOL, SRCHHYB.
SRCHHYB |
Одномерная минимизация на основе гибридного метода |
Синтаксис:
[A,gX,perf,retcode,delta,tol] = srchhyb(net,X,P,T,Q,TS,dX,gX,perf,dperf,delta,tol,ch_perf)
Описание:
Функция srchhyb реализует одномерный поиск минимума функционала в заданном направлении. Программа использует гибридный метод половинного деления и кубической интерполяции.
Процедура srchhyb имеет следующие параметры:
-
Параметр
Назначение
alpha
Коэффициент, определяющий порог уменьшения критерия качества
beta
Коэффициент, определяющий выбор шага
bmax
Максимальный размер шага
scale_tol
Параметр, связывающий погрешность tol с шагом delta
Применение функции:
Функция одномерного поиска srchhyb используется при обучении и настройке сетей с помощью методов newff, newcf, newelm.
Для того чтобы подготовить сеть к обучению, например, с помощью функции traincgf, используя функцию srchhyb, следует:
установить свойство net.trainFcn равным 'traincgf'. Это автоматически установит свойство net.trainParam, соответствующее параметрам функции traincgf;
установить свойство net.trainParam.searchFcn равным 'srchhyb'.
Функция srchhyb может использоваться с любой из следующих обучающих функций: traincgf,traincgb,traincgp,trainbfg,trainoss.
Пример:
Заданы векторы входа p и целей t, требуется сформировать нейронную сеть, выходы которой близки к заданным целям:
p = [0 1 2 3 4 5];
t = [0 0 0 1 1 1];
Выберем архитектуру двухслойной сети с прямой передачей сигнала; зададим диапазон входов от 0 до 10, первый слой имеет 2 нейрона с функцией активации tansig, второй – 1 нейрон с функцией активации logsig. Используем функции обучения traincgf и поиска одномерного экстремума srchhyb:
net = newff([0 10],[2 1],{'tansig','logsig'},'traincgf');
net.trainParam.searchFcn = 'srchhyb';
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.0001;
net = train(net,p,t);
a = sim(net,p)
a = 0.0000 0.0000 0.0001 1.0000 1.0000 1.0000
Алгоритм:
Функция srchhyb находит минимум ошибки обучения в направлении dX, используя гибридный алгоритм, который является комбинацией метода золотого сечения и кубической интерполяции [41].
Сопутствующие функции: SRCHBAC, SRCHBRE, SRCHCHA, SRCHGOL.
SRCHCHA |
Одномерная минимизация на основе метода Чараламбуса |
Синтаксис:
[A,gX,perf,retcode,delta,tol] = srchcha(net,X,Pd,Tl,Ai,Q,TS,dX,gX,perf,dperf,delta,tol,ch_perf)
Описание:
Функция srchcha реализует одномерный поиск минимума функционала в заданном направлении. Программа использует метод Чараламбуса.
Процедура srchcha имеет следующие параметры:
-
Параметр
Назначение
alpha
Коэффициент, определяющий порог уменьшения критерия качества
beta
Коэффициент, определяющий выбор шага
gama
Параметр, регулирующий изменение критерия качества
scale_tol
Параметр, связывающий погрешность tol с шагом delta
Применение функции:
Функция одномерного поиска srchcha используется при обучении и настройке сетей с помощью методов newff, newcf, newelm.
Для того чтобы подготовить сеть к обучению, например, с помощью функции traincgf, используя функцию srchcha, следует:
установить свойство net.trainFcn равным 'traincgf'. Это автоматически установит свойство net.trainParam, соответствующее параметрам функции traincgf;
установить свойство net.trainParam.searchFcn равным 'srchcha'.
Функция srchcha может использоваться с любой из следующих обучающих функций: traincgf,traincgb,traincgp,trainbfg,trainoss.
Пример:
Заданы векторы входа p и целей t, требуется сформировать нейронную сеть, выходы которой близки к заданным целям:
p = [0 1 2 3 4 5];
t = [0 0 0 1 1 1];
Выберем архитектуру двухслойной сети с прямой передачей сигнала; зададим диапазон входов от 0 до 10, первый слой имеет 2 нейрона с функцией активации tansig, второй – 1 нейрон с функцией активации logsig. Используем функции обучения traincgf и поиска одномерного экстремума srchcha:
net = newff([0 10],[2 1],{'tansig','logsig'},'traincgf');
net.trainParam.searchFcn = 'srchcha';
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.0001;
net = train(net,p,t);
a = sim(net,p)
a = 0.0020 0.0021 0.0115 0.9897 0.9972 0.9973
Алгоритм:
Функция srchhyb находит минимум ошибки обучения в направлении dX, используя метод Чараламбуса [8].
Сопутствующие функции: SRCHBAC, SRCHBRE, SRCHGOL, SRCHHYB.
SRCHBAC |
Одномерная минимизация на основе метода перебора с возвратами |
Синтаксис:
[a,gX,perf,retcode,delta,tol] = srchbac(net,X,Pd,Tl,Ai,Q,TS,dX,gX,perf,dperf,delta,tol,ch_perf)
Описание:
Функция srchbac реализует одномерный поиск минимума функционала в заданном направлении. Программа использует метод перебора с возвратами.
Процедура srchbac имеет следующие параметры:
-
Параметр
Назначение
alpha
Коэффициент, определяющий порог уменьшения критерия качества
beta
Коэффициент, определяющий выбор шага
low_lim
Нижняя граница изменения шага
up_lim
Верхняя граница изменения шага
maxstep
Максимальное значение шага
minstep
Минимальное значение шага
scale_tol
Параметр, связывающий погрешность tol с шагом delta
Применение функции:
Функция одномерного поиска srchbac используется при обучении и настройке сетей с помощью методов newff, newcf, newelm.
Для того чтобы подготовить сеть к обучению, например, с помощью функции traincgf, используя функцию srchbac, следует:
установить свойство net.trainFcn равным 'traincgf'. Это автоматически установит свойство net.trainParam, соответствующее параметрам функции traincgf;
установить свойство net.trainParam.searchFcn равным 'srchbac'.
Функция srchcha может использоваться с любой из следующих обучающих функций: traincgf,traincgb,traincgp,trainbfg,trainoss.
Пример:
Заданы векторы входа p и целей t, требуется сформировать нейронную сеть, выходы которой близки к заданным целям:
p = [0 1 2 3 4 5];
t = [0 0 0 1 1 1];
Выберем архитектуру двухслойной сети с прямой передачей сигнала; зададим диапазон входов от 0 до 10, первый слой имеет 2 нейрона с функцией активации tansig, второй – 1 нейрон с функцией активации logsig. Используем функции обучения traincgf и поиска одномерного экстремума srchbac:
net = newff([0 10],[2 1],{'tansig','logsig'},'traincgf');
net.trainParam.searchFcn = 'srchbac';
net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.0001;
net = train(net,p,t);
a = sim(net,p)
a = 0.0024 0.0025 0.0119 0.9851 0.9951 0.9952
Алгоритм:
Функция srchbac находит минимум функционала качества обучения в направлении dX,используя алгоритм перебора с возвратами [9].
Сопутствующие функции: SRCHBRC, SRCHCHA, SRCHGOL, SRCHHYB.