First get the following files from the web http://www.cs.toronto.edu/~hinton/csc321/matlab/batchify8.m http://www.cs.toronto.edu/~hinton/csc321/matlab/doitall23.m http://www.cs.toronto.edu/~hinton/csc321/matlab/plot23test.m http://www.cs.toronto.edu/~hinton/csc321/matlab/getscores.m http://www.cs.toronto.edu/~hinton/csc321/matlab/rbmlearn.m http://www.cs.toronto.edu/~hinton/csc321/matlab/showrbmweights.m http://www.cs.toronto.edu/~hinton/csc321/matlab/assignment5data.mat http://www.cs.toronto.edu/~hinton/csc321/matlab/show.m http://www.cs.toronto.edu/~hinton/csc321/matlab/getoverlap.m rbmlearn is a script that implements the learning algorithm for a restricted Boltzmann machine. To use it you must set the variable restart=1; You must also set values for numhid (the number of hidden units) and maxepoch (the maximum number of epochs to use for training). rbmlearn prints out the sum of the squared differences between the data and the reconstruction of the data from the hidden units. It also prints out the weights every 100 epochs. After you have done load assignment5data; and have set the values for numhid and maxepoch, the script doitall23 will train a model on the dataset train2 and use the model to get scores for all the images in the datasets test2 and test3. It will also train a model on the dataset train3 and get scores from that model for the two test sets. Finally it will plot each test case at a location determined by the scores that the two models give it. PART 1: (4 points) You should use doitall23 to investigate how the number of hidden units and the number of training epochs influence how well the two test classes can be separated just by looking at their scores under the two models. Hand in a plot of the test cases for a particular number of hidden units and training epochs (it does not need to be in color). Also hand in a description of how you chose the number of hidden units and training epochs. Your description must be less than one page. PART 2: (4 points) Try training a smaller model and a larger model for each class. This will involve modifying the script doitall23.m or writing another script that calls it and saves the scores that doitall23 produces. Then average the scores of the smaller and larger models before using plot23test. Hand in a plot for the smaller model scores, a plot for the larger model scores, and a plot for the average scores. Hand in a description that says how you decided on the sizes of the models and also contains anything interesting that you noticed about the three plots. Your description must be less than one page.