Функция изучения веса 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,:))