I am working on a prototype for an Ev3 Neural Network. Because for competitions, we are not allowed to use Bluetooth or Wifi connections, the neural network must be made with the Ev3 block-based programming system (LabView for Lego Mindstorms). I am currently working on a feed-forward neural network that uses a genetic algorithm to learn. I will now explain the specifics.
The neural network has a simple job: learn the difference between blue and red. The network has three layers (input, hidden, output). There are two inputs. Both inputs are reflected light intensity, measured one after another with the same sensor. The hidden layer has three neurons which perform a summation and output the value with a sigmoid function. The output layer has one neuron. Values above or equal to 0.5 are outputted as blue while the rest are outputted as red.
Since there are no calculus blocks in LabView for mindstorms, the summation is performed as a series of multiplication and addition problems. e is estimated as 2.71828182846 in the sigmoid function. Every neuron has sigmoid rectification except the input neurons.
The reason I chose to differentiate red and blue is because it is a good place to start and LabView for Mindstorms has a block that already knows the difference between blue and red (Color - Color Sensor Block). I can use this to tell the program if its guesses were right or wrong.
Because the Mindstorm is a feed-forward neural network, it has both weights and biases. The weights and biases are randomly selected between the values -5 to 5. (these were arbitrally chosen, I am not sure what to choose).
Using this network, the program generates 10 (arbitrarily chosen number) different "species" (I am not sure what to call these) each with 12 different weights and biases. I make each "species" take a test of 10 (arbitrarily chosen number) questions on which they are given a grade (# of right/ total #) based on their guess and the real answer.
The program then generates a list of all the grades. Using a bubble sort program (which I have created, but haven't been successful) there are 90 comparisons that are made to sort the grades from greatest to least. The top two grades are chosen and their associated "species" have 10 offspring generated by randomly selecting the weights and biases of the two.
Then the whole process is then repeated and theoretically, the best list of weights and biases should be generated.
Not having any schooling in Deep Learning or programming, I am wondering if I am doing anything wrong. So far, I have completed the randomization of weights/biases, the structure of the neural network, and the bubble sorting of the test scores ( which still has not worked). I am suspicious that my inputs both being reflected light intensity and my weight/bias constrain to -5 to 5 may prevent my network from performing optimally. Please provide your guidance on what I should fix or if more information is necessary. Thank you for your time.