- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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.5. Функции адаптации и обучения Функции адаптации
Метод адаптации.В качестве метода адаптации сетей в ППП NNT применяется функция adapt, которая позволяет установить функции адаптации сети и настройки ее параметров, присваивая свойствам net.adaptFcn и net.adaptParam требуемые значения.
ADAPT |
Адаптация параметров сети |
Синтаксис:
[net,Y,E,Pf,Af] = adapt(net,P,T,Pi,Ai)
Описание:
Функция [net, Y, E, Pf, Af] = adapt(net, P, T, Pi, Ai) является методом для объектов класса network object, который реализует режим адаптации нейронной сети. Эта функция характеризуется следующими входными и выходными аргументами.
Входные аргументы:
net – имя нейронной сети;
P– массив входов;
T– вектор целей, по умолчанию нулевой вектор;
Pi– начальные условия на линиях задержки входов, по умолчанию нулевой вектор;
Ai– начальные условия на линиях задержки слоев, по умолчанию нулевой вектор.
Выходные аргументы:
net– структура объекта network object после адаптации;
Y– массив выходов;
E– массив ошибок;
Pf– начальные условия на линиях задержки входов после адаптации;
Af– начальные условия на линиях задержки слоев после адаптации.
Заметим, что входной аргумент T используется только при наличии целевых выходов. Аргументы Pi и Pf используются только в случае динамических сетей, имеющих линии задержки на входах или в слоях.
Входные аргументы P и T могут иметь 2 формата: формат cell array и double array. Формат cell array наиболее прост для понимания и соответствует последовательному представлению данных.
Последовательное представление данных. Каждую строку массива ячеек можно рассматривать как временную последовательность, и тогда описание многомерной сети может быть выполнено следующим образом:
P – массив ячеек размера NiTS, каждый элемент которого P{i, ts} – числовой массив размера RiQ;
T – массив ячеек размера NtTS, каждый элемент которого P{i, ts} – числовой массив размера ViQ;
Pi –массив ячеек размера NiID, каждый элемент которого Pi{i, k} – числовой массив размера RiQ;
Ai – массив ячеек размера NlLD, каждый элемент которого Ai{i, k} – числовой массив размера SiQ;
Y – массив ячеек размера NoTS, каждый элемент которого Y{i, ts} – числовой массив размера UiQ;
Pf – массив ячеек размера NiID, каждый элемент которого Pf{i, k} – числовой массив размера RiQ;
Af – массив ячеек размера NlLD, каждый элемент которого Af{i, k} – числовой массив размера SiQ.
Параметры описания массивов ячеек и их связь с параметрами сети показаны в следующей таблице.
Параметр описания |
Параметр сети |
Назначение |
Ni |
net.numInputs |
Количество векторов входа |
Nl |
net.numLayers |
Количество слоев |
No |
net.numOutputs |
Количество выходов |
Nt |
net.numTargets |
Количество целевых выходов |
ID |
net.numInputDelays |
Максимальное значение задержки на входе |
TS |
|
Число шагов по времени |
Q |
|
Количество реализаций для фиксированного момента времени |
LD |
net.numLayerDelays |
Максимальные значения задержек для слоев |
Ri |
net.inputs{i}.size |
Количество элементов i-го вектора входа |
Si |
net.layers{i}.size |
Количество нейронов i-го слоя |
Vi |
net.targets{i}.size |
Количество элементов i-го вектора цели |
Ui |
net.outputs{i}.size |
Количество элементов i-го вектора выхода |
Столбцы массивов начальных условий Pi, Pf, Ai, Af упорядочены следующим образом:
Pi{i, k}– значение начального условия для линии задержкиi-го входа в момент времениts = k – ID;
Pf{i, k} – значение начального условия для линии задержкиi-го входа в момент времениts = TS + k – ID;
Ai{i, k}– значение начального условия для линии задержкиi-го слоя в момент времениts = k – LD;
Af{i, k}– значение начального условия для линии задержкиi-го слоя в момент времениts = TS + k – LD.
Групповое представлениеданных можно использовать только при адаптации статических сетей (TS = 1). При этом следует помнить, что при переходе от формата последовательного представления данныхcellarrayк формату группового представленияdoublearrayмассив ячеек, содержащий, например,Niчисловых массивов размераRiQ,преобразуется в единственный числовой массив размераQ.
Следующая таблица поясняет связь этих форм представления.
-
Формат
Аргумент
Cell array
Double array
Size(P)
Size(P{I,1})
Size(P)
P
Ni1
RiQ
T
Nt1
ViQ
Pi
NiID
RiQ
Ai
NlLD
SiQ
Y
No1
UiQ
Pf
NiID
RiQ
Af
NlLD
SiQ
Алгоритм:
Метод adapt вызывает функцию адаптации, заданную свойством net.adaptFcn со значениями параметров адаптации, заданными свойством net.adaptParam. Заданную входную последовательность длиной TS циклов сеть обрабатывает следующим способом: на каждом шаге адаптации сети представляется 1 вектор последовательности и обновляются веса и смещения. Таким образом, при проходе одной последовательности параметры сети обновляются TS раз.
Сопутствующие функции: SIM, INIT, TRAIN.
Переопределяемые методы:
network\sim
network\init
network\train
ADAPTWB |
Функция установки режима адаптации |
Синтаксис:
[net,Ac,El] = adaptwb(net,Pd,Tl,Ai,Q,TS)
info = adaptwb(code)
Описание:
Функция [net, Ac, El] = adaptwb(net, Pd, Tl, Ai, Q, TS) устанавливает режим адаптации, при котором веса и смещения каждого слоя могут быть настроены с использованием собственной функции настройки. Функция adaptwb имеет следующие входные и выходные аргументы.
Входные аргументы:
net – исходная нейронная сеть;
Pd – вектор максимальных задержек по слоям;
Tl – вектор целей для слоя;
Ai – начальные условия на линиях задержки;
Q – количество реализаций для фиксированного момента времени;
TS – число шагов по времени.
Выходные аргументы:
net – структура объекта network object после адаптации;
Ac – массив выходов слоя;
El – массив ошибок для слоя.
Входные и выходные массивы характеризуются следующими размерами:
Pd – массив ячеек размера IDNiTS, каждый элемент которого Pd{i, j, ts} – числовой массив размера ZijQ;
Tl – массив ячеек размера NlTS, каждый элемент которого Tl{i, ts} – числовой массив размера ViQ, возможно пустой [];
Ai – массив ячеек размера NlLD, каждый элемент которого Ai{i, k} – числовой массив размера SiQ;
Ac – массив ячеек размера Nl(LD+TS), каждый элемент которого Ac{i, k} – числовой массив размера SiQ;
El – массив ячеек размера NlTS, каждый элемент которого El{i, k} – числовой массив размера ViQ, возможно пустой [].
Параметры описания массивов ячеек и их связь с параметрами сети представлены в следующей таблице.
Параметр описания |
Параметр сети |
Назначение |
Ni |
net.numInputs |
Количество векторов входа |
Nl |
net.numLayers |
Количество слоев |
No |
net.numOutputs |
Количество выходов |
Nt |
net.numTargets |
Количество целевых выходов |
ID |
net.numInputDelays |
Максимальное значение задержки на входе |
LD |
net.numLayerDelays |
Максимальные значения задержек для слоев |
Ri |
net.inputs{i}.size |
Количество элементов i-го вектора входа |
Si |
net.layers{i}.size |
Количество нейронов i-го слоя |
Vi |
net.targets{i}.size |
Количество элементов i-го вектора цели |
TS |
|
Число шагов по времени |
Q |
|
Количество реализаций для фиксированного момента времени |
Zij |
|
Произведение длины вектора входа слоя i на максимальное значение задержки от слоя i к слою j: Ri * length(net.inputWeights{i, j}.delays) |
Функция адаптации adaptwbимеет параметрnet.adaptParam.passes, который определяет количество проходов обучающей последовательности в процессе адаптации, по умолчанию 1.
Функция info = adaptwb(code) возвращает информацию о параметрах адаптации, соответствующую следующим значениям аргумента code:
'pnames'– имена параметров адаптации;
'pdefaults'– значения параметров адаптации по умолчанию.
Применение функции:
Функция адаптации adaptwb используется при создании сетей с помощью методов newp, newlin, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к адаптации параметров слоев, необходимо:
установить свойство сети net.adaptFcn равным 'adaptwb'. Это автоматически установит свойство net.adaptParam равным значению по умолчанию;
установить значения свойств net.layerWeights{i, j}.learnFcn, net.biases{i}.learnFcn соответствующими выбранным функциям настройки.
Для того чтобы фактически адаптировать сеть, необходимо:
выполнить инициализацию сети;
присвоить значения параметрам адаптации, т. е. свойствам net.adaptParam;
применить функцию adapt.
Алгоритм:
Веса и смещения слоя изменяются в соответствии с заданной функцией настройки на каждом шаге адаптации.
Сопутствующие функции: NEWP, NEWLIN, TRAIN.
В состав 12-го выпуска программных продуктов фирмы MathWorks включена новая обучающая функция trains, которая реализует адаптивное обучение с последовательным представлением входов и предназначена для того, чтобы в дальнейшем заменить функцию адаптации adaptwb, которая отнесена к категории устаревших (obsolete). Это означает, что при использовании метода adapt теперь следует устанавливать свойство сети net.adaptFcn равным 'trains'. Если же используется метод train, то следует установить свойство сети net.trainFcn равным 'trains'. Фактически это означает, что процедуры адаптации выводятся из употребления и заменяются процедурами обучения. Однако для сохранения преемственности с предшествующими версиями ППП NNT допустимо использовать и метод адаптации.
trains |
Адаптивное обучение с последовательным представлением входов |
Синтаксис:
[net,TR,Ac,El] = trains(net,Pd,Tl,Ai,Q,TS,VV,TV)
info = trains(code)
Описание:
Функция trainsне вызывается непосредственно. К ней обращаются методы adapt иtrain, когда свойства net.adaptFcn илиnet.trainFcnсоответствуют значению'trains'. Функцияtrainsнастраивает веса и смещения на каждом шаге адаптивного обучения. При этом реализуется последовательное представление входов.
Функция [net, TR, Ac, El] = trains(net Pd, Tl, Ai, Q, TS, VV, TV)имеет следующие входные и выходные аргументы.
Входные аргументы:
net– исходная нейронная сеть;
Pd– вектор максимальных задержек по слоям;
Tl– вектор целей для слоя;
Ai– начальные условия на линиях задержки;
Q– количество реализаций для фиксированного момента времени;
TS– число шагов по времени;
VV – структура, описывающая контрольное множество;
TV – структура, описывающая тестовое множество.
Выходные аргументы:
net– структура объекта network object после адаптации;
TR – характеристики процедуры обучения:
TR.timesteps– длина последней выборки;
TR.perf – значения функции качества на последнем цикле обучения;
Ac– массив выходов слоя для последнего цикла;
El – массив ошибок для слоя для последнего цикла.
Входные и выходные массивы характеризуются следующими размерами:
Pd – массив ячеек размера IDNiTS, каждый элемент которого Pd{i, j, ts} – числовой массив размераZijQ;
Tl – массив ячеек размера NlTS, каждый элемент которогоTl{i, ts} – числовой массив размера ViQ, возможно пустой [];
Ai – массив ячеек размера NlLD, каждый элемент которого Ai{i, k} – числовой массив размера SiQ;
Ac – массив ячеек размера Nl(LD+TS), каждый элемент которого Ac{i, k} – числовой массив размера SiQ;
El – массив ячеек размера NlTS, каждый элемент которого El{i, k} – числовой массив размера ViQ, возможно пустой [].
Параметры описания массивов ячеек и их связь с параметрами сети представлены в следующей таблице.
Параметр описания |
Параметр сети |
Назначение |
Ni |
net.numInputs |
Количество векторов входа |
Nl |
net.numLayers |
Количество слоев |
No |
net.numOutputs |
Количество выходов |
Nt |
net.numTargets |
Количество целевых выходов |
ID |
net.numInputDelays |
Максимальное значение задержки на входе |
LD |
net.numLayerDelays |
Максимальные значения задержек для слоев |
Ri |
net.inputs{i}.size |
Количество элементов i-го вектора входа |
Si |
net.layers{i}.size |
Количество нейронов i-го слоя |
Vi |
net.targets{i}.size |
Количество элементов i-го вектора цели |
TS |
|
Число шагов по времени |
Q |
|
Количество реализаций для фиксированного момента времени |
Zij |
|
Произведение длины вектора входа слоя i на максимальное значение задержки от слоя i к слою j: Ri * length(net.inputWeights{i, j}.delays) |
Функция адаптивного обучения trains имеет параметр net.trainParam.passes, который определяет количество проходов обучающей последовательности в процессе адаптации, по умолчанию 1.
Функция trainsне использует для оценки представительности выборки контрольного и тестового подмножеств, поэтому входные аргументы VV и TV игнорируются.
Функция info = trains(code)возвращает информацию о параметрах адаптивного обучения, соответствующую следующим значениям аргумента code:
'pnames'– имена параметров адаптивного обучения;
'pdefaults'– значения параметров адаптивного обучения, принимаемые по умолчанию.
Применение функции:
Чтобы сформировать нейронную сеть, используя функцию адаптивного обучения trains, следует:
установить свойство net.adaptFcn равным 'trains'. Это автоматически установит свойство net.adaptParam равным значению по умолчанию;
установить значения свойств net.layerWeights{i, j}.learnFcn, net.biases{i}.learnFcn соответствующими выбранным функциям настройки.
Для того чтобы фактически выполнить адаптивное обучение сети, необходимо:
установить желаемые значения параметров настройки весов и смещений;
вызвать функцию adapt.
Алгоритм:
Элементы матриц весов и векторов смещения изменяются в соответствии с заданной функцией настройки на каждом шаге адаптивного обучения.
Пример:
Создать нейронную сеть на основе персептрона с вектором входа из двух элементов со значениями из диапазона [–2 2] и выполнить адаптивное обучение, используя функцию trains.
Формирование персептрона:
net = newp([–2 2;–2 2],1);
Формирование векторов входа и цели:
P = {[2;2] [1;–2] [–2;2] [–1;1]};
T = {[0] [1] [0] [1]};
Адаптивное обучение с использованием трех циклов:
net.adaptFcn = 'trains';
net.adaptParam.passes = 3;
[net,a,e]=adapt(net,P,T);
а
а = 0 1 0 1
Выход сети после адаптивного обучения полностью совпадает с вектором целей.
Сформировать линейную динaмическую нейронную сеть с одним выходом, линией задержки на входе [0 1], диапазоном изменения элементов входа [–1 1] и адаптивно обучить ее за 80 проходов с параметром скорости обучения 0.01.
Формирование сети:
net = newlin([–1 1],1,[0 1],0.01);
Формирование векторов входа и цели:
P1 = {0 –1 1 1 0 –1 1 0 0 1};
T1 = {0 –1 0 2 1 –1 0 1 0 1};
Адаптивное обучение:
net.trainFcn='trains';
net.trainParam.passes = 80;
[net,TR]=train(net,P1,T1);
Выполним моделирование сети при заданном входе:
Y = sim(net,P1); Y = [Y{:}]
Y = 0.0201 –0.9411 0.0282 1.9344 0.9732
–0.9411 0.0282 0.9732 0.0201 0.9813
Результат моделирования близок к вектору целей. При этом среднеквадратичная ошибка составляет
E = mse(Y–[T1{:}])
E = 0.0015
Сопутствующие функции: NEWP, NEWLIN, TRAIN, TRAINB, TRAINC, TRAINR.