पाठ 11 / 27
Overfitting, Epochs और Early Stopping
जब validation गुणवत्ता सुधरना बंद करे तब रोकें।
प्रशिक्षण set रटना सीखना नहीं है
डेटा के लिए बहुत लचीला मॉडल प्रशिक्षण उदाहरणों को, शोर समेत, रट लेता है और नए इनपुट पर बदतर करता है: overfitting। अलग रखे validation set से पहचानें: प्रशिक्षण सटीकता बढ़ती रहती है जबकि validation रुकती या गिरती है। उपाय: कम epochs और early stopping (सबसे अच्छे validation वाला checkpoint रखें), अधिक और विविध डेटा, regularisation (weight decay, dropout, कम LoRA rank) और कम learning rate। छोटे datasets पर एक से तीन epochs आम हैं; अति-प्रशिक्षित LLMs प्रशिक्षण उत्तर तोते की तरह दोहराते और सामान्य क्षमता खोते हैं।
प्रशिक्षण बनाम validation सटीकता, चलाकर
मैंने यह Python, numpy 2.5.3 और scikit-learn 1.9.1 के साथ, निश्चित random seeds पर चलाया। यह छोटे क्लासिकल मॉडल प्रशिक्षित करता है, language model नहीं: तंत्र (gradient descent, learning rate, overfitting, forgetting, low-rank अद्यतन) वही विचार हैं जो LLM के fine-tuning पर लागू होते हैं, पर संख्याएँ LLM के परिणाम नहीं हैं। 60 प्रशिक्षण उदाहरण और 60 features पर सबसे अधिक regularised मॉडल underfit करता है (लगभग 0.53 train, 0.55 validation), मध्यम regularisation (C = 0.01) सबसे अच्छी validation सटीकता 0.667 देती है, और कमज़ोर regularisation प्रशिक्षण पूरी तरह फ़िट करती है (1.000) जबकि validation 0.58 से 0.63 तक गिरती है।
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
rng = np.random.default_rng(2)
X = rng.normal(size=(120, 60)) # many features, few examples, weak real signal
y = (X[:, 0] + X[:, 1] + rng.normal(size=120) * 1.5 > 0).astype(int)
Xtr, Xva, ytr, yva = train_test_split(X, y, test_size=0.5, random_state=0)
print("regularisation C (higher = fewer limits) | train acc | validation acc")
for C in (0.001, 0.01, 0.1, 1, 100):
m = LogisticRegression(C=C, max_iter=5000).fit(Xtr, ytr)
print(f"{C:>40} | {m.score(Xtr, ytr):9.3f} | {m.score(Xva, yva):.3f}")
Output:
regularisation C (higher = fewer limits) | train acc | validation acc
0.001 | 0.533 | 0.550
0.01 | 0.850 | 0.667
0.1 | 1.000 | 0.633
1 | 1.000 | 0.600
100 | 1.000 | 0.583Checkpoints सहेजें और तुलना करें
कई checkpoints को held-out डेटा पर आँकें और सबसे अच्छा रखें, सिर्फ़ आख़िरी नहीं।
त्वरित जाँच: Overfitting का क्लासिक संकेत क्या है?
- पहले चरण पर loss ठीक शून्य है
- दोनों वक्र शुरू से सपाट हैं
- Validation हमेशा प्रशिक्षण से बेहतर है
- प्रशिक्षण प्रदर्शन सुधरता रहता है जबकि validation रुकता या बिगड़ता है
Answer
प्रशिक्षण प्रदर्शन सुधरता रहता है जबकि validation रुकता या बिगड़ता है — डेटा अलग रखें और अंतर देखें।