- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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.6. Функции настройки параметров
Функции настройки параметров нейронной сети предназначены для вычисления приращений весов и смещений при обучении или адаптации сети.
Входные и выходные аргументы для всех функций настройки параметров одинаковы и приведены в начале данного раздела.
Входные аргументы:
W – матрица весов размера SR;
b – вектор смещений размера S1;
P– вектор из единиц размера 1Q;
Z – взвешенный вектор входа размера SQ;
N – матрица векторов входа нейрона размера SQ;
A – векторы выхода размера SQ;
T – векторы целей слоя размера SQ;
E – векторы ошибок слоя размера SQ;
gW – градиент функционала по настраиваемым параметрам размера SQ;
gA – градиент функционала по выходу сети размера SQ;
D – матрица расстояний между нейронами размера SS;
LP – параметры процедуры настройки, при их отсутствии LP = [ ];
ls – начальный вектор настраиваемых параметров (по умолчанию пустой массив).
Выходные аргументы:
dW – матрица приращений весов размера SR;
db – вектор приращений смещений размера S1;
LS – новый вектор настраиваемых параметров.
Кроме того, все функции возвращают информацию о параметрах функций настройки, если используется следующий формат вызова:
info = <имя_функции>(code).
В зависимости от значения аргумента code возвращается следующая информация:
'pnames'– имена параметров процедуры настройки;
'pdefaults'– значения параметров процедуры настройки, принимаемые по умолчанию;
'needg' – возвращается 1, если процедура использовала значения градиентов gW или gA.
LEARNP |
Функция настройки параметров персептрона |
Синтаксис:
[dW,LS] = learnp(W,P,Z,N,A,T,E,gW,gA,D,LP,ls)
[db,LS] = learnp(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,ls)
info = learnp (code)
Описание:
Функция learnp предназначена для настройки весов и смещений персептрона. Эта функция не имеет параметров настройки.
Применение функции:
Функция настройки параметров сети learnp используется при создании сетей с помощью метода newp, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainb'. Это автоматически установит значения параметров обучения, соответствующие функции trainb;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn, net.biases{i}.learnFcn равными 'learnp'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения;
применить функцию train или adapt.
Пример:
Определим сеть со случайными векторами входа p и ошибки e:
p = rand(2,1);
e = rand(3,1);
Вызов функции learnp можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnp([],p,[],[],[],[],e,[],[],[],[],[])
dW =
0.5766 0.1403
0.4617 0.1123
0.8468 0.2060
Алгоритм:
Функция learnp рассчитывает приращения весов dW в соответствии со следующим обучающим правилом персептрона [Ros]:
Эти выражения можно представить в следующей обобщенной форме:
.
Сопутствующие функции: LEARNPN, NEWP, ADAPTWB, TRAINWB, ADAPT, TRAIN.
LEARNPN |
Нормированная функция настройки параметров персептрона |
Синтаксис:
[dW,LS] = learnpn(W,P,Z,N,A,T,E,gW,gA,D,LP,ls)
[db,LS] = learnp(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,ls)
info = learnpn (code)
Описание:
Функция learnpn предназначена для настройки весов и смещений персептрона. Эта функция не имеет параметров настройки.
Применение функции:
Функция настройки параметров сети learnpn используется при создании сетей с помощью метода newp, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainb'. Это автоматически установит значения параметров обучения, соответствующие функции trainb;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn, net.biases{i}.learnFcn равными 'learnpn'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения или адаптации;
применить функцию trainилиadapt.
Пример:
Определим сеть со случайными векторами входа p и ошибки e:
p = rand(2,1);
e = rand(3,1);
Вызов функции learnpnможно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnpn([],p,[],[],[],[],e,[],[],[],[],[])
dW =
0.4122 0.1003
0.3301 0.0803
0.1473
Алгоритм:
Функция learnpnрассчитывает приращения весов dW в соответствии со следующим обучающим правилом:
Эти выражения можно представить в обобщенной форме:
.
Сопутствующие функции: LEARNP, NEWP, ADAPT, TRAIN.
LEARNWH |
Функция настройки методом Видроу – Хоффа |
Синтаксис:
[dW,LS] = learnwh(W,P,Z,N,A,T,E,gW,gA,D,LP,ls)
[db,LS] = learnwh(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,ls)
info = learnwh (code)
Описание:
Функция leanrwh предназначена для настройки параметров нейронных сетей по методу Видроу – Хоффа. Параметры процедуры learnwh представлены в следующей таблице.
-
Параметр
Назначение
LP.lr
Скорость настройки, по умолчанию 0.01
Применение функции:
Функция настройки параметров сети learnwh используется при создании линейных нейронных сетей с помощью метода newlin, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainb'. Это автоматически установит значения параметров обучения, соответствующие функции trainb;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn, net.biases{i}.learnFcn равными 'learnwh'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения или адаптации;
применить функцию train или adapt.
Пример:
Определим сеть со случайными векторами входа p и ошибки e с двухэлементным входом и тремя нейронами и параметром скорости настройки lr:
p = rand(2,1);
e = rand(3,1);
lp.lr = 0.5;
Вызов функции learnwh можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnwh([],p,[],[],[],[],e,[],[],[],lp,[])
dW =
0.2883 0.0701
0.2309 0.0562
0.4234 0.1030
Алгоритм:
Функция learnwh рассчитывает приращения весов dW в соответствии с обучающим правилом Видроу – Хоффа [44, 45] в зависимости от нормированного вектора входа pn, ошибкиeи параметра скорости настройки lr:
Сопутствующие функции: MAXLINLR, NEWLIN, ADAPT, TRAIN.
LEARNGD |
Функция настройки методом градиентного спуска |
Синтаксис:
[dW,LS] = learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,ls)
[db,LS] = learngd(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,ls)
info = learngd(code)
Описание:
Функция learngd предназначена для настройки весов и смещений сети методом градиентного спуска.
Параметры процедуры learngd представлены в следующей таблице.
-
Параметр
Назначение
LP.lr
Скорость настройки, по умолчанию 0.01
Применение функции:
Функция настройки параметров сети learngd используется при создании линейных нейронных сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn, net.biases{i}.learnFcn равными 'learngd'.
Для того чтобы фактически адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам адаптации;
применить функцию adapt.
Пример:
Допустим, что на некотором шаге настройки слоя с тремя нейронами и двухэлементным входом известен случайный вектор градиента gW, а параметр скорости настройки задан равным 0.5:
gW = rand(3,2);
lp.lr = 0.5;
Тогда вызов функции learngd можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learngd([],[],[],[],[],[],[],gW,[],[],lp,[])
dW =
0.4751 0.2430
0.1156 0.4456
0.3034 0.3810
Алгоритм:
Функция learngd рассчитывает приращение веса dW в зависимости от градиента функционала качества по вектору весов gW и параметра скорости настройки lr в соответствии с методом градиентного спуска:
dW= lr*gW.
Сопутствующие функции: LEARNGDM, NEWFF, NEWCF, ADAPT, TRAIN.
LEARNGDM |
Функция настройки методом градиентного спуска с возмущением |
Синтаксис:
[dW,LS] = learngdm(W,P,Z,N,A,T,E,gW,gA,D,LP,ls)
[db,LS] = learngdm(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,ls)
info = learngdm(code)
Описание:
Функция learngdm предназначена для расчета приращений весов и смещений нейронной сети методом градиентного спуска c возмущением.
Параметры процедуры learngdmпредставлены в следующей таблице.
-
Параметр
Назначение
LP.lr
Скорость настройки, по умолчанию 0.01
LP.mc
Параметр возмущения, по умолчанию 0.9
Применение функции:
Функция настройки параметров сети learngdm используется при создании линейных нейронных сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn, net.biases{i}.learnFcn равными 'learngdm'.
Для того чтобы фактически адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам адаптации;
применить функцию adapt.
Пример:
Допустим, что на некотором шаге настройки слоя с тремя нейронами и двухэлементным входом известен случайный вектор градиента gW, а параметры скорости настройки и возмущения заданы равными 0.6 и 0.8 соответственно:
gW = rand(3,2);
lp.lr = 0.6;
lp.mc = 0.8;
Тогда вызов функции learngdm можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
ls = [];
[dW,ls] = learngdm([],[],[],[],[],[],[],gW,[],[],lp,ls)
dW =
0.2739 0.2668
0.0111 0.3693
0.4928 0.4752
ls =
dw: [32 double]
ls.dw
ans =
0.2739 0.2668
0.0111 0.3693
0.4928 0.4752
Функция learngdm возвращает матрицу приращения весов и сохраняет эту матрицу для следующего шага настройки.
Алгоритм:
Функция learngdm рассчитывает приращение веса dW в зависимости от градиента функционала качества gW по вектору весов, параметров скорости настройки lr и возмущения mc в соответствии с методом градиентного спуска с возмущением:
dW = mc*dWprev + (1–mc)*lr*gW.
Предыдущее приращение веса dWprev считывается из переменной ls.dw.
Сопутствующие функции: LEARNGD, NEWFF, NEWCF, ADAPT, TRAIN.
LEARNLV1 |
Функция настройки весов LVQ-сети по правилу LVQ1 |
Синтаксис:
[dW,LS] = learnlv1(W,P,Z,N,A,T,E,gW,gA,D,LP,ls)
info = learnlv1(code)
Описание:
Функция learnlv1 предназначена для настройки весов LVQ-сети по правилу LVQ1.
Параметры процедуры learnlv1 представлены в следующей таблице.
-
Параметр
Назначение
LP.lr
Скорость настройки, по умолчанию 0.01
Применение функции:
Функция настройки параметров сети learnlv1 используется при создании линейных нейронных сетей с помощью метода newlvq, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainr'. Это автоматически установит значения параметров обучения, соответствующие функции trainr;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn равными 'learnlv1'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения или адаптации;
применить функцию train или adapt.
Пример:
Определим слой нейронной сети с двухэлементным входом и тремя нейронами со случайными массивами входа p, весов w и выхода a; зададим также градиент функционала по выходу gA и параметр скорости настройки lr:
p = rand(2,1);
w = rand(3,2);
a = compet(negdist(w,p));
gA = [–1;1;1];
lp.lr = 0.5;
Вызов функции learnlv1 можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnlv1(w,p,[],[],a,[],[],[],gA,[],lp,[])
dW =
0 0
0 0
–0.0294 –0.1063
Алгоритм:
Функция learnlv1 рассчитывает приращение весов dW в зависимости от градиента функционала качества gW по вектору выхода и параметра скорости настройки lr в соответствии с правилом LVQ1, но только для тех нейронов, выход которых a(i) равен 1:
Сопутствующие функции: LEARNLV2, ADAPT, TRAIN.
LEARNLV2 |
Функция настройки весов LVQ-сети по правилу LVQ2 |
Синтаксис:
[dW,LS] = learnlv2(W,P,Z,N,A,T,E,gW,gA,D,LP,ls)
info = learnlv2 (code)
Описание:
Функция learnlv2 предназначена для настройки весов LVQ-сети по правилу LVQ2.
Параметры процедуры learnlv2 представлены в следующей таблице.
-
Параметр
Назначение
LP.lr
Скорость настройки, по умолчанию 0.01
LP.window
Параметр окна, по умолчанию 0.25
Применение функции:
Функция настройки параметров сети learnlv2 используется при создании линейных нейронных сетей с помощью метода newlvq, а также при формировании сетей с атрибутами, определяемыми пользователем. Эта функция применяется только после того, как сеть настроена с помощью правила LVQ1.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainr'. Это автоматически установит значения параметров обучения, соответствующие функции trainr;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn равными 'learnlv2'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения или адаптации;
применить функцию train или adapt.
Пример:
Определим слой нейронной сети с двухэлементным входом и тремя нейронами со случайными массивами входа p, весов w и выхода a; зададим также градиент функционала по выходу gA и параметр скорости настройки lr:
p = rand(2,1);
w = rand(3,2);
n = negdist(w,p);
a = compet(n);
gA = [–1;1;1];
lp.lr = 0.5;
lp.window = 0.25;
Вызов функции learnlv2 можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnlv2(w,p,[],n,a,[],[],[],gA,[],lp,[])
dW =
0 0
0 0
0 0
Алгоритм:
Функция learnlv2 рассчитывает приращение весов dW в зависимости от градиента функционала качества gW по вектору выхода и параметра скорости настройки lr в соответствии с правилом LVQ2.1 [24]. Это правило реализует следующую процедуру. Необходимо выбрать нейронk1 в качестве победителя и нейронk2 в качестве проигравшего. Если один из них принадлежит к требуемому классу, а другой – нет, то первому присваивается индексj, а второму – индексi. Затем вычисляется расстояниеdiвектора входа до нейронаki иdjдо нейронаkj.
Если выполняется условие
,
то нейрон kjприближается, а нейронkiудаляется от вектора входа согласно следующим соотношениям:
Сопутствующие функции: LEARNLV1, ADAPT, TRAIN.
LEARNK |
Функция настройки весов для слоя Кохонена |
Синтаксис:
[dW,LS] = learnk(W,P,Z,N,A,T,E,gW,gA,D,LP,ls)
info = learnk(code)
Описание:
Функция learnk предназначена для настройки весов слоя Кохонена.
Параметры процедуры learnkпредставлены в следующей таблице.
-
Параметр
Назначение
LP.lr
Скорость настройки, по умолчанию 0.01
Применение функции:
Функция настройки параметров сети learnk используется при создании слоев Кохонена с помощью метода newc, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainr'. Это автоматически установит значения параметров обучения, соответствующие функции trainr;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn равными 'learnk'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения или адаптации;
применить функцию train или adapt.
Пример:
Определим слой Кохонена сети с двухэлементным входом и тремя нейронами со случайными массивами входа p, весов w и выхода a; зададим также параметр скорости настройки lr:
p = rand(2,1);
a = rand(3,1);
w = rand(3,2);
lp.lr = 0.5;
Вызов функции learnk можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnk(w,p,[],[],a,[],[],[],[],[],lp,[])
dW =
0.0940 –0.2951
0.2468 –0.1068
0.4658 –0.1921
Алгоритм:
Функция learnlv2 рассчитывает приращение весов dW в зависимости от градиента функционала качества gW по вектору выхода и параметра скорости настройки lr в соответствии с правилом LVQ2.1 [24].
Функция learnk рассчитывает приращение весов dW в зависимости от вектора входа p, выходаa, весовw и параметра скорости настройки lr в соответствии с правилом Кохонена [24]:
Сопутствующие функции: LEARNIS, LEARNOS, ADAPT, TRAIN.
LEARNCON |
Функция настройки смещений для слоя Кохонена |
Синтаксис:
[db,LS] = learncon(b,P,Z,N,A,T,E,gW,gA,D,LP,ls)
info = learncon(code)
Описание:
Функция learncon предназначена для настройки смещений слоя Кохонена по правилу справедливых смещений.
Параметры процедуры learncon представлены в следующей таблице.
-
Параметр
Назначение
LP.lr
Скорость настройки, по умолчанию 0.001
Применение функции:
Функция настройки параметров сети learncon используется при создании слоев Кохонена с помощью метода newc, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainr'. Это автоматически установит значения параметров обучения, соответствующие функции trainr;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.biases{i}.learnFcn равными 'learncon'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения или адаптации;
применить функцию train или adapt.
Пример:
Определим слой Кохонена сети с двухэлементным входом и тремя нейронами со случайными массивами выхода a, вектора смещений b; зададим также параметр скорости настройки lr:
a = rand(3,1);
b = rand(3,1);
lp.lr = 0.5;
Вызов функции learnk можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
db = learncon(b,[],[],[],a,[],[],[],[],[],lp,[])
db =
0.1590
0.3076
0.5565
Алгоритм:
Функция learncon реализует правило настройки с учетом нечувствительности части нейронов, называемых мертвыми; суть этого правила заключается в следующем. В начале процедуры настройки всем нейронам конкурирующего слоя присваивается одинаковый параметр активности с0 = 1/N, где N – количество нейронов в слое. В процессе настройки функция learncon корректирует этот параметр таким образом, чтобы его значения для активных нейронов становились больше, а для неактивных нейронов меньше согласно формуле
ck= (1 – lr) *ck –1+ lr*a.
М-функция learncon использует следующую формулу для расчета приращений вектора смещений:
Параметр скорости настройки lr по умолчанию равен 0.001, и его величина на порядок меньше соответствующего значения для функции learnk.
Сопутствующие функции: LEARNK, LEARNOS, ADAPT, TRAIN.
LEARNIS |
Функция настройки по вектору входа |
Синтаксис:
[dW,LS] = learnis(W,P,Z,N,A,T,E,gW,gA,D,LP,ls)
info = learnis(code)
Описание:
Функция learnis предназначена для настройки весов слоя Кохонена по вектору входа (правило Гроссберга) и является альтернативой функции настройки learnk.
Параметры процедуры learnis представлены в следующей таблице.
-
Параметр
Назначение
LP.lr
Скорость настройки, по умолчанию 0.5
Применение функции:
Функция настройки параметров сети learnis используется при создании слоев Кохонена с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainr'. Это автоматически установит значения параметров обучения, соответствующие функции trainr;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn равными 'learnis'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения или адаптации;
применить функцию train или adapt.
Пример:
Определим слой Кохонена с двухэлементным входом и тремя нейронами со случайными массивами входа p, весов w и выхода a; зададим также параметр скорости настройки lr:
p = rand(2,1);
a = rand(3,1);
w = rand(3,2);
lp.lr = 0.5;
Вызов функции learnis можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnis(w,p,[],[],a,[],[],[],[],[],lp,[])
dW =
0.0571 –0.1791
0.1200 –0.0519
0.4152 –0.1713
Алгоритм:
Функция learnis рассчитывает изменение вектора весов dwдля данного нейрона в зависимости от векторов входаp, выходаa, весовwи параметра скорости настройки lr в соответствии с правилом Гроссберга настройки по вектору входа [14]:
dw= lr*a*(p'–w).
Сопутствующие функции: LEARNK, LEARNOS, ADAPT, TRAIN.
LEARNOS |
Функция настройки по вектору выхода |
Синтаксис:
[dW,LS] = learnos(W,P,Z,N,A,T,E,gW,gA,D,LP,ls)
info = learnos(code)
Описание:
Функция learnos предназначена для настройки весов слоя Кохонена по вектору выхода (правило Гроссберга) и является альтернативой функции настройки learnis.
Параметры процедуры learnos представлены в следующей таблице.
-
Параметр
Назначение
LP.lr
Скорость настройки, по умолчанию 0.5
Применение функции:
Функция настройки параметров сети learnos используется при создании слоев Кохонена с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainr'. Это автоматически установит значения параметров обучения, соответствующие функции trainr;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn равными 'learnos'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения или адаптации;
применить функцию train или adapt.
Пример:
Определим слой Кохонена с двухэлементным входом и тремя нейронами со случайными массивами входа p, весов w и выхода a; зададим также параметр скорости настройки lr:
p = rand(2,1);
a = rand(3,1);
w = rand(3,2);
lp.lr = 0.5;
Вызов функции learnos можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnos(w,p,[],[],a,[],[],[],[],[],lp,[])
dW =
–0.0738 –0.0248
0.0140 0.0048
0.4146 0.0319
Алгоритм:
Функция learnos рассчитывает изменение весов dW для слоя Кохонена в зависимости от векторов входаp, выходаa, весовwи параметра скорости настройки lr в соответствии с правилом Гроссберга настройки по вектору выхода [14]:
dw = lr * (a–w) *p'.
Сопутствующие функции: LEARNIS, LEARNK, ADAPT, TRAIN.
LEARNSOM |
Функция настройки весов карты Кохонена |
Синтаксис:
[dW,LS] = learnsom(W,P,Z,N,A,T,E,gW,gA,D,LP,ls)
info = learnsom (code)
Описание:
Функция leanrnsom предназначена для настройки весов карты Кохонена.
Параметры процедуры learnos представлены в следующей таблице.
-
Параметр
Назначение
LP.order_lr
Скорость настройки на этапе упорядочения, по умолчанию 0.9
LP.order_steps
Число шагов на этапе упорядочения, по умолчанию 1000
LP.tune_lr
Скорость настройки на этапе подстройки, по умолчанию 0.02
LP.tune_nd
Размер окрестности нейрона-победителя, по умолчанию 1
Применение функции:
Функция настройки параметров сети leanrnsom используется при создании слоев Кохонена с помощью метода newsom, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainr'. Это автоматически установит значения параметров обучения, соответствующими функции trainr;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующими функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn равными 'leanrnsom'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения или адаптации;
применить функцию train или adapt.
Примеры:
Определим карту Кохонена с расположением нейронов на гексагональной сетке размера 23, а также расстояния между ними; зададим случайные массивы входа p, выхода a и весов w, а также параметры процедуры настройки:
p = rand(2,1);
a = rand(6,1);
w = rand(6,2);
pos = hextop(2,3);
d = linkdist(pos);
lp.order_lr = 0.9;
lp.order_steps = 1000;
lp.tune_lr = 0.02;
lp.tune_nd = 1;
Вызов функции learnsom можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
ls = [];
[dW,ls] = learnsom(w,p,[],[],a,[],[],[],[],d,lp,ls)
dW =
0.2217 0.0945
0.8432 –0.2912
0.6194 –1.3035
0.2836 –1.2292
0.0469 –0.2965
0.3090 –0.9659
ls =
step: 1
nd_max: 2
Алгоритм:
Функция learnsom вычисляет приращения весов dWв зависимости от вектора входаp, массива параметров соседстваA2и параметра скорости настройкиlr:
Элементы массива параметров соседства А2для нейронов, расположенных в окрестности нейрона-победителяi, вычисляются следующим образом:
где a(i, q) – элемент выхода нейронной сети;D(i, j) – расстояние между нейронамиi иj;nd– размер окрестности нейрона-победителя.
Процесс обучения карты Кохонена включает 2 этапа: этап упорядочения и этап подстройки. На этих этапах корректируются параметр скорости настройки lr и размер окрестности nd. Параметр lr изменяется от значения order_lr до tune_lr, а размер окрестности nd – от максимального до значения, равного 1.
Сопутствующие функции: ADAPT, TRAIN.
LEARNН |
Функция настройки по правилу Хебба |
Синтаксис:
[dW,LS] = learnh(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info = learnh(code)
Описание:
Функция learnh предназначена для расчета приращений весов нейронной сети по правилу Хебба.
Параметры процедуры learnh представлены в следующей таблице.
-
Параметр
Назначение
LP.lr
Скорость настройки, по умолчанию 0.5
Применение функции:
Функция настройки параметров сети learnh используется при создании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainr'. Это автоматически установит значения параметров обучения, соответствующие функции trainr;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn равными 'learnh'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения или адаптации;
применить функцию train или adapt.
Пример:
Определим нейронную сеть с двухэлементным входом и тремя нейронами со случайными массивами входа p и выхода a; зададим также параметр скорости настройки lr:
p = rand(2,1);
a = rand(3,1);
lp.lr = 0.5;
Вызов функции learnh можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnh([],p,[],[],a,[],[],[],[],[],lp,[])
dW =
0.2883 0.0701
0.2309 0.0562
0.4234 0.1030
Алгоритм:
Функция learnh рассчитывает приращения весов dW в зависимости от векторов входа p, выхода a и параметра скорости настройки lr в соответствии с обучающим правилом Хебба [19]:
dW= lr *a *p'.
Сопутствующие функции: LEARNHD, ADAPT, TRAIN.
MAXLINLR |
Максимальное значение параметра скорости настройки для линейной сети |
Синтаксис:
lr = maxlinlr(P)
lr = maxlinlr(P,'bias')
Описание:
Функция maxlinlr применяется для расчета максимального значения параметра скорости настройки для линейной сети.
Функция lr = maxlinlr(P) возвращает максимальный параметр скорости настройки для линейной сети без смещения, которая обучается только по векторам, входящим в массив векторов входа P размера RQ.
Функция lr = maxlinlr(P, 'bias') возвращает максимальный параметр скорости настройки для линейной сети со смещением.
Пример:
Зададим числовой массив входа, состоящий из четырех двухэлементных векторов, и вычислим максимальные значения параметра скорости настройки для линейной сети без смещения и со смещением:
P = [ 1 2 –4 7;
0.1 3 10 6];
lr = maxlinlr(P) % Без смещения
lr = 0.0069
lr = maxlinlr(P,'bias') % Со смещением
lr = 0.0067
Сопутствующие функции: LEARNWH.
LEARNНD |
Функция настройки по правилу Хебба с затуханием |
Синтаксис:
[dW,LS] = learnhd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info = learnhd(code)
Описание:
Функция learnhd предназначена для настройки весов нейронной сети по методу Хебба с затуханием.
Параметры процедуры learnhd представлены в следующей таблице.
-
Параметр
Назначение
LP.lr
Скорость настройки, по умолчанию 0.5
LP.dr
Параметр затухания, по умолчанию 0.01
Применение функции:
Функция настройки параметров сети learnhdиспользуется при создании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к настройке, необходимо:
установить свойство сети net.trainFcn равным 'trainr'. Это автоматически установит значения параметров обучения, соответствующие функции trainr;
установить свойство сети net.adaptFcn равным 'trains'. Это автоматически установит значения параметров адаптации, соответствующие функции trains;
установить свойства net.inputWeights{i,j}.learnFcn, net.layerWeights{i,j}.learnFcn равными 'learnhd'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
инициализировать нейронную сеть;
присвоить, если это необходимо, требуемые значения параметрам обучения или адаптации;
применить функцию train или adapt.
Пример:
Определим сеть со случайными входом p, выходом a и весами w для слоя с двух-элементным входом и тремя нейронами; зададим также параметры скорости настройки lr и затухание dr.
p = rand(2,1);
a = rand(3,1);
w = rand(3,2);
lp.lr = 0.5;
lp.dr = 0.05;
Вызов функции learnhdможно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnhd(w,p,[],[],a,[],[],[],[],[],lp,[])
dW =
–0.0237 –0.0327
0.2734 0.1787
0.1234 0.0812
Алгоритм:
Функция learnhdрассчитывает приращения весов dW в зависимости от векторов входаp, выходаa, весовw, а также параметра скорости настройки lr и параметра затухания dr в соответствии с обучающим правилом Хебба c затуханием [19]:
dW= lr *a * (p'–w) – dr *w.
Сопутствующие функции: LEARNH, ADAPT, TRAIN.