PSC 128/NPB 163 - Information processing models

Lab #2 - Linear neuron models

(due Friday, Jan. 16)

1. Model fitting.  This problem is designed to show the perils of over-fitting data, similar to what was discussed in class. We provide a simulated dataset of "characteristic frequency" (cf) and "bandwidth" (bw) for 200 auditory cells. With these data, "cf" is considered the independent variable (i.e., the x-axis) and "bw" the dependent variable (y-axis). You can get this data set, hw1.mat, from the class homepage. You should plot the data first as individual data points. Here are some commands to get started:

>> load hw1.mat
>> whos
>> plot(cf,bw,'.')

(a) The variables cfsub and bwsub contain a subset of seven points extracted from the total dataset. Create a linear fit to this subsample of the data using the matlab routine polyfit.

(b) Now create a 5th-order polynomial fit to the subsample.

(c) Plot both fits, shown as solid lines, along with the subsample, shown as individual data points, on the same plot. Which of these fits the subsample better?

(d) Now plot both of your function fits from (a) and (b) along with the entire dataset. Which of these fits the entire data better?  What's going on?


2. Vectors.  Given the two-dimensional vector .
(a) Create a vector y that is orthogonal to x.  Show both x and y together on the same plot, using Matlab.  Use different line styles for x and y and use 'legend' to denote which is which.

(b) Create a vector z that is not orthogonal to x and plot both x and z in Matlab. Compute the angle between these vectors using the inner product and inverse cosine (acos).


3. Linear neuron.  Let’s say we have a linear neuron with two inputs whose corresponding weights are .  Plot the weight vector within the 2D space , and shade the portion of the input space for which the neuron would have a positive output value. (It may be easier to just do this by hand rather than in Matlab.)


4. Receptive field models.  Load the three receptive fields DOG.mat, Gaborh.mat, and Gaborv.mat (corresponding to three different neurons), in addition to the edge images (edges.mat) and the Einstein image (einstein.mat) from the class homepage.

(a) Plot the three different receptive fields side by side within the same figure using imagesc and subplot so you can see what they look like. Use the scaling option for imagesc to make sure that the grayscale for each is equivalent - i.e., so they are directly comparable.

(b) Show what each of the edge images looks like in the same manner - i.e., by showing them side by side in the same figure using subplot. You should see that they are just edges at different positions and orientations.

(c) Now, for each of your neurons, compute the inner product between its receptive field and each of the edge images. Plot your results for each neuron as a bar plot, with the position of the edge on the x-axis of each barplot.

(d) Finally, for each neuron, show what it would look like to have an entire array of these neurons processing the Einstein image. You can do this by typing

        pim=conv2(einstein,DOG,’same’);

where pim is your processed image. The function conv2 simply takes the array in the second argument, and computes the inner product between it and the array in the first argument at different positions within the array.  (This procedure of repeatedly computing inner products at different positions is called a 'convolution,' which we'll discuss next week.)