# Preference Tuning: RLHF और DPO — Fine-tuning बनाम Prompting

Source: https://www.skillbyai.com/hi/fine-tuning/h-pref

> एकल उत्तरों की जगह तुलनाओं पर प्रशिक्षित करें।

## लोग क्या पसंद करते हैं सिखाना

SFT एक अच्छा उत्तर दिखाती है; अक्सर यह कहना आसान है कि दो उत्तरों में कौन **बेहतर** है। **RLHF** मानव रैंकिंग पर reward model प्रशिक्षित करता है, फिर language model को उसके विरुद्ध optimise करता है। **DPO** reward model छोड़ देता है और (चुना, अस्वीकृत) जोड़ियों पर सीधे प्रशिक्षित करता है, जमा **reference model** के मुक़ाबले चुने उत्तर की सापेक्ष संभावना बढ़ाते हुए। जोड़ी के लिए policy = reference पर DPO loss `log 2 ≈ 0.693` है, policy चुने उत्तर को reference से अधिक पसंद करे तो घटता है, और अस्वीकृत को पसंद करे तो बढ़ता है। अति-optimise करना वाचालता या चापलूसी ला सकता है, इसलिए held-out तुलनाओं और असली कार्यों पर आँकें।

## एक जोड़ी पर DPO loss, चलाकर

मैंने यह सादे Python 3 (सिर्फ़ standard library) से उदाहरण संख्याओं के साथ चलाया। Policy = reference पर loss 0.6931 (log 2) है; जो policy चुने उत्तर को बढ़ाती और अस्वीकृत को घटाती है वह 0.5130 पाती है; उल्टी 0.9130 तक बढ़ती है। Log-probabilities एक जोड़ी के उदाहरण अंक हैं।

```python
import math

def dpo_loss(policy_chosen, policy_rejected, ref_chosen, ref_rejected, beta=0.1):
    """Direct Preference Optimisation loss for one preference pair, from sequence log-probabilities."""
    margin = beta * ((policy_chosen - ref_chosen) - (policy_rejected - ref_rejected))
    return math.log(1 + math.exp(-margin))                      # = -log(sigmoid(margin))

ref = (-12.0, -11.0)                                            # reference model log-probs of (chosen, rejected)
for name, pol in (("policy = reference", (-12.0, -11.0)),
                  ("prefers chosen more", (-10.0, -13.0)),
                  ("prefers rejected more", (-14.0, -9.0))):
    print(f"{name:22} loss {dpo_loss(pol[0], pol[1], ref[0], ref[1]):.4f}")

```

Output:

```
policy = reference     loss 0.6931
prefers chosen more    loss 0.5130
prefers rejected more  loss 0.9130
```

## एकसमान label करें

Raters को लिखित मानदंड दें और उनकी सहमति मापें; शोर वाली preferences शोर वाला व्यवहार सिखाती हैं।

**Quiz:** Preference tuning कौन-सा डेटा उपयोग करती है?

- [ ] सिर्फ़ कच्चे web pages
- [x] चुने बनाम अस्वीकृत के रूप में labelled उत्तरों की जोड़ियाँ
- [ ] सिर्फ़ images
- [ ] GPU temperature logs

*Answer:* चुने बनाम अस्वीकृत के रूप में labelled उत्तरों की जोड़ियाँ. तुलनाएँ सिखाती हैं कौन-से व्यवहार पसंद हैं।
