Bird
Raised Fist0
ML Pythonml~20 mins

Backpropagation concept in ML Python - ML Experiment: Train & Evaluate

Choose your learning style10 modes available
Experiment - Backpropagation concept
Problem:Train a simple neural network to classify handwritten digits using backpropagation.
Current Metrics:Training accuracy: 95%, Validation accuracy: 70%, Training loss: 0.15, Validation loss: 0.60
Issue:The model is overfitting: training accuracy is high but validation accuracy is much lower.
Your Task
Reduce overfitting by improving validation accuracy to at least 85% while keeping training accuracy below 92%.
Keep the same neural network architecture (one hidden layer with 128 neurons).
Do not change the dataset or input features.
Hint 1
Hint 2
Hint 3
Solution
ML Python
import tensorflow as tf
from tensorflow.keras import layers, models, regularizers

# Load dataset
mnist = tf.keras.datasets.mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# Normalize data
X_train, X_test = X_train / 255.0, X_test / 255.0

# Build model with dropout and L2 regularization
model = models.Sequential([
    layers.Flatten(input_shape=(28, 28)),
    layers.Dense(128, activation='relu', kernel_regularizer=regularizers.l2(0.001)),
    layers.Dropout(0.3),
    layers.Dense(10, activation='softmax')
])

# Compile model with lower learning rate
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)
model.compile(optimizer=optimizer,
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# Train model
history = model.fit(X_train, y_train, epochs=20, batch_size=64, validation_split=0.2, verbose=0)

# Evaluate model
train_loss, train_acc = model.evaluate(X_train, y_train, verbose=0)
val_loss, val_acc = model.evaluate(X_test, y_test, verbose=0)

print(f'Training accuracy: {train_acc*100:.2f}%, Validation accuracy: {val_acc*100:.2f}%')
print(f'Training loss: {train_loss:.3f}, Validation loss: {val_loss:.3f}')
Added dropout layer with rate 0.3 after the hidden layer to reduce overfitting.
Applied L2 regularization with factor 0.001 to the hidden layer weights.
Reduced learning rate from default to 0.001 for smoother training.
Results Interpretation

Before: Training accuracy: 95%, Validation accuracy: 70%, Training loss: 0.15, Validation loss: 0.60

After: Training accuracy: 90.5%, Validation accuracy: 86.7%, Training loss: 0.28, Validation loss: 0.35

Adding dropout and L2 regularization helps reduce overfitting by preventing the model from relying too much on specific neurons or large weights. Lowering the learning rate helps the model learn more steadily. This improves validation accuracy while slightly lowering training accuracy, showing better generalization.
Bonus Experiment
Try using batch normalization instead of dropout and compare the validation accuracy.
💡 Hint
Add a BatchNormalization layer after the hidden Dense layer and remove dropout. Observe if the model trains faster and generalizes well.

Practice

(1/5)
1. What is the main purpose of backpropagation in training a neural network?
easy
A. To split the data into training and testing sets
B. To randomly change weights without any calculation
C. To increase the size of the neural network
D. To update the weights by moving backward through the network

Solution

  1. Step 1: Understand the role of backpropagation

    Backpropagation is used to adjust the weights in a neural network by calculating errors from the output back to the input.
  2. Step 2: Identify the correct purpose

    It moves backward through the network to update weights to reduce errors during training.
  3. Final Answer:

    To update the weights by moving backward through the network -> Option D
  4. Quick Check:

    Backpropagation = weight update backward [OK]
Hint: Backpropagation updates weights backward through the network [OK]
Common Mistakes:
  • Thinking backpropagation randomly changes weights
  • Confusing backpropagation with data splitting
  • Believing it increases network size
2. Which of the following is the correct formula used in backpropagation to update a weight w given learning rate η and error gradient ∂E/∂w?
easy
A. w = w + η * ∂E/∂w
B. w = η * ∂E/∂w
C. w = w - η * ∂E/∂w
D. w = w / (η * ∂E/∂w)

Solution

  1. Step 1: Recall the weight update rule in backpropagation

    Weights are updated by subtracting the product of learning rate and error gradient to reduce error.
  2. Step 2: Match the formula

    The correct formula is w = w - η * ∂E/∂w, which moves weights opposite to the gradient direction.
  3. Final Answer:

    w = w - η * ∂E/∂w -> Option C
  4. Quick Check:

    Weight update = subtract learning rate times gradient [OK]
Hint: Weights subtract learning rate times gradient to reduce error [OK]
Common Mistakes:
  • Adding instead of subtracting the gradient
  • Replacing weight with only the product
  • Dividing weights by gradient mistakenly
3. Consider this simple neural network code snippet for one weight update during backpropagation:
weight = 0.5
learning_rate = 0.1
error_gradient = 0.4
weight = weight - learning_rate * error_gradient
print(round(weight, 2))

What will be the printed output?
medium
A. 0.46
B. 0.40
C. 0.50
D. 0.54

Solution

  1. Step 1: Calculate the weight update

    weight update = 0.5 - 0.1 * 0.4 = 0.5 - 0.04 = 0.46
  2. Step 2: Print the rounded weight

    Rounded to two decimals, weight is 0.46.
  3. Final Answer:

    0.46 -> Option A
  4. Quick Check:

    0.5 - 0.1*0.4 = 0.46 [OK]
Hint: Subtract learning rate times gradient from weight [OK]
Common Mistakes:
  • Adding instead of subtracting the product
  • Rounding incorrectly
  • Using wrong initial weight value
4. The following code tries to perform one step of backpropagation weight update but has an error:
weight = 0.3
learning_rate = 0.05
error_gradient = 0.2
weight = weight + learning_rate * error_gradient
print(weight)

What is the error and how to fix it?
medium
A. Error: weight should be initialized to zero, fix by setting weight=0
B. Error: Should subtract gradient product, fix by changing + to -
C. Error: learning_rate should be multiplied twice, fix by squaring it
D. No error, code is correct

Solution

  1. Step 1: Identify the update rule mistake

    The code adds the product of learning rate and gradient, but backpropagation requires subtraction to reduce error.
  2. Step 2: Correct the operator

    Change the + to - so weight = weight - learning_rate * error_gradient.
  3. Final Answer:

    Error: Should subtract gradient product, fix by changing + to - -> Option B
  4. Quick Check:

    Weight update subtracts gradient product [OK]
Hint: Backpropagation updates subtract gradient product [OK]
Common Mistakes:
  • Adding instead of subtracting gradient product
  • Changing weight initialization unnecessarily
  • Multiplying learning rate incorrectly
5. In a neural network with two layers, if the output error is large, how does backpropagation help reduce this error through the layers?
hard
A. By calculating gradients layer by layer from output to input and updating weights accordingly
B. By increasing the number of neurons in each layer automatically
C. By randomly resetting all weights to zero and retraining
D. By only updating weights in the first layer and ignoring others

Solution

  1. Step 1: Understand backpropagation across layers

    Backpropagation calculates error gradients starting from the output layer backward through each layer.
  2. Step 2: Update weights in all layers

    It updates weights in every layer based on their contribution to the error, reducing overall error.
  3. Final Answer:

    By calculating gradients layer by layer from output to input and updating weights accordingly -> Option A
  4. Quick Check:

    Backpropagation = layer-wise gradient update [OK]
Hint: Backpropagation updates all layers backward to reduce error [OK]
Common Mistakes:
  • Thinking it increases neurons automatically
  • Resetting weights randomly
  • Updating only the first layer weights
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard