# Learning Curves: जब प्रशिक्षण prompt के उदाहरणों से आगे निकलता है — Fine-tuning बनाम Prompting

Source: https://www.skillbyai.com/hi/fine-tuning/p-curve

> देखें अधिक labelled डेटा मुट्ठी भर shots से बेहतर क्यों हो सकता है।

## समझौते की क्लासिकल उपमा

क्लासिकल खिलौना कार्य में एक तरीक़ा labelled उदाहरण रखकर हर नए इनपुट को निकटतम उदाहरण से मिलाता है (**few-shot prompting** जैसा: वह समग्र नियम नहीं सीख सकता), जबकि दूसरा सारे उदाहरणों पर classifier **प्रशिक्षित** करता है (fine-tuning जैसा)। बहुत कम उदाहरणों पर वे समान हैं; डेटा बढ़ने पर प्रशिक्षित मॉडल सुधरता रहता है जबकि उदाहरण-मिलान चपटा हो जाता है। असली LLM prompting nearest-neighbour मिलान से कहीं अधिक सक्षम है, इसलिए यह सिर्फ़ वक्रों के **रूप** को दिखाता है। अपने कार्य का वक्र जाँचें: डेटा जोड़ने पर सटीकता अब भी बढ़ रही हो तो प्रशिक्षण मदद कर सकता है।

## Lookup के रूप में उदाहरण बनाम प्रशिक्षण, चलाकर

मैंने यह 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 के परिणाम नहीं हैं। 3 labelled उदाहरणों पर दोनों लगभग 0.46 पाते हैं; 1,500 पर निकटतम-उदाहरण 0.689 और प्रशिक्षित classifier 0.846 तक। खिलौना सिर्फ़ वक्रों का रूप दिखाता है।

```python
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier

# A toy "task": tell 3 ticket categories apart from 20 noisy numeric features (a stand-in for text features).
rng = np.random.default_rng(0)
centers = rng.normal(size=(3, 20)) * 1.0
def make(n): 
    y = rng.integers(0, 3, n); X = centers[y] + rng.normal(size=(n, 20)) * 2.2
    return X, y
Xtest, ytest = make(3000)

print("labelled examples | few-shot nearest-example (prompt-like) | trained classifier (fine-tune-like)")
for n in (3, 6, 15, 60, 300, 1500):
    X, y = make(n)
    knn = KNeighborsClassifier(n_neighbors=1).fit(X, y)
    clf = LogisticRegression(max_iter=2000).fit(X, y)
    print(f"{n:17d} | {knn.score(Xtest, ytest):37.3f} | {clf.score(Xtest, ytest):.3f}")

```

Output:

```
labelled examples | few-shot nearest-example (prompt-like) | trained classifier (fine-tune-like)
                3 |                                 0.458 | 0.462
                6 |                                 0.549 | 0.575
               15 |                                 0.631 | 0.726
               60 |                                 0.635 | 0.717
              300 |                                 0.662 | 0.826
             1500 |                                 0.689 | 0.846
```

## तय करने से पहले plot करें

अपने कार्य को prompt या प्रशिक्षण set में 10, 50, 200 उदाहरणों से आँकें; ढलान बताती है कि और डेटा जुटाना सार्थक है या नहीं।

**Quiz:** Learning curve क्या सुझाती है?

- [ ] दोनों रेखाएँ समान हैं
- [ ] अधिक डेटा हमेशा नुक़सान करता है
- [ ] प्रशिक्षण कभी मदद नहीं करता
- [x] प्रशिक्षित मॉडल वहाँ सुधरता रह सकता है जहाँ उदाहरण-मिलान चपटा हो जाता है

*Answer:* प्रशिक्षित मॉडल वहाँ सुधरता रह सकता है जहाँ उदाहरण-मिलान चपटा हो जाता है. अपना वक्र जाँचें: डेटा के साथ सटीकता अब भी चढ़ती हो तो प्रशिक्षण फलदायी हो सकता है।
