learnlv2
(To be removed) LVQ2.1 weight learning function
learnlv2 will be removed in a future release. For more information,
see Transition Legacy Neural Network Code to dlnetwork Workflows.
For advice on updating your code, see Version History.
Syntax
[dW,LS] = learnlv2(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info = learnlv2('code')
Description
learnlv2 is the LVQ2 weight learning
function.
[dW,LS] = learnlv2(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) takes several
inputs,
W |
|
P |
|
Z |
|
N |
|
A |
|
T |
|
E |
|
gW |
|
gA |
|
D |
|
LP | Learning parameters, none, |
LS | Learning state, initially should be =
|
and returns
dW |
|
LS | New learning state |
Learning occurs according to learnlv2’s learning parameter, shown
here with its default value.
LP.lr - 0.01 | Learning rate |
LP.window - 0.25 | Window size (0 to 1, typically 0.2 to 0.3) |
info = learnlv2(' returns useful
information for each code')code character vector:
'pnames' | Names of learning parameters |
'pdefaults' | Default learning parameters |
'needg' | Returns 1 if this function uses |
Examples
Here you define a sample input P, output A,
weight matrix W, and output gradient gA for a
layer with a two-element input and three neurons. Also define the learning rate
LR.
p = rand(2,1); w = rand(3,2); n = negdist(w,p); a = compet(n); gA = [-1;1; 1]; lp.lr = 0.5;
Because learnlv2 only needs these values to calculate a weight
change (see “Algorithm” below), use them to do so.
dW = learnlv2(w,p,[],n,a,[],[],[],gA,[],lp,[])
Network Use
You can create a standard network that uses learnlv2 with
lvqnet.
To prepare the weights of layer i of a custom network to learn with
learnlv2,
Set
net.trainFcnto'trainr'. (net.trainParamautomatically becomestrainr’s default parameters.)Set
net.adaptFcnto'trains'. (net.adaptParamautomatically becomestrains’s default parameters.)Set each
net.inputWeights{i,j}.learnFcnto'learnlv2'.Set each
net.layerWeights{i,j}.learnFcnto'learnlv2'. (Each weight learning parameter property is automatically set tolearnlv2’s default parameters.)
To train the network (or enable it to adapt),
Set
net.trainParam(ornet.adaptParam) properties as desired.Call
train(oradapt).
Algorithms
learnlv2 implements Learning Vector Quantization 2.1, which works
as follows:
For each presentation, if the winning neuron i should not have won,
and the runnerup j should have, and the distance
di between the winning neuron and the input p
is roughly equal to the distance dj from the runnerup neuron to the
input p according to the given window,
min(di/dj, dj/di) > (1-window)/(1+window)
then move the winning neuron i weights away from the input vector,
and move the runnerup neuron j weights toward the input according
to
dw(i,:) = - lp.lr*(p'-w(i,:)) dw(j,:) = + lp.lr*(p'-w(j,:))
Version History
Introduced before R2006aSee Also
Time Series
Modeler | fitrnet (Statistics and Machine Learning Toolbox) | fitcnet (Statistics and Machine Learning Toolbox) | trainnet | trainingOptions | dlnetwork