Функции настройки параметров нейронной сети предназначены для вычисления
приращений весов и смещений при обучении или адаптации сети.
Входные и выходные аргументы для всех функций настройки параметров одинаковы и приведены в начале данного раздела.
Входные аргументы:
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'.
Для того чтобы фактически обучить или адаптировать сеть, необходимо:
Пример:
Определим сеть со случайными векторами входа 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.
|