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-by- R матрица веса (или 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-by- R градиент веса относительно эффективности

gA

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

D

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

LP

Параметры обучения, нет, LP = []

LS

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

и возвращает

dW

S-by- R матрица изменения веса (или смещения)

LS

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

Обучение происходит согласно learnlv2"s параметр обучения, показанный здесь с его значением по умолчанию.

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 от нейрона 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,:))

См. также

| |

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