- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
Операции с массивами данных
Входной массив P, соответствующий TS моментам времени, может быть представлен в виде массива ячеек Pseq, каждая из которых содержит данные для фиксированного момента времени (сечение по времени):
Pseq = { [p1(1), p2(1), …, pQ(1)] [p1(2), p2(2), …, pQ(2)] ……… [p1(TS),p2(TS), …,pQ(TS)] }.
Этот массив имеет TS ячеек, каждая из которых содержит числовой массив размера RQ.
Такое описание входного массива ячеек соответствует последовательному представлениюнаблюдаемых данных во времени.
Если сформировать временные последовательности, то входной массив Р можно описать иначе. Тогда можно говорить о том, что на вход сети подается R реализаций из интервала времени [1 TS], которые могут быть описаны следующим числовым массивом Pcon:
Pcon = [ [p1(1), p1(2), …, p1(TS)]; [p2(1), p2(2), …, p2(TS)]; ……. ; [pQ(1), pQ(2), …, pQ(TS)] ].
Представление входов как числового массива реализаций в формате doubleсоответствуетгрупповому представлениюданных.
CELL2MAT |
Преобразование массива числовых ячеек в массив double |
Синтаксис:
M = cell2mat(C)
Описание:
Функция M=cell2mat(C) преобразует массив числовых ячеек C = {M11 M12 ... ; M21 M22 ... ; ...} в числовой массив M = [M11 M12 ...; M21 M22 ... ; ...].
Пример:
С = {[1 2] [3]; [4 5; 6 7] [8; 9]};
cellplot(С) % Рис. 11.63
Рис. 11.63
M = cell2mat(С)
M =
1 2 3
4 5 8
6 7 9
Сопутствующие функции: MAT2CELL.
COMBVEC |
Объединение выборок разных размеров |
Синтаксис:
P=combvec(P1,P2, …)
Описание:
Функция P=combvec(P1,P2, …) объединяет выборки разных размеров в единую выборку по следующему правилу. Процедура выполняется рекуррентно так, что на каждом шаге объединяются только 2 выборки. Рассмотрим первый шаг, когда объединяются массивыP1 размераm1n1 иP2 размераm2n2. Тогда образуется массив вида
P = .
Этот массив имеет m1+m2 строк иn1n2 столбцов. На следующем шаге массивРпринимается заР1, а массивР3 – за массивР2 и процедура повторяется.
Пример:
Рассмотрим следующие 2 выборки Р1 и Р2 и рассчитаем объединенную выборку Р:
P1 = [1 2 3;
4 5 6];
P2 = [7 8;
9 10];
P = combvec(P1,P2)
P =
1 2 3 1 2 3
4 5 6 4 5 6
7 7 7 8 8 8
9 9 9 10 10 10
Добавим выборку Р3:
P3 = [4 5 6];
P = combvec(P,P3)
P =
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
4 5 6 4 5 6 4 5 6 4 5 6 4 5 6 4 5 6
7 7 7 8 8 8 7 7 7 8 8 8 7 7 7 8 8 8
9 9 9 10 10 10 9 9 9 10 10 10 9 9 9 10 10 10
4 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6
Тот же самый результат будет получен, если применить оператор P = combvec(P1,P2,P3).
CON2SEQ, SEQ2CON |
Прямое и обратное преобразования группового и последовательного представления данных |
Синтаксис:
S = con2seq(P) |
P = seq2con(S) |
S = con2seq(P, TS) |
|
Описание:
Функция S = con2seq(P) преобразует числовой массив P размера QTS, соответствующий групповому представлению данных, в массив ячеек S размера 1TS, содержащих числовые массивы размера Q1 и соответствующий последовательному представлению данных.
Функция S=con2seq(P,TS) преобразует массив ячеекPразмераQm*TS, соответствующий групповому представлению данных, в массив ячеек S размераQTS, соответствующий последовательному представлению. При этом каждая ячейка содержит числовой массив размера 1m.
Функция P= seq2con(S) преобразует массив ячеек S размераQTS, содержащих числовые массивы размераRm, в массив ячеек Р размераQ1. При этом каждая ячейка содержит числовой массив размераRm*TS.
Пример:
Преобразуем числовой массив P размера 23, соответствующий групповому представлению данных, в массив ячеек S размера 13, содержащих числовые массивы размера 21, соответствующий последовательному представлению данных:
P = [1 4 2;
2 5 3]
S = con2seq(P)
p2 = [21 double] [21 double] [21 double]
Преобразуем массив ячеек PразмераQ1, содержащих массивы размераRm*TS, который соответствует структуре группового представления, в массив ячеек S размераQTS, содержащих массивы размераRm, который соответствует структуре последовательного представления данных:
P = { [1 2; 1 2];
[3 4; 3 4];
[5 6; 5 6] };
S = con2seq(P,2)
S =
[21 double] [21 double]
[21 double] [21 double]
[21 double] [21 double]
Этому массиву соответствует следующее описание:
cell2mat(S), cellplot(S)
-
ans =
1 2
1 2
3 4
3 4
5 6
5 6
Преобразуем массив ячеек S размера QTS, содержащих числовые массивы размера Rm, в массив ячеек Р размера Q1. При этом каждая ячейка содержит числовой массив размера Rm*TS:
S = {[1; 1] [5; 4] [1; 2];
[3; 9] [4; 1] [9; 8]}
P = seq2con(S)
S =
[21 double] [21 double] [21 double]
[21 double] [21 double] [21 double]
P =
[23 double]
[23 double]
Сформируем числовой массив P, соответствующий групповому представлению:
P = cell2mat(P)
P =
1 5 1
1 4 2
3 4 9
9 1 8
Сопутствующие функции: CONCUR.
CONCUR |
Создание группы векторов смещений |
Синтаксис:
B=concur(b,q)
Описание:
Функция B=concur(b,q) преобразует вектор смещенияbразмера S1 или массив ячеек размера Nl1, содержащий векторы смещения для Nl слоев сети, в массив размера Sqили в массив ячеек размера Nl1, содержащий числовые массивы размера Sq.
Примеры:
Функция concur создает 3 копии вектора смещения для данного слоя нейронной сети:
b = [1; 3; 2; –1];
B = concur(b,3)
ans =
1 1 1
3 3 3
2 2 2
–1 –1 –1
Двухслойная нейронная сеть имеет 2 вектора смещения, которые для применения функции concurнеобходимо объединить в вектор ячеек:
b1 = [1; 3; 2; –1];
b2 = [3; 2; –1];
b = {b1; b2}
B = concur(b,3)
b =
[41 double]
[31 double]
B =
[43 double]
[33 double]
Применение функции:
Следующий оператор вычисляет взвешенный вход для слоя с функцией накопления netsum, двумя векторами весов и одним вектором смещения:
n = netsum(z1, z2, b)
Это соотношение реализуется, если векторы z1, z2 и имеют одинаковые размеры, например Sq. Однако если сеть моделируется с помощью функций sim, adapt или train как отклик на q групп векторов, то массивы z1 и z2 должны иметь размер Sq. Прежде чем объединить вектор смещения b с массивами z1 и z2, следует сделать q его копий:
n = netsum(z1,z2,concur(b,q))
Сопутствующие функции: NETSUM, NETPROD, SIM, SEQ2CON, CON2SEQ.
IND2VEC, VEC2IND |
Прямое и обратное преобразования вектора индексов классов в матрицу связности |
Синтаксис:
vec = ind2vec(ind)
ind = vec2ind(vec)
Описание:
Функция vec = ind2vec(ind) преобразует вектор индексов классов в матрицу связности с единицами в каждом столбце, расположенными в строке, соответствующей значению индекса. Матрица связности определена в классе разреженных матриц.
Функция ind = vec2ind(vec) преобразует матрицу связности в вектор индексов классов так, что индекс класса соответствует номеру строки.
Примеры:
Преобразовать вектор индексов классов в матрицу связности.
ind = [1 3 2 3], vec = ind2vec(ind), vec = full(vec)
ind = 1 3 2 3
vec = (1,1) 1 (3,2) 1 (2,3) 1 (3,4) 1 |
vec = 1 0 0 0 0 0 1 0 0 1 0 1 |
Преобразовать матрицу связности в вектор индексов классов.
vec = [1 0 0 0;
0 0 1 0;
0 1 0 1];
ind = vec2ind(vec)
ind = 1 3 2 3
MAT2CELL |
Преобразование числового массива в массив ячеек |
Синтаксис:
C = mat2cell(M, mrow, ncol)
Описание:
Функция C = mat2cell(M, mrow, ncol) преобразует числовой массив M размера rowcolв массив ячеек, содержащих блоки, разбиение на которые задается векторами mrow и ncol. При этом должно соблюдаться условие:sum(mrow) =row,sum(ncol) =col.
Пример:
Преобразовать числовой массив М размера 34 в массив ячеек с разбиением mrow = [2 1], ncol = [1 2 1].
M = [1 2 3 4; 5 6 7 8; 9 10 11 12];
C = mat2cell(M,[2 1],[1 2 1])
C =
[21 double] [22 double] [21 double]
[ 9] [12 double] [ 12]
[C{1,:}; C{2,:}]
ans =
1 2 3 4
5 6 7 8
9 10 11 12
Сопутствующие функции: CELL2MAT.
MINMAX |
Вычисление минимальных и максимальных элементов векторов входа |
Синтаксис:
pr = minmax(P)
Описание:
Функция pr = minmax(P) вычисляет минимальные и максимальные значения элементов массива P векторов входа размера RQ и возвращает массив pr размера R2 минимальных и максимальных значений строк массива P.
Примеры:
P = [0 1 2; –1 –2 –0.5];
pr = minmax(P)
pr =
0 2.0000
–2.0000 –0.5000
NORMC, NORMR |
Нормировка матрицы по строкам и столбцам |
Синтаксис:
Mr = normr(M)
Mc = normc(M)
Описание:
Функция Mr = normr(M) нормирует длины строк матрицы Mк 1.
Функция Mc = normc(M) нормирует длины столбцов матрицы Mк 1.
Примеры:
Нормировать матрицу М по строкам и столбцам.
M = [1 2;
3 4];
normr(M)
ans =
0.4472 0.8944
0.6000 0.8000
normc(M)
ans =
0.3162 0.4472
0.9487 0.8944
Анализируя результаты, нетрудно убедиться, что нормированные первая строка и второй столбец одинаковы, поскольку они коллинеарны.
Сопутствующие функции: PNORMC.
PNORMC |
Псевдонормировка столбцов матрицы |
Синтаксис:
pM = pnormc(M,r)
Описание:
Функция pM = pnormc(M, r) нормирует столбцы до заданной длины r, добавляя дополнительную строку к исходной матрице. Такая операция определена как псевдонормировкаматрицы. Необходимо соблюдать условие, чтобы длина столбцов исходной матрицы не превышала r.
При вызове функции с одним входным аргументом в форме pM = pnormc(M) по умолчанию принимается, что r равно 1.
Пример:
M = [0.1 0.6;
0.3 0.1];
pM = pnormc(M)
pM =
0.1000 0.6000
0.3000 0.1000
0.9487 0.7937
Сопутствующие функции: NORMC, NORMR.
QUANT |
Округление элементов массива до ближайшего кратного базису округления |
Синтаксис:
qP = quant(P, q)
Описание:
Функция qP=quant(P,q) округляет элементы массива Р до ближайшего значения, кратного базису округленияq.
Пример:
Округлим элементы массива Р с точностью до 0.1:
P = [1.333 4.756 –3.897];
qP = quant(P,0.1)
qP = 1.3000 4.8000 –3.9000
SUMSQR |
Сумма квадратов элементов массива |
Синтаксис:
s = sumsqr(M)
Описание:
Функция s = sumsqr(M) вычисляет сумму квадратов всех элементов массива M.
Пример:
M = [ 1 2 3;
4 5 6];
s = sumsqr(M)
s = 91