Exercise 5: Basis
function network
Create a basis function network that computes a population code for the head-centered location of an object (ax) from population codes for the eye-centered location of the object (rx) and the position of the eyes (ex) (stick to the horizontal dimension for all variables). In 1 D, these variables are related to one another through:
ax=
rx+ex
In the input layers (the eye-centered location and the eye position layers), use 64 units equally spaced between –90 and +90 degree with gaussian tuning curves. Choose the width of the tuning curves to ensure large overlap between neighboring units.
1- Plot the activity pattern in both layers for an object located at 10 degrees in eye-centered coordinates while the eyes fixate at –20 degrees.
In the hidden layer (i.e. the basis function layer), create 64x64 array of units in which each unit takes the product between one eye-centered unit and one eye position unit.
Plot the activity of a representative unit in each layer (including the basis function layer), as a function of horizontal eye-centered location and eye position.
2- The goal of such a model would be to obtain a population of neurons in the output layer with gaussian tuning curves to the head-centered location of the object. To make your life easier, we will settle for a single unit with a gaussian tuning curve centered at zero.
Use the delta rule to adjust the weights between the basis function units and the output unit until the output unit shows the desired gaussian tuning curve in head-centered coordinates (for the width of the tuning curve, use twice the value you used in the input layers. It happens to make training easier). Basically, you need to go through the following steps on every trial:
Tips: try various values for a but start small (0.0001 or smaller...), and initialize the weights to small random values.
Once you’re done with training, plot the weights pattern, the desired tuning curve for the output unit and its actual tuning curve.