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
"s параметр обучения, показанный здесь с его значением по умолчанию.
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
от нейрона 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,:))