Python代写｜Adaptive Intelligence Assignment 1
The aim of this report will be to summarise the work done on competitive learning in
Lab 4. You will be working with a modified version of dataset called EMNIST[1, 2]. It is
similar to the MNIST dataset with images on a grid of 28×28 pixels but with handwritten
letters instead of digits. For simplicity, the dataset has been restricted to the capital
letters A to J (i.e 10 classes) with 500 samples of each class. The format of the dataset
is the same as in the MNIST dataset, rows correspond to input patterns and columns
to attributes (or features). The provided .mat file contains an array called train images
which contains the data needed for training. Keep in mind that the EMNIST dataset is
not normalised. Please note that for educational purposes only, labels are provided. In
general, this is not the case for problems where we use unsupervised learning approaches.
Therefore your replies should not make use the labels as part of the arguments.
Your task is to implement the standard competitive learning algorithm on a one layer
network and use it to cluster the set of hand-written letters. You may choose the number
of output units such that you can capture all 10 characters and tune the network such
that it will learn quickly and result in as few dead units as possible. To do this, you
will have to implement a method for detecting dead units among the prototypes without
visualising the weights. Please note: do not forget to normalise the weight vector and
the data at the beginning of the process.
In your report you should address the following points but are also encouraged to expand
upon these where possible:
1. Explain what is meant by unsupervised learning. What are the key ingre
dients and the objective?
2. Give a brief description of the competitive learning algorithm, including
the update rule for the network weights. Is it batch or online and what is
the difference between the two? Why is it important to normalise data and weight
vectors for competitive learning to work? What could happen otherwise? Give a
3. Give a description of the technique(s) you used to improve the training
of the network and what you achieved by using them. Provide a measure
ment of improvement (i.e. How many dead units you have on average. Perform
statistics over at least 10 different initial conditions). Include a description of your
method for identifying dead units without the need of visualising the prototypes.
4. Plot the running average of the reconstruction error as a function of
time. Change the number of output neurons and include the running
average for this on the same plot. From the lectures, the reconstruction error
for an individual sample xµ is
where k is the index of the winning neuron for that pattern and j runs over
the input neurons. An exponential running average can be updated using E¯t =
E¯t−1(1 − α) + αEt, where E¯t is the running average, α the smoothing factor and
Et the error calculated at iteration t. The first step is a boundary case and you
should set E¯0 = E0 (or t = 1 for MATLAB). When has your network sufficiently
learned from the data? How has changing the number of output neurons affected
the error? Such a curve might be more informative on semi-log or log-log axes.
5. Plot the prototypes (weight vectors) and a discuss on what they rep
resent. How many prototypes did your network find? You should reshape the
prototypes so that they are each the same shape as the input data (i.e 28 × 28)