- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
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для записи текста. По умолчанию оно содержит строку 'Putyourcustominputinformationhere.' – "Информацию разместите здесь".
Описание слоев
Ниже приведено описание полей структуры, которая используется для описания каждого слоя нейронной сети 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для записи текста. По умолчанию оно содержит строку 'Putyourcustominputinformationhere.' – "Информацию разместите здесь".