3.3.5 · HinglishDeep Learning Frameworks

Training loops from scratch

3,020 words14 min readRead in English

3.3.5 · AI-ML › Deep Learning Frameworks

Training loop kya hai?

Training loop ek iterative process hai jo random weights ko ek trained model mein badalta hai. Iske core mein yeh empirical risk minimization implement karta hai: woh parameters dhundo jo training data par average loss minimize karein.

YEH components kyun? Har step ek specific problem solve karta hai:

  • Forward pass: "Mera current model kya predict karta hai?"
  • Loss: "Main kitna galat hoon?" (error ka scalar measure)
  • Backward: "Kis weight ki wajah se yeh error hua?" (gradient flow)
  • Update: "Error kam karne ke liye weights kaise adjust karoon?"
  • Iteration: "Kya main generalize kar raha hoon, ya sirf memorize?"

Training loop ko first principles se derive karna

Shuruaat: Optimization objective

Hum expected risk minimize karna chahte hain:

YEH form kyun? Hum unseen data ki performance ki parwah karte hain jo distribution se aata hai, na ki sirf training examples ki.

Kyunki hum nahi jaante, hum empirical risk se approximate karte hain:

Average kyun? Raw sum dataset size ke saath badhta hai; averaging loss magnitude ko dataset-independent banata hai.

Objective se iterative updates tak

Direct minimization intractable hai neural networks ke liye (non-convex, millions of parameters). Iski jagah, hum gradient descent use karte hain:

Yeh kyun kaam karta hai: Gradient loss mein steepest increase ki taraf point karta hai; opposite direction mein jaana (negative gradient) loss locally decrease karta hai.

Problem yeh hai: compute karne ke liye full-dataset pass chahiye—jo bahut expensive hai!

Solution: Stochastic Gradient Descent (SGD) gradient ko mini-batch use karke approximate karta hai:

Batches kyun? Single examples bahut noisy hote hain; full dataset bahut slow hai; mini-batches variance aur computation ke beech balance karte hain.

Scratch se implementation: Step-by-step

Common mistakes aur unke fixes

Advanced: Learning rate scheduling aur early stopping

Ek fixed learning rate aksar underperform karta hai. Learning rate scheduling training ke dauran ko adapt karta hai.

Schedule kyun? Early training mein initialization se nikalne ke liye bade steps chahiye; late training mein minima mein settle hone ke liye chhote steps chahiye.

Early stopping validation loss monitor karke overfitting rokta hai:

best_val_loss = float('inf')
patience = 10  # Epochs to wait for improvement
patience_counter = 0
 
for epoch in range(max_epochs):
    train_loss = train_one_epoch(model, train_loader, optimizer)
    val_loss = evaluate(model, val_loader)
    if val_loss < best_val_loss:
        best_val_loss = val_loss
        save_checkpoint(model, 'best_model.pth')
        patience_counter = 0
    else:
        patience_counter += 1
    if patience_counter >= patience:
        print(f"Early stopping at epoch {epoch}")
        break

Yeh kyun kaam karta hai: Validation loss tab badhti hai jab model training noise memorize karne lagta hai → overfitting aur kharab hone se pehle rok do.

Diagram: Training loop flow

Figure — Training loops from scratch
Recall Ek 12-saal ke bacche ko samjhao

Socho tum blindfold hokar basketball free throws seekh rahe ho, aur sirf feel kar sakte ho ki kitna miss hua.

Training loop aise practice routine ki tarah hai:

  1. Ball shoot karo (forward pass) - apni current technique se shot maaro
  2. Feel karo ball kahan giri (compute loss) - left miss hua, right, short, ya long?
  3. Pata lagao kya galat hua (backward pass) - kya elbow zyada upar tha? Zyada power laga diya?
  4. Apna form adjust karo (update parameters) - elbow thoda kam moro, power thodi kam karo
  5. Phir shoot karo (next iteration) - adjusted technique se try karo

Har shot kuch chhota sikhata hai. Hundreds of shots (epochs) ke baad, tumhari muscle memory (weights) basket hit karne mein bahut achhi ho jaati hai. "Learning rate" waise hai jaise tum har baar kitna adjust karte ho - shuruaat mein bade changes jab bahut door ho, baad mein chhoti tweaks jab paas ho. Isme magic yeh hai ki tumhe basket dikhni nahi chahiye - sirf error feel karo aur step-by-step adjust karte jao, eventually tum ek great shooter ban jaate ho!

