Функция изучения веса 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Параметр learning, показанный здесь со значением по умолчанию.
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'. (Для каждого свойства параметра weight learning автоматически устанавливается значение learnlv2Параметры по умолчанию.)
Обучение сети (или возможность ее адаптации),
Набор net.trainParam (или net.adaptParam) требуемые свойства.
Звонить train (или adapt).
learnlv2 реализует векторное квантование обучения 2.1, которое работает следующим образом:
Для каждой презентации, если выигрышный нейрон i не должны были выигрывать, и runnerup j должны иметь, и расстояние di между нейроном-победителем и входом p примерно равно расстоянию dj от нейрона runnerup к входу p по заданному окну,
min(di/dj, dj/di) > (1-window)/(1+window)
затем переместить нейрон-победитель i весит от входного вектора и перемещает нейрон runnerup j веса к входу в соответствии с
dw(i,:) = - lp.lr*(p'-w(i,:)) dw(j,:) = + lp.lr*(p'-w(j,:))