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