Connections

  • 3.1.02-Backpropagation-algorithm - Gradients backward kaise flow karte hain (loss.backward() ke peeche ka math)
  • 3.3.01-PyTorch-fundamentals - Tensors aur autograd jo training loops power karte hain
  • 3.3.06-Custom-loss-functions - Loss computation step mein kya jaata hai
  • 3.4.03-Learning-rate-schedules - Update step ke liye advanced strategies
  • 3.4.01-Batch-normalization - Woh layers jo train vs eval mode mein alag behave karti hain
  • 3.5.02-Data-loaders-and-batching - Loop ke liye batches kaise prepare hoti hain
  • 4.2.01-Gradient-descent-variants - SGD, Adam, RMSprop - alag-alag update rules
  • 5.1.01-Overfitting-and-underfitting - Kyun hum train vs validation loss monitor karte hain

#flashcards/ai-ml

Training loop ke paanch core components kya hain? :: 1. Forward pass (predictions compute karo), 2. Loss computation (error measure karo), 3. Backward pass (gradients compute karo), 4. Parameter update (optimizer apply karo), 5. Iteration (batches/epochs par repeat karo)

Hum full-batch gradient descent ki jagah mini-batch SGD kyun use karte hain?
Full-batch mein poore dataset par gradients compute karne padte hain (slow aur memory-intensive). Mini-batches gradient ko bahut kam computation mein approximate karte hain aur single-example SGD se kam noisy updates dete hain. Variance aur efficiency balance karte hain.
Empirical risk minimization kya hai?
Training data par average loss minimize karna, true data distribution par expected risk minimize karne ke proxy ke roop mein. Formula:
backward() se pehle optimizer.zero_grad() kyun call karna zaroori hai?
PyTorch default mein gradients accumulate karta hai. Zero kiye bina, pichle batches ke gradients current gradients mein jud jaate hain, jisse galat gradient magnitudes aur exploding gradients hote hain. Sirf tab intentionally skip karo jab gradient accumulation implement kar rahe ho.
Validation mein model.eval() bhoolne par kya hota hai?
Dropout aur BatchNorm jaise layers training-mode behavior use karti hain (random drops, running statistics ki jagah batch statistics), jo galat aur aksar pessimistic evaluation metrics deta hai. Validation se pehle hamesha model.eval() aur training se pehle model.train() call karo.
Mini-batches ke saath SGD ka update rule kya hai?
jahan mini-batch hai, learning rate hai, aur hum batch par gradient average karte hain.
Har epoch mein training data shuffle kyun karte hain?
Model ko batch order artifacts aur consecutive batches ke beech correlations seekhne se rokta hai. Shuffling ke bina, correlated samples gradient estimates bias kar dete hain aur model true underlying patterns ki jagah sequence pattern seekh sakta hai.
Early stopping kya hai aur yeh kyun kaam karta hai?
Validation loss monitor karna aur training tab rokna jab yeh improve karna band kar de (patience period ke baad). Kaam karta hai kyunki validation loss tab badhti hai jab model overfitting shuru kar deta hai (training noise memorize karna), toh is point se pehle rokna generalization preserve karta hai.
Gradient accumulation sahi tarike se kaise implement karte hain?
backward() se pehle loss ko accumulation_steps se divide karo, bina zero_grad() ke multiple batches mein gradients accumulate karo, phir accumulation_steps batches ke baad optimizer.step() aur zero_grad() call karo. Yeh ek bada effective batch size simulate karta hai.
Learning rate scheduling ka purpose kya hai?
Training ke dauran learning rate adapt karna - shuruaat mein initialization se jaldi nikalne ke liye bade steps, baad mein minima mein bina overshoot ke settle hone ke liye chhote steps. Common schedules: step decay, exponential decay, cosine annealing, reduce on plateau.

Concept Map

unknown D, approximate

intractable to minimize

full pass too slow

mini-batch estimate

step 1

feeds

measure error

gradients guide

theta update rule

repeat

Expected Risk objective

Empirical Risk average loss

Gradient Descent

Stochastic Gradient Descent

Training Loop

Forward Pass predictions

Loss computation

Backward Pass gradients

Parameter Update

Iteration batches x epochs