- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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.1.2. Слежение за нестационарным сигналом
- •Инициализация сети
- •Проверка сети
- •9.1.3. Моделирование стационарного фильтра
- •Постановка задачи
- •Синтез сети
- •Проверка сети
- •9.1.4. Моделирование нестационарного фильтра
- •Постановка задачи
- •Инициализация сети
- •Проверка сети
- •9.2. Распознавание образов
- •Постановка задачи
- •Нейронная сеть
- •Архитектура сети
- •Инициализация сети
- •Обучение
- •Обучение в отсутствие шума
- •Обучение в присутствии шума
- •Повторное обучение в отсутствие шума
- •Эффективность функционирования системы
- •9.3. Нейронные сети и системы управления
- •9.3.1. Регулятор с предсказанием
- •9.3.2. Регулятор narma-l2
- •9.3.3. Регулятор на основе эталонной модели
- •Функции инициализации, адаптации и обучения
- •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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
- •1. Система matlab 6 9
- •2. Модель нейрона и архитектура сети 33
- •3. Обучение нейронных сетей 47
- •10. Вычислительная модель нейронной сети 228
- •11. Формирование моделей нейронных сетей 245
10.2. Описание элементов сети
Эти свойства задаются с помощью массивов ячеек, которые включают структуры для описания входов, слоев, выходов, целей, смещений и весов.
Описание входов
Ниже приведено описание полей структуры, которая используется для описания каждого входа сети net.inputs{i}.
|
net |
Тип |
Размер |
Значение по умолчанию |
Имя поля |
|
|
.inputs{i} |
Cell array |
numInputs1 |
{01} |
Описатель i-го входа сети |
|
|
.range |
Double array |
size2 |
[ ] |
Допустимый диапазон значений |
|
|
.size |
Integer >= 0 |
11 |
0 |
Количество элементов вектора входа |
|
|
.userdata |
Struct |
11 |
11 |
Информация пользователя |
|
|
|
.note |
Char |
1var |
'Put your custom input information here.' |
Текст |
inputs массив ячеек
Описатель входов сети. Массив ячеек размера Ni1, где Ni – число входов сети, равное numInputs, состоящий из ячеек inputs{i}, каждая из которых является массивом записей для описания i-го входа сети.
range массив значений
Допустимый диапазон значений для элементов векторов входа. Это свойство определяет границы допустимых значений для элементов каждого вектора входа сети и является числовым массивом размера Ri2, где Ri – число элементов i-го вектора входа равное значению поля inputs{i}.size. Это свойство используется некоторыми функциями инициализации сети, чтобы вычислить начальные значения для матриц весов входа. При изменении числа строк массива range будут автоматически изменяться параметры inputs{i}.size, inputWeights{:, i}.size, а также размер матриц весов входа IW{:, i}.
size количество элементов
Количество элементов вектора входа. Это свойство определяет количество элементов для каждого вектора входа inputs{i} и может принимать только неотрицательные значения (по умолчанию 0). При изменении значения этого свойства будут автоматически изменяться параметр inputWeights{:, i}.size, а также размеры матриц inputs{i}.range и IW{:, i}.
userdata массив записей
Поле для записи информации пользователя. Это свойство обеспечивает место для записи информации, относящейся к входу i сети. Предусмотрено только одно поле inputs{i}.userdata.note для записи текста. По умолчанию оно содержит строку 'Put your custom input information here.' – "Информацию разместите здесь".
Описание слоев
Ниже приведено описание полей структуры, которая используется для описания каждого слоя нейронной сети net.layers{i}.
|
net |
Тип |
Размер, состав |
Значение по умолчанию |
Имя поля |
||
|
.layers{i} |
Cell array |
numLayers1 |
{01} |
Описатель i-го слоя сети |
||
|
.dimensions |
Double array |
1numdim |
[ ] |
Распределение нейронов по размерностям слоя |
||
|
.distanceFcn |
Char |
boxdist | dist| linkdist|mandist |
‘ ‘ |
Функции вычисления расстояния между нейронами |
||
|
.distances |
Double array(только для чтения) |
|
[ ] |
Расстояния между нейронами |
||
|
.initFcn |
Char |
initnw | initwb |
‘ ‘ |
Функции инициализации |
||
|
.netInputFcn |
Char |
netprod | netsum |
‘ ‘ |
Функции накопления |
||
|
.positions |
Array (только для чтения) |
|
[ ] |
Положения нейронов |
||
|
.size |
Integer >= 0
|
11 |
0 |
Количество нейронов |
||
|
.topologyFcn |
Char |
gridtop | hextop | randtop |
‘ ‘ |
Функции топологии |
||
|
.transferFcn |
Char |
compet | hardlim | hardlims | logsig | poslin | purelin | radbas | satlin | satlins | softmax | tansig | tribas |
‘ ‘ |
Функции активации |
||
|
.userdata |
Struct |
11 |
11 |
Информация пользователя |
||
|
|
.note |
Char |
1var |
'Put your custom input information here.' |
Текст |
|
layers массив ячеек
Описатель слоев нейронной сети. Массив ячеек размера Nl1, где Nl – число слоев сети, равное numLayers, состоящий из ячеек layers{i}, каждая из которых является массивом записей для описания i-го слоя сети.
dimensions вектор распределения по размерностям
Распределение нейронов по размерностям слоя. Это свойство позволяет описывать многомерные слои нейронов реальных геометрических размерностей: 1-, 2-, 3-мерные. Многомерный слой размерности numdim может быть задан вектор-строкой, элементы которой указывают число нейронов по каждой размерности, тогда их произведение будет определять общее количество нейронов в многомерном слое layers{i}.size. Знание этого свойства необходимо для определения положений нейронов layers{i}.positions, если известна функция топологии слоя layers{i}.topologyFcn. При изменении значения этого свойства будут автоматически изменяться параметр layers{i}.size, а также положения нейронов layers{i}.positions и расстояния между ними layers{i}.distances.
distanceFcn boxdist | dist | linkdist | mandist
Функция оценки расстояния между нейронами. Свойство layers{i}.distanceFcn задает функцию, которая используется для вычисления расстояния между нейронами в слое i. При замене функции будут автоматически пересчитаны значения расстояний между нейронами слоя layers{i}.distances. Пользователь может расширить список применяемых функций оценки расстояния.
distances значение расстояний (только для чтения)
Расстояния между нейронами. Cвойство layers{i}.distances определяет расстояния между нейронами в i-м слое. Их значения зависят от используемой функции оценки расстояния layers{i}.distanceFcn.
initFcn initnw | initwb
Функция инициализации слоя. Это свойство определяет, какая функция инициализации layers{i}.initFcn применяется для слоя i. Если свойство net.initFcn имеет значение initlay, то будет применяться указанная функция инициализации слоя при вызове функции net = = init(net). Пользователь может расширить список применяемых функций инициализации.
netInputFcn netprod | netsum
Функция накопления. Это свойство определяет, какая функция накопления layers{i}.netInputFcn применяется для слоя i. Пользователь может расширить список применяемых функций накопления.
positions положения нейронов (только для чтения)
Размещение нейронов в слое. Это свойство определяет положения нейронов layers{i}.positions в i-м слое. Их значения зависят от используемой функции топологии многомерного слоя layers{i}.topologyFcn и его размера layers{i}.dimensions. Для построения графика расположения нейронов в многомерном слое рекомендуется использовать М-функцию plotsom.
Пример:
Если первый двумерный слой нейронной сети net имеет вектор распределения по размерностям net.layers{1}.dimensions, равный [4 5], а функция топологии слоя net.layers{1}.topologyFcn – hextop, то нейроны этого слоя будут расположены, как показано на рис. 10.1.
plotsom(net.layers{1}.positions)
Рис. 10.1
size количество элементов
Количество нейронов в слое. Это свойство определяет количество нейронов в слое layers{i}.size и может принимать только неотрицательные значения (по умолчанию 0). При изменении значения этого свойства будут автоматически изменяться параметры inputWeights{i, :}.size, layerWeights{i, :}.size, biases{i}.size, а также размеры матриц весов IW{i, :}, LW{i, :}, LW{:, i} и смещений b{i}. Кроме того, изменяются параметры outputs{i}.size и targets{i}.size, если для нейронной сети заданы выходы и цели. Наконец, при изменении этого свойства изменяется параметр размера нейронного слоя layers{i}.dimensions, которому присваивается значение свойства layers{i}.size. Это приводит к тому, что слой i преобразуется в одномерный; если необходимо сохранить многомерную структуру слоя, то следует изменить значения элементов вектора layers{i}.dimensions.
topologyFcn gridtop | hextop | randtop
Функция задания топологии слоя. Это свойство определяет функцию, которая используется для вычисления положений нейронов layers{i}.positions в слое i. При замене функции эти положения будут пересчитаны автоматически. Пользователь может расширить список применяемых функций задания топологии.
Пример:
Если первый двумерный слой нейронной сети net имеет вектор распределения по размерностям net.layers{1}.dimensions, равный [8 10], а функция топологии слоя net.layers{1}.topologyFcn – randtop, то расположение нейронов этого слоя будет таким, как показано на рис. 10.2
plotsom(net.layers{1}.positions)
Рис. 10.2
transferFcn compet | hardlim | hardlims | logsig | poslin | purelin | radbas | satlin | satlins | softmax | tansig | tribas
Функция активации слоя. Это свойство определяет функцию активации layers{i}.transferFcn, которая используется для задания нейрона в слое i. Пользователь может расширить список применяемых функций активации.
userdata массив записей
Поле для записи информации пользователя. Это свойство обеспечивает место для записи информации, относящейся к слою i нейронной сети. Предусмотрено только одно поле inputs{i}.userdata.note для записи текста. По умолчанию оно содержит строку 'Put your custom input information here.' – "Информацию разместите здесь".
