Perceptron - Example

Example

A perceptron learns to perform a binary NAND function on inputs and .

Inputs:, with input held constant at 1.

Threshold : 0.5

Bias : 0

Learning rate : 0.1

Training set, consisting of four samples:

In the following, the final weights of one iteration become the initial weights of the next. Each cycle over all the samples in the training set is demarcated with heavy lines.

Input Initial weights Output Error Correction Final weights
Sensor values Desired output Per sensor Sum Network
if then 1, else 0
1 0 0 1 0 0 0 0 0 0 0 0 1 +0.1 0.1 0 0
1 0 1 1 0.1 0 0 0.1 0 0 0.1 0 1 +0.1 0.2 0 0.1
1 1 0 1 0.2 0 0.1 0.2 0 0 0.2 0 1 +0.1 0.3 0.1 0.1
1 1 1 0 0.3 0.1 0.1 0.3 0.1 0.1 0.5 0 0 0 0.3 0.1 0.1
1 0 0 1 0.3 0.1 0.1 0.3 0 0 0.3 0 1 +0.1 0.4 0.1 0.1
1 0 1 1 0.4 0.1 0.1 0.4 0 0.1 0.5 0 1 +0.1 0.5 0.1 0.2
1 1 0 1 0.5 0.1 0.2 0.5 0.1 0 0.6 1 0 0 0.5 0.1 0.2
1 1 1 0 0.5 0.1 0.2 0.5 0.1 0.2 0.8 1 -1 -0.1 0.4 0 0.1
1 0 0 1 0.4 0 0.1 0.4 0 0 0.4 0 1 +0.1 0.5 0 0.1
1 0 1 1 0.5 0 0.1 0.5 0 0.1 0.6 1 0 0 0.5 0 0.1
1 1 0 1 0.5 0 0.1 0.5 0 0 0.5 0 1 +0.1 0.6 0.1 0.1
1 1 1 0 0.6 0.1 0.1 0.6 0.1 0.1 0.8 1 -1 -0.1 0.5 0 0
1 0 0 1 0.5 0 0 0.5 0 0 0.5 0 1 +0.1 0.6 0 0
1 0 1 1 0.6 0 0 0.6 0 0 0.6 1 0 0 0.6 0 0
1 1 0 1 0.6 0 0 0.6 0 0 0.6 1 0 0 0.6 0 0
1 1 1 0 0.6 0 0 0.6 0 0 0.6 1 -1 -0.1 0.5 -0.1 -0.1
1 0 0 1 0.5 -0.1 -0.1 0.5 0 0 0.5 0 1 +0.1 0.6 -0.1 -0.1
1 0 1 1 0.6 -0.1 -0.1 0.6 0 -0.1 0.5 0 1 +0.1 0.7 -0.1 0
1 1 0 1 0.7 -0.1 0 0.7 -0.1 0 0.6 1 0 0 0.7 -0.1 0
1 1 1 0 0.7 -0.1 0 0.7 -0.1 0 0.6 1 -1 -0.1 0.6 -0.2 -0.1
1 0 0 1 0.6 -0.2 -0.1 0.6 0 0 0.6 1 0 0 0.6 -0.2 -0.1
1 0 1 1 0.6 -0.2 -0.1 0.6 0 -0.1 0.5 0 1 +0.1 0.7 -0.2 0
1 1 0 1 0.7 -0.2 0 0.7 -0.2 0 0.5 0 1 +0.1 0.8 -0.1 0
1 1 1 0 0.8 -0.1 0 0.8 -0.1 0 0.7 1 -1 -0.1 0.7 -0.2 -0.1
1 0 0 1 0.7 -0.2 -0.1 0.7 0 0 0.7 1 0 0 0.7 -0.2 -0.1
1 0 1 1 0.7 -0.2 -0.1 0.7 0 -0.1 0.6 1 0 0 0.7 -0.2 -0.1
1 1 0 1 0.7 -0.2 -0.1 0.7 -0.2 0 0.5 0 1 +0.1 0.8 -0.1 -0.1
1 1 1 0 0.8 -0.1 -0.1 0.8 -0.1 -0.1 0.6 1 -1 -0.1 0.7 -0.2 -0.2
1 0 0 1 0.7 -0.2 -0.2 0.7 0 0 0.7 1 0 0 0.7 -0.2 -0.2
1 0 1 1 0.7 -0.2 -0.2 0.7 0 -0.2 0.5 0 1 +0.1 0.8 -0.2 -0.1
1 1 0 1 0.8 -0.2 -0.1 0.8 -0.2 0 0.6 1 0 0 0.8 -0.2 -0.1
1 1 1 0 0.8 -0.2 -0.1 0.8 -0.2 -0.1 0.5 0 0 0 0.8 -0.2 -0.1
1 0 0 1 0.8 -0.2 -0.1 0.8 0 0 0.8 1 0 0 0.8 -0.2 -0.1
1 0 1 1 0.8 -0.2 -0.1 0.8 0 -0.1 0.7 1 0 0 0.8 -0.2 -0.1

This example can be implemented in the following Python code.

threshold = 0.5 learning_rate = 0.1 weights = training_set = def sum_function(values): return sum(value * weight for value, weight in zip(values, weights)) while True: print '-' * 60 error_count = 0 for input_vector, desired_output in training_set: print weights result = 1 if sum_function(input_vector) > threshold else 0 error = desired_output - result if error != 0: error_count += 1 for index, value in enumerate(input_vector): weights += learning_rate * error * value if error_count == 0: break

Read more about this topic:  Perceptron

Famous quotes containing the word example:

    Our intellect is not the most subtle, the most powerful, the most appropriate, instrument for revealing the truth. It is life that, little by little, example by example, permits us to see that what is most important to our heart, or to our mind, is learned not by reasoning but through other agencies. Then it is that the intellect, observing their superiority, abdicates its control to them upon reasoned grounds and agrees to become their collaborator and lackey.
    Marcel Proust (1871–1922)