February 27th, 2003

finished prototype model of vehicle chassis. It’s built out of Lego and has four-wheel drive, four-wheel independent suspension, and four-wheel steering.

I built a Lego car from instructions that I had made about a year ago. Actually, the instructions were just for a wheel design that had drive, suspension, and steering. I used this on the front and back wheels. I hadn’t connected a motor to it, because I only had one differential. I needed another for the front wheels.

February 20th, 2003 – March 8th, 2003

continued to improve learning algorithm. added learning information bank to ANN software. also made the learning process start over again if it didn’t get all of the expected results

There were many numbers involved with the learning algorithm that needed to be perfect. It was frustrating trying to get the new algorithm to work the way it was supposed to. One hard thing to do was find out when to stop. The error level would never, or at least not for a very, very long time reach zero. I had been guessing at this for a while, but I couldn’t find the best way to do this for a while. The answer was to check the error level of each output instead of all of them added together, and make sure that each one was below a specific threshold. I decided to make a learning information bank. This would be where the network would store information that the user wanted it to learn. When the user clicked the learn button, the network would start with the first picture and correct output. When the network got to the end of all the pictures, it would go through them very quickly and compare the answers that it got with the answers that it should get. If it got all of them correct, it would display a Complete Message. Otherwise it would start over again.

February 16th, 2003 - February 21st, 2003

made a new learning algorithm. also changed the neurons’ activation functions

Martin Ward, a semi-retired professor from the University of Australia gave me the suggestion that I change the activation function of the neurons so that instead of looking like this:

It looked like this:

I later learned that this type of function is called a sigmoid transfer function. The reason for changing it was that now any change of the input or of any weight would affect the output at least a little. This would make it easier to make the network learn. I could add a small positive number to a weight and then check if the output was closer to or farther from the correct output. If it was farther, I would add a negative number. This would solve my problem of what to do with the weights in the hidden layers, which were being randomly changed at the time. To get the output wanted, a neuron added up all of the inputs multiplied by there weights. We will call this number x. We’ll call the output n. This is what it did:

n = ((3 ^ (8 * x)) - 1) / ((3 ^ (8 * x)) + 1)