Функция изучения веса LVQ2.1
[dW,LS] = learnlv2(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info = learnlv2('code
')
learnlv2
является функцией изучения веса LVQ2
.
[dW,LS] = learnlv2(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
берет несколько входных параметров,
W |
|
P |
|
Z |
|
N |
|
A |
|
T |
|
E |
|
gW |
|
gA |
|
D |
|
LP | Изучая параметры, ни один, |
LS | При изучении состояния, первоначально должен быть = |
и возвращается
dW |
|
LS | Новое состояние изучения |
Изучение происходит согласно изучению learnlv2
параметра, показанного здесь с его значением по умолчанию.
LP.lr - 0.01 | Темп обучения |
LP.window - 0.25 | Размер окна (от 0 до 1, обычно 0.2 к 0,3) |
info = learnlv2('
возвращает полезную информацию для каждого вектора символов code
')code
:
'pnames' | Имена изучения параметров |
'pdefaults' | Параметры изучения значения по умолчанию |
'needg' | Возвращается 1, если эта функция использует |
Здесь вы задаете демонстрационный вход P
, вывод A
, матрица веса W
, и выводите градиент 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;
Поскольку learnlv2
только нужны эти значения, чтобы вычислить изменение веса (см. “Алгоритм” ниже), используйте их, чтобы сделать так.
dW = learnlv2(w,p,[],n,a,[],[],[],gA,[],lp,[])
Можно создать стандартную сеть, которая использует learnlv2
с lvqnet
.
Подготовить веса слоя i
пользовательской сети, чтобы учиться с learnlv2
,
Установите net.trainFcn
на 'trainr'
. (net.trainParam
автоматически становится параметрами trainr
по умолчанию.)
Установите net.adaptFcn
на 'trains'
. (net.adaptParam
автоматически становится параметрами trains
по умолчанию.)
Установите каждый net.inputWeights{i,j}.learnFcn
на 'learnlv2'
.
Установите каждый net.layerWeights{i,j}.learnFcn
на 'learnlv2'
. (Каждый вес, изучающий свойство параметра, автоматически установлен в параметры learnlv2
по умолчанию.)
Обучать сеть (или позволять ему адаптироваться),
Установите net.trainParam
(или net.adaptParam
) свойства, как желаемый.
Вызовите train
(или adapt
).
learnlv2
реализует Изучение Векторного Квантования 2.1, который работает можно следующим образом:
Для каждого представления, если нейрон победы i
не должен был побеждать, и участник, занявший второе место, j
должен иметь, и расстояние, di
между нейроном победы и входом p
примерно равен расстоянию dj
от нейрона участника, занявшего второе место до входа p
согласно данному окну,
min(di/dj, dj/di) > (1-window)/(1+window)
затем переместите нейрон победы веса i
далеко от входного вектора и переместите нейрон участника, занявшего второе место веса j
к входу согласно
dw(i,:) = - lp.lr*(p'-w(i,:)) dw(j,:) = + lp.lr*(p'-w(j,:))