Mean Square Error Usage with Simple Python
1. Let’s simulate a basic neural network with 1 input, 1 neuron, and calculate MSE manually:
# Sample dataset
X = [1, 2, 3, 4] # Inputs
Y_true = [2, 4, 6, 8] # Expected outputs (2x relationship)
# Initial weight and bias (you can try different values)
weight = 1.0
bias = 0.0
# Predictions and MSE calculation
predictions = []
squared_errors = []
for i in range(len(X)):
y_pred = weight * X[i] + bias
predictions.append(y_pred)
error = Y_true[i] - y_pred
squared_errors.append(error ** 2)
mse = sum(squared_errors) / len(squared_errors)
print("Predictions:", predictions)
print("Squared Errors:", squared_errors)
print("Mean Squared Error:", mse)
2. Extending the previous example into a mini neural network training simulation with:
- One input
- One output neuron
- Manual weight and bias adjustment
- MSE-based learning across multiple epochs
Step-by-Step Logic for Training with MSE
We’ll add:
- Forward pass: Calculate predicted values using current weight & bias
- Loss calculation: Use MSE to compute error
- Backward pass (gradient descent): Adjust weights and bias based on error
- Repeat the above steps for multiple epochs
Python Code: Training with MSE over Epochs (No Libraries)
# Dataset
X = [1, 2, 3, 4]
Y_true = [2, 4, 6, 8] # Goal is to learn y = 2x
# Initialize weight and bias
weight = 0.0
bias = 0.0
# Learning rate
lr = 0.01
# Number of training iterations (epochs)
epochs = 50
# For visualizing the loss
loss_history = []
# Training loop
for epoch in range(epochs):
total_error = 0
dw = 0 # gradient for weight
db = 0 # gradient for bias
# Loop through each data point
for i in range(len(X)):
x = X[i]
y = Y_true[i]
# Forward pass: prediction
y_pred = weight * x + bias
# Error calculation
error = y - y_pred
total_error += error ** 2
# Gradients (partial derivatives of MSE w.r.t weight and bias)
dw += -2 * x * error
db += -2 * error
# Average the loss
mse = total_error / len(X)
loss_history.append(mse)
# Update weight and bias using gradient descent
weight -= lr * (dw / len(X))
bias -= lr * (db / len(X))
# Print progress
print(f"Epoch {epoch+1:2d} | MSE: {mse:.4f} | Weight: {weight:.4f} | Bias: {bias:.4f}")
# Final model
print("\nFinal Model: y = {:.2f}x + {:.2f}".format(weight, bias))
What You’ll See in Output:
- MSE goes down over epochs
- Weight gets closer to 2
- Bias gets closer to 0
- Shows how learning happens step by step!
3. Flowchart: MSE-Based Training with Weight Adjustment
flowchart TD
Start([Start: Initialize weights and bias])
A1[Set hyperparameters (learning rate, epochs)]
A2[Loop over Epochs]
A3[Initialize total error, dw, db = 0]subgraph Sample Loop [Loop through all training samples]
B1[Get x and y_true]
B2[Forward Pass: y_pred = weight * x + bias]
B3[Error = y_true – y_pred]
B4[Accumulate total_error += error²]
B5[Accumulate gradients: dw += -2 * x * error, db += -2 * error]
endA4[Compute MSE = total_error / n]
A5[Update weight: weight -= lr * (dw / n)]
A6[Update bias: bias -= lr * (db / n)]
A7{More Epochs?}
A8([End Training: Output final weight and bias])Start –> A1 –> A2 –> A3 –> Sample Loop
Sample Loop –> A4 –> A5 –> A6 –> A7
A7 — Yes –> A2
A7 — No –> A8
Flow Summary:
- Each epoch: all samples are used to calculate total error and gradients.
- MSE is computed to assess prediction error.
- Weight and bias are updated to reduce error (Gradient Descent).
- Process repeats for several epochs until error reduces sufficiently.
Mean Square Error usage in Neural Network Use Cases – Basic Math Concepts
