- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
Часть2. Операторы, функции и команды
10. Вычислительная модель нейронной сети
ППП NeuralNetworkToolboxиспользует специальный класс объектовnetworkobject. Эти объекты представлены в ППП в виде массивов записей, поля которых определяют их свойства, характеристики и параметры. Массивы записей позволяют задать вычислительную модель нейронной сети, для которой используется стандартное имяnet, являющееся также и именем массива записей.
10.1. Описание сети Описание архитектуры
Архитектура нейронной сети характеризуется количеством входов, слоев, выходов, целей, смещений, а также топологией их соединения. Перечисленные ниже поля массива записей netопределяют свойства нейронной сети, связанные с ее архитектурой.
|
net |
Тип |
Размер |
Значение по умолчанию |
Имя поля |
|
.numInputs |
Integer >= 0 |
11 |
0 |
Количество входов сети |
|
.numLayers |
Integer >= 0 |
11 |
0 |
Количество слоев |
|
.biasConnect |
Boolean array |
NumLayers1 |
[ ] |
Матрица связности для смещений |
|
.inputConnect |
Boolean array |
NumLayers NumInputs |
[ ] |
Матрица связности для входов |
|
.layerConnect |
Boolean array |
NumLayers NumLayers |
[ ] |
Матрица связности для слоев |
|
.outputConnect |
Boolean array |
1NumLayers |
[ ] |
Матрица связности для выходов |
|
.targetConnect |
Boolean array |
1NumLayers |
[ ] |
Матрица связности для целей |
|
.numOutputs |
Integer >= 0 (только для чтения) |
11 |
0 |
Количество выходов сети |
|
.numTargets |
Integer >= 0 (только для чтения) |
11 |
0 |
Количество целей сети |
|
.numInputDelays |
Integer >= 0 (только для чтения) |
11 |
0 |
Максимальное значение задержки для входов сети |
|
.numLayerDelays |
Integer >= 0 (только для чтения) |
11 |
0 |
Максимальное значение задержки для слоев сети |
numInputsчисло входов
Количество векторов входа сети. Количество векторов входа следует отличать от количества элементов вектора входа. Число входов задается целым положительным числом и указывает, как много векторов входа подано на сеть; по умолчанию 0. В свою очередь, количество элементов каждого входного вектора задается свойством inputs{i}.size. Любое изменение свойства numInputs будет влиять на размеры матрицы связностиinputConnectи массивов ячеек inputs{i}.
numLayersчисло слоев
Количество слоев. Число слоев задается целым положительным числом; по умолчанию 0. Любое изменение этого свойства будет влиять на размер матриц связностиbiasConnect,inputConnect,layerConnect,outputConnect,targetConnect, а также размеры массивов весов и смещенийIW,LW,b.
biasConnectматрица связности
Матрица связности для смещений. Это одномерная булева матрица размера Nl1, где Nl – количество слоев, определяемых свойством numLayers. Наличие или отсутствие смещения в слоеiотмечается в элементе вектораbiasConnect(i)как 1 или 0 соответственно. Наличие смещения означает, что в массивах ячеекbiases{i}иb{i}будут созданы структуры, задающие все характеристики смещения.
inputConnectматрица связности
Матрица связности для входов. Это булева матрица размера NlNi, где Nl – количество слоев, определяемых свойством numLayers, иNi – количество входов, определяемых свойством numInputs. Наличие или отсутствие веса при связывании слояiсо слоем j отмечается в элементе матрицыinputConnect(i, j)как 1 или 0 соответственно.Наличие веса означает, что в массивах ячеекinputWeights{i}иIW{i}будут созданы структуры, задающие характеристики весов входа.
layerConnectматрица связности
Матрица связности для слоев. Это булева матрица размера NlNl, где Nl – количество слоев, определяемых свойством numLayers. Наличие или отсутствие веса в слоеiпо входуjотмечается в элементе матрицыlayerConnect(i, j)как 1 или 0 соответственно. Наличие веса означает, что в массивах ячеекlayerWeights{i}иLW{i}будут созданы структуры, задающие характеристики весов слоя.
outputConnectматрица связности
Матрица связности для выходов. Это одномерная булева матрица размера 1Nl, где Nl – количество слоев, определяемых свойством numLayers. Наличие или отсутствие выхода в слоеiотмечается в элементе вектораoutputConnect(i)как 1 или 0 соответственно. Наличие выхода изменяет значение свойства numOutputs и означает, что в массиве ячеекoutputs{i}будет сформирована структура, задающая характеристики выхода.
targetConnectматрица связности
Матрица связности для целей. Это одномерная булева матрица размера 1Nl, где Nl – количество слоев, определяемых свойством numLayers. Наличие или отсутствие целевого выхода в слоеiотмечается в элементе вектораtargetConnect(i)как 1 или 0 соответственно.Наличие цели изменяет значение свойства numTargets и означает, что в массиве ячеекtargets{i}будет сформирована структура, задающая характеристики целевого выхода.
numOutputsчисло выходов (только для чтения)
Количество выходов. Число выходов определяется количеством единиц в матрице связности для выходов; по умолчанию 0. Оно может быть вычислено следующим образом:
numOutputs = sum(outputConnect)
numTargets число целей (только для чтения)
Количество целевых выходов. Число целей определяется количеством единиц в матрице связности для целей; по умолчанию 0. Оно может быть вычислено следующим образом
numOutputs = sum(targetConnect)
numInputDelays максимальное значение задержки (только для чтения)
Максимальное значение задержкидля входов. Это свойство определяетмаксимальное значение задержки для входных последовательностей, по умолчанию 0. Оно может быть вычислено следующим образом:
numInputDelays = 0;
for i=1:net.numLayers
for j=1:net.numInputs
if net.inputConnect(i,j)
numInputDelays = max( ...
[numInputDelays net.inputWeights{i,j}.delays]);
end
end
end
numLayerDelaysмаксимальное значение задержки (только для чтения)
Максимальное значение задержкидля слоев. Это свойство определяетмаксимальное значение задержки для всех слоев сети, по умолчанию 0. Оно может быть вычислено следующим образом:
numLayerDelays = 0;
for i=1:net.numLayers
for j=1:net.numLayers
if net.layerConnect(i,j)
numLayerDelays = max( ...
[numLayerDelays net.layerWeights{i,j}.delays]);
end
end
end