learnlv2

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

S- матрица (или S-by-1 смещают вектор),

P

R-by-Q входные векторы (или ones(1,Q))

Z

S-by-Q взвешенные входные векторы

N

S-by-Q сетевые входные векторы

A

S-by-Q выходные векторы

T

S-by-Q слой предназначается для векторов

E

S-by-Q вектора ошибок слоя

gW

S- градиент относительно производительности

gA

S-by-Q выходной градиент относительно производительности

D

S-by-S расстояния нейрона

LP

Изучая параметры, ни один, LP = []

LS

При изучении состояния, первоначально должен быть = []

и возвращается

dW

S- (или смещение) изменяют матрицу

LS

Новое состояние изучения

Изучение происходит согласно изучению learnlv2 параметра, показанного здесь с его значением по умолчанию.

LP.lr - 0.01

Темп обучения

LP.window - 0.25

Размер окна (от 0 до 1, обычно 0.2 к 0,3)

info = learnlv2('code') возвращает полезную информацию для каждого вектора символов code:

'pnames'

Имена изучения параметров

'pdefaults'

Параметры изучения значения по умолчанию

'needg'

Возвращается 1, если эта функция использует gW или gA

Примеры

Здесь вы задаете демонстрационный вход 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,

  1. Установите net.trainFcn на 'trainr'. (net.trainParam автоматически становится параметрами trainr по умолчанию.)

  2. Установите net.adaptFcn на 'trains'. (net.adaptParam автоматически становится параметрами trains по умолчанию.)

  3. Установите каждый net.inputWeights{i,j}.learnFcn на 'learnlv2'.

  4. Установите каждый net.layerWeights{i,j}.learnFcn на 'learnlv2'. (Каждый вес, изучающий свойство параметра, автоматически установлен в параметры learnlv2 по умолчанию.)

Обучать сеть (или позволять ему адаптироваться),

  1. Установите net.trainParam (или net.adaptParam) свойства, как желаемый.

  2. Вызовите 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,:))

Смотрите также

| |

Представлено до R2006a