Let's look into the well known XOR example. We all know what this is right? The bitwise Exclusive Or produces a known and correct output given two inputs as shown below. Download the source code / demo for the Exclusive OR (XOR) problem.
Input data Output data
(1, 1) (0)
(1, 0) (1)
(0, 1) (1)
(0, 0) (0)
In Neural Networks, neurons have weighted inputs, activation function and an output. The input layer in this example has two elements (one for each bit). The hidden layer calculates values based on the forumula: f(Sum(inputs * weight)). The weight here is initialized to small random values, let's say between -1 to 1, with a mean of 0. This produces an output value and since we know what the expected output value is, we calculate this difference and call it the error. Then, this error is backpropagated to the hidden layer and the input layer where by the weights are adjusted so that each time the same input pattern is presented to the network, the output will be a little closer to the expected output. The goal of training is to minimize this error a little bit during each iteration, aka epoch. Here's a snippet from my powerpoint presentation that sums this process up. -For each input-output pattern
–Evaluate output
–Calculate the error between output and expected output
–Adjust weights in the output layer
*Do the same for the hidden layer(s)
You're probably asking the question - why do we need a Neural Network to give us the answer of an XOR operation. We don't. It is for theoretical and teaching purposes. Now, the real uses of this is technique is widely seen in the AI of video games. Here is a statement that caught my eye when researching this topic.An agent was trained in Quake III by to collect items, engage in combat, and navigate a map. The controller was a neural network that learned by backpropagation on pre-recorded demos of human players, using the player’s weapon information and location as inputs.*From Backpropagation without Human Supervision for Visual Control in Quake II by Matt Parker and Bobby D. Bryant
No comments:
Post a Comment