I am trying to use the genetic algorithm to optimise a multi-layered neural network for image classification (i am using a subset of the MNIST handwritten digit data set as my initial dataset, but eventually would like to make it more general).
my neural network is represented by connection weight matrices with inputs as the rows an outputs as the columns (so element (3, 4) is the weight of the connection between input 3 and output 4, etc) and have an extra column and row for the biases of the inputs/outputs
the system seems to work well, it takes an input vector, multiplies it by the first layer matrix, uses the sigmoid function to determine whether that neuron will fire or not, then uses the output vector of that as the input to multiply by the 2nd layer and so on to the final layer, and i am getting the results that i expect with test data that i know the expected output for.
i have an idea of how i will implement the genetic algorithm to search for the best solutions, but my problem is that im having a little bit of trouble understanding how neural networks can be used to reconstruct images so i can test for the error between the input image and the reconstruction to test each solution for fitness.
i understand that i need to first encode the image into a vector of pixels, and that that input needs to be passed through the network to the end layer, but i am not sure what that end data is supposed to represent..
the dataset i am using are images of 28*28 pixels, so the structure of my network is as follows (inspired by the Hinton paper here):
484 -> 1000 -> 500 -> 250 -> 30
so the output of the whole thing will be a vector 31 (30 neurons +1 for the bias column/row) elements long
how should i use this vector to reconstruct the image?
i read somewhere that to decode information from a neural network you need to multiply the output by the transpose of the transformation matrix, but that doesnt really make sense as (for example):
T = [ 1 2 ;
3 4 ]
A = [ 5 6 ]
A * T = [ 23 34 ] = B
B * T' = [ 91 205 ] != A
clearly this is not a very good reconstruction of the original data..
can someone give an explanation as to how neural nets can be used to reconstruct data, and if possible, point me to some good resources on the subject?