NAME
vq_layer - layer of vector quantization units
PROTOTYPE
unitptr vq_layer( int din, int dout, int n, int mode, unittype *dest)
ARGUMENTS
- int din
- dimension of input vector
- int dout
- dimension of output vector
- int n
- nr of nodes
- int mode
- mode parameter. If mode is odd, output activities are scaled to sum to unity
- unittype *dest
- host unit
INTERFACE OF CREATED UNIT:
Input Fields:
- X_in[din]:
- input vector
- Y_in[dout]:
- target value for output vector
- Z_in[3]:
- learning parameters eps_in, eps_sig and eps_out
- CTL_in[2]:
- control field: decay value and
blending parameter beta
Output fields:
- X_out[dout]:
- output vector
- Y_out[1]:
- index of winner node
- Z_out[n]:
- activations of nodes 0..n-1.
- out_3[n*(1+din)]:
- input weights (.1+din for each node)
- out_4[n*dout]:
- output weights (.dout for each node)
EXECUTION:
Determines node activations X_out according to
Z_out[i] = f(s_i)/sum_k f(s_k) for beta >= 0,
Z_out[i] = (1-c)*Z_out[i](old) + c*f(s_i) for beta <0,
where s_k = ABS(beta)*d[k]/sig[k].
and d[k] = sqrt( sum_j (x_k[j]-w[k][j])^2 )
and produces output vector X_out[] according to
X_out[] = sum_j Z_out[j]*w_out[j]
ADAPTATION:
Adapts input weight vectors/sigma according to:
Delta w_in[k][j] = eps_in * (x_k[j] - w_in[k][j])*Z_out[k];
Delta sig[k] = eps_sig *(d[k] - sig[k])*Z_out[k];
and output weight vectors according to
Delta w_out[k][j] = eps_out * (y_k[j] - w_out[k][j])*Z_out[k];
TREATMENT OF MISSING VALUES:
The input vector and the target vector
may contain elements with the non-value NaN.
Axis dimensions for which the input vector
contains the non-value NaN do not contribute
to the distance computation for the best-match
determination. Similarly, axis dimensions with
NaN elements in the target vector are excluded from
the adaptation step.
Thus, NaN entries act as if they were missing values.
INITIALISATION:
Weights are set by calling ctrl_unit(cmode, u), where cmode is
one of the following:
- NST_I_RND
- uniformly between RND_LIMIT1 and RND_LIMIT2
- NST_I_NOR
- uniformly between RND_LIMIT1 and RND_LIMIT2
and subsequent normalization to unit length.
- NST_I_ZERO
- set all weights to zero
- NST_I_USER
- set the weights of each unit k to a user defined
value.
If mode=0, this is the value present at the
common input field X_in at the time of the k+1 - th
exec_unit call that follows the ctrl_unit call for
this unit. In this case, no computation besides
weight setting is performed for this unit, until
nodes exec_unit calls have been issued for this
unit.
SEE ALSO:
vq_unit
STATUS:
Status of this *documentation* is alpha.
FILE
/homes/jontrup/nst5/man/../o.sol2//../foldersrc/nst_adaptive.c