This programming assignment is to simulate Backpropagation algorithm to solve the following non-linear separable problem. The cube is given. Eight corners of this cube are classified into two groups. Corners of E, H, D, and A belong to one group and the remaining corners belong to the other group.
QUESTION
This programming assignment is to simulate Backpropagation algorithm to solve the following non-linear separable problem.
The cube is given. Eight corners of this cube are classified into two groups.
Corners of E, H, D, and A belong to one group and the remaining corners belong to the other group.
Train your 3-layer neural network to classify this problem. You will need 3 input units in the input layer. One output unit is enough to solve this problem, but if you want to have more than one output unit for your exercise, that is fine. You can have any number of hidden units. As a final training, print your result!
G (0,1,1) H (1,1,1)
E (0,0,1) F(1,0,1)
C (0,1,0) D (1,1,0)
A (0,0,0) B (1,0,0)
The given problem can be displayed as below too.
Input data | Target output | ||||||
attribute1 | attribute2 | attribute3 | |||||
A | 0 | 0 | 0 | 0 | |||
B | 1 | 0 | 0 | 1 | |||
C | 0 | 1 | 0 | 1 | |||
D | 1 | 1 | 0 | 0 | |||
E | 0 | 0 | 1 | 0 | |||
F | 1 | 0 | 1 | 1 | |||
G | 0 | 1 | 1 | 1 | |||
H | 1 | 1 | 1 | 0 | |||
- Print your result by running your program. Submit a copy of your program along with your printed result.
- Submit your source program.
-
ANSWER
- To simulate the Backpropagation algorithm for solving the non-linear separable problem described, we can implement a 3-layer neural network. The problem involves classifying the eight corners of a cube into two groups.Let’s define the structure of the neural network:
– Input Layer: The input layer consists of 3 input units corresponding to the three attributes (attribute1, attribute2, attribute3) of each corner of the cube.
– Hidden Layer: We can have any number of hidden units in the hidden layer. The choice of the number of hidden units depends on the complexity of the problem and can be determined through experimentation.
– Output Layer: The output layer contains one output unit, which will provide the classification result.
Now, let’s outline the steps to train the neural network using the Backpropagation algorithm:
- Iterate through the training data (input attributes and target output) multiple times (epochs).
- For each input attribute, propagate it forward through the network, calculating the weighted sum and applying the activation function (e.g., sigmoid) at each layer to obtain the output.
- Calculate the error between the network’s output and the target output.
- Propagate the error backward through the network, adjusting the weights and biases using the gradient descent optimization algorithm.
- Repeat steps 3-5 until the network converges or reaches a predefined stopping criterion (e.g., maximum number of epochs or desired error threshold).
Once the training is complete, we can evaluate the performance of the neural network by running it on the given input data and printing the results.
Here’s a sample implementation in Python:
“`python
import numpy as np
# Define the activation function (sigmoid)
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# Define the derivative of the sigmoid function
def sigmoid_derivative(x):
return sigmoid(x) * (1 – sigmoid(x))
# Define the Backpropagation algorithm
def backpropagation(X, y, hidden_units, epochs, learning_rate):
# Initialize weights and biases
input_units = X.shape[1]
output_units = y.shape[1]
hidden_weights = np.random.randn(input_units, hidden_units)
hidden_biases = np.zeros(hidden_units)
output_weights = np.random.randn(hidden_units, output_units)
output_bias = np.zeros(output_units)
# Training loop
for _ in range(epochs):
# Forward propagation
hidden_layer_output = sigmoid(np.dot(X, hidden_weights) + hidden_biases)
output_layer_output = sigmoid(np.dot(hidden_layer_output, output_weights) + output_bias)
# Backward propagation
output_error = y – output_layer_output
output_delta = output_error * sigmoid_derivative(output_layer_output)
hidden_error = output_delta.dot(output_weights.T)
hidden_delta = hidden_error * sigmoid_derivative(hidden_layer_output)
# Update weights and biases
output_weights += hidden_layer_output.T.dot(output_delta) * learning_rate
output_bias += np.sum(output_delta, axis=0) * learning_rate
hidden_weights += X.T.dot(hidden_delta) * learning_rate
hidden_biases += np.sum(hidden_delta, axis=0) * learning_rate
return output_layer_output
# Define the input data and target output
X = np.array([[0, 0, 0],
[1, 0, 0],
[0, 1, 0],
[1, 1, 0],
[0, 0, 1],
[1, 0, 1],
[0, 1, 1],
[1, 1
, 1]])
y = np.array([[0],
[1],
[1],
[0],
[0],
[1],
[1],
[0]])
# Set the hyperparameters
hidden_units = 4
epochs = 10000
learning_rate = 0.1
# Train the neural network
output = backpropagation(X, y, hidden_units, epochs, learning_rate)
# Print the result
print(output)
“`
This program implements the Backpropagation algorithm using a sigmoid activation function and gradient descent for weight and bias updates. The number of hidden units is set to 4, but you can experiment with different values to see how it affects the performance. The program trains the neural network for 10,000 epochs with a learning rate of 0.1. Finally, it prints the output of the neural network for the given input data.
Please note that this is a basic implementation, and for practical applications, you may need to consider additional techniques such as regularization, mini-batch updates, and more advanced activation functions and architectures.
Remember to optimize the SEO of your essay by including relevant keywords and phrases related to the topic, such as Backpropagation algorithm, neural network, non-linear separable problem, cube classification, etc.
Initialize the weights and biases randomly for all connections between layers.

We've got everything to become your favourite writing service
Money back guarantee
Your money is safe. Even if we fail to satisfy your expectations, you can always request a refund and get your money back.
Confidentiality
We don’t share your private information with anyone. What happens on our website stays on our website.
Our service is legit
We provide you with a sample paper on the topic you need, and this kind of academic assistance is perfectly legitimate.
Get a plagiarism-free paper
We check every paper with our plagiarism-detection software, so you get a unique paper written for your particular purposes.
We can help with urgent tasks
Need a paper tomorrow? We can write it even while you’re sleeping. Place an order now and get your paper in 8 hours.
Pay a fair price
Our prices depend on urgency. If you want a cheap essay, place your order in advance. Our prices start from $11 per page.