How Neural Networks Solve the XOR Problem by Aniruddha Karajgi

How Neural Networks Solve the XOR Problem by Aniruddha Karajgi

xor implementation in neural network

Logic gates are the basic building blocks of digital circuits. They decide which set of input signals will trigger the circuit using boolean operations. They commonly have two inputs in binary form (0,1) and produce one output (0 or 1) after performing a boolean operation. At the same time, the output values for each of the 4 different inputs were also plotted on separate graphs (Fig. 14).

If not, we reset our counter, update our weights and continue the algorithm. We know that a datapoint’s evaluation is expressed by the relation wX + b . The perceptron basically works as a threshold function — non-negative outputs are put into one class while negative ones are put into the other class. This process is repeated until the predicted_output converges to the expected_output. It is easier to repeat this process a certain number of times (iterations/epochs) rather than setting a threshold for how much convergence should be expected. Our goal is to find the weight vector corresponding to the point where the error is minimum i.e. the minima of the error gradient.

Remember the linear activation function we used on the output node of our perceptron model? You may have heard of the sigmoid and the tanh functions, which are some of the most popular non-linear activation functions. Though there are many kinds of activation functions, we’ll be using a simple linear activation function for our perceptron. The linear activation function has no effect on its input and outputs it as is. Though there’s a lot to talk about when it comes to neural networks and their variants, we’ll be discussing a specific problem that highlights the major differences between a single layer perceptron and one that has a few more layers.

Neural networks are complex to code compared to machine learning models. If we compile the whole code of a single-layer perceptron, it will exceed 100 lines. To reduce the efforts and increase the efficiency of code, we will take the help of Keras, an open-source python library built on top of TensorFlow. The learning rate affects the size of each step when the weight is updated. If the learning rate is too small, the convergence takes much longer, and the loss function could get stuck in a local minimum instead of seeking the global minimum (true lowest point). As mentioned, the simple Perceptron network has two distinct steps during the processing of inputs.

Like in the ANN, each input has a weight to represent the importance of the input and the sum of the values must overcome the threshold value before the output is activated [3]. As the basic precursor to the ANN, the Perceptron is designed by Frank Rosenblatt to take in several binary inputs and produce one binary output. Some algorithms of machine learning like Regression, Cluster, Deep Learning, and much more.


The overall components of an MLP like input and output nodes, activation function and weights and biases are the same as those we just discussed in a perceptron. To bring everything together, we create a simple Perceptron class with the functions we just discussed. We have some instance variables like the training data, the target, the number of input nodes and the learning rate. The error function is calculated as the difference between the output vector from the neural network with certain weights and the training output vector for the given training inputs. I have made a lot of design choices here without saying how we came up with those numbers.

However, usually the weights are much more important than the particular function chosen. These sigmoid functions are very similar, and the output differences are small. Note that all functions are normalized in such a way that their slope at the origin is 1. We just need to do forward propagation again with the learned parameters.

