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