T is for true and F for false, similar to binary values (1, 0). So we have to define the input and output matrix’s dimension (a.k.a. shape). X’s shape will be (1, 2) because one input set has two values, and the shape of Y will be (1, 1). Next, the activation function (and xor neural network the differentiated version of the activation function is defined so that the nodes can make use of the sigmoid function in the hidden layer. Some machine learning algorithms like neural networks are already a black box, we enter input in them and expect magic to happen.

For this ANN, the current learning rate (‘eta’) and the number of iterations (since one epoch only has 1 data set) (‘epoch’) are set at 0.1 and respectively. However, these values can be changed to refine and optimize the performance of the ANN. Lastly, the logic table for the XOR logic gate is included as ‘inputdata’ and ‘outputdata’.

How to create a Python library

The closer the resulting value is to 0 and 1, the more accurately the neural network solves the problem. Now let’s build the simplest neural network with three neurons to solve the XOR problem and train it using gradient descent. For this, we describe a sketch of the interaction between two basic elements in the formation of meaning—the one that represents the axiomatic step; and the one that represents the logical step.

Here, it can be observed that each output slowly converges towards the actual values that is expected (based on the logic table shown in Table 1). On the other hand, if the learning rate is too large, the steps will be too big and the function might consistently overshoot the minimum point, causing it to be unable to converge. When the Perceptron is ‘upgraded’ to include one or more hidden layers, the network becomes a Multilayer Perceptron Network (MLP). As we know that for XOR inputs 1,0 and 0,1 will give output 1 and inputs 1,1 and 0,0 will output 0. A clear non-linear decision boundary is created here with our generalized neural network, or MLP. Though the output generation process is a direct extension of that of the perceptron, updating weights isn’t so straightforward.

xor implementation in neural network

As I will show below it is very easy to implement the model as described above and train it using a package like keras. However, since I wanted to get a better understanding of the backpropagation algorithm I decided to first implement this algorithm. And now let’s run all this code, which will train the neural network and calculate the error between the actual values of the XOR function and the received data after the neural network is running.

The Shadow chain should be synchronously reset with the LFSR at any reset event. As all of the DFT scan chains are scanned synchronously, and the length of the scan chain is usually short with on-chip compression, the architecture only needs a single short Shadow chain, which has low area penalty. Furthermore, as the Shadow chain is plugged into the scan chains, it is not bypassable. The hidden layer performs non-linear transformations of the inputs and helps in learning complex relations.

The empty list ‘errorlist’ is created to store the error calculated by the forward pass function as the ANN iterates through the epoch. A simple for loop runs the input data through both the forward pass and backward pass functions as previously defined, allowing the weights to update through the network. Lastly, the list ‘errorlist’ is updated by finding the average absolute error for each forward propagation. This allows for the plotting of the errors over the training process. Following this, two functions were created using the previously explained equations for the forward pass and backward pass. In the forward pass function (based on equation 2), the input data is multiplied by the weights before the sigmoid activation function is applied.

Tuning the parameters of the network

We use this work of art as a metaphor for the process of deconstructing language in this book until we reach its universal elements. Obviously, you can code the XOR with a if-else structure, but the idea was to show you how the network evolves with iterations in an-easy-to-see way. Now that you’re ready you should find some real-life problems that can be solved with automatic learning and apply what you just learned. And, in my case, in iteration number 107 the accuracy rate increases to 75%, 3 out of 4, and in iteration number 169 it produces almost 100% correct results and it keeps like that ‘till the end. As it starts with random weights the iterations in your computer would probably be slightly different but at the end, you’ll achieve the binary precision, which is 0 or 1.

Encryption technique based on chaotic neural network space shift … –

Encryption technique based on chaotic neural network space shift ….

Posted: Tue, 21 Jun 2022 07:00:00 GMT [source]

In common implementations of ANNs, the signal for coupling between artificial neurons is a real number, and the output of each artificial neuron is calculated by a nonlinear function of the sum of its inputs. ANN is based on a set of connected nodes called artificial neurons (similar to biological neurons in the brain of animals). Each connection (similar to a synapse) between artificial neurons can transmit a signal from one to the other. The artificial neuron receiving the signal can process it and then signal to the artificial neurons attached to it.

Neural nets used in production or research are never this simple, but they almost always build on the basics outlined here. Hopefully, this post gave you some idea on how to build and train perceptrons and vanilla networks. We need to look for a more general model, which would allow for non-linear decision boundaries, like a curve, as is the case above. We know that the imitating the XOR function would require a non-linear decision boundary.

Since we cannot implement the Sigmoid function on Hardware directly a lookup table was used instead of using the Sigmoid function. But for the hardware implementation, Sigmoid functions had to scale from 100 to 0. So that values fit in the range of 8-bit signed values (Max 127 and min -128). A python script was created to generate the required mapping of the Sigmoid function. Alternativly, you can simple implement a Sigmoid type functions using just comparators. But for generalized use case I have used a lookup table here.

The recursive process in language provokes meaning creation (output) as consequence of a process in which experience and the learning machine (hidden layer of recursion) help to add more and more details. The language universal algorithm is conceived as a universal structure of natural intelligence. This dynamic functioning of axiomatic and logical functions of the linguistic system carries sensory and conceptual representations (Dretske, 1995; Pitt, 2020), distinguishing experiences and thoughts.

xor implementation in neural network

Basically, it makes the model more flexible, since you can “move” the activation function around. The goal of the neural network is to classify the input patterns according to the above truth table. If the input patterns are plotted according to their outputs, it is seen that these points are not linearly separable.

This is our final equation when we go into the mathematics of gradient descent and calculate all the terms involved. To understand how we reached this final result, see this blog. 7, the ANN becomes more and more accurate as the number of iterations it goes through increases. While the error falls slowly in the beginning, the speed at which the weights were updated increased drastically after around 2000 iterations.

Can we implement XOR using linear function?

Linearly separable data basically means that you can separate data with a point in 1D, a line in 2D, a plane in 3D and so on. A perceptron can only converge on linearly separable data. Therefore, it isn't capable of imitating the XOR function.

Learning to train a XOR logic gate with bare Python and Numpy. 9.4, the DOS architecture is composed of a linear feedback shift register (LFSR), a Shadow chain with XOR gates, and a Control Unit. An OLTP workload with read and write accesses to small data blocks will result in an unbalanced disk load if all updates are uniform over data blocks are carried out as Read-Modify-Wrote – RMW accesses.

Programming and training rate-independent chemical reaction … –

Programming and training rate-independent chemical reaction ….

Posted: Thu, 09 Jun 2022 07:00:00 GMT [source]

Interestingly, we observe that the MSE first drops rapidly, but the MSE does not converge to zero. In other words, the training as described above does not lead to a perfect XOR gate; it can only classify 3 pair of inputs correctly. TensorFlow is an open-source machine learning library designed by Google to meet its need for systems capable of building and training neural networks and has an Apache 2.0 license. It can be seen that the Shadow chain is designed as a cascade of λ flip-flops, which is driven by the scan clock gated by scan enable signal. 9.4, the data input of its first flip-flop is connected to Vdd.

Before I get into building a neural network with Python, I will suggest that you first go through this article to understand what a neural network is and how it works. Now let’s get started with this task to build a neural network with Python. Let’s look at a simple example of using gradient descent to solve an equation with a quadratic function. For perfect correlation, the leading diagonal elements XORrr should be larger than 0.9, while the off-diagonal entries |XORrq| should be less than 0.1. One must differentiate reduction errors from discrepancies between the FEM and the test model.

In comparison, the PL-type genotypes offer inferior performance, because of a larger genetic space, failing on both the XOR4 and XOR5 versions. Again, oPLRW gives better results than nPLRW, while PL is definitely the best of this group. Deconvolution image of the bottom right shows how a recursive process by wavelets provides an improvement of information. If the XOR binary operator is used, the resulting generator is called a two-tap generalized feedback shift register and is a variant of the popular Mersenne Twister (MT) (see Section 3.10). Python is commonly used to develop websites and software for complex data analysis and visualization and task automation.

What is the best solution to implement XOR unit?

The XOr problem is that we need to build a Neural Network (a perceptron in our case) to produce the truth table related to the XOr logical operator. This is a binary classification problem. Hence, supervised learning is a better way to solve it. In this case, we will be using perceptrons.