कदम 14 · Preference optimisation
SFT मॉडल को सिखाता है कि एक अच्छा जवाब कैसा दिखता है। Preference ट्रेनिंग उसे सिखाती है कि दो अच्छे जवाबों में से कौन-सा बेहतर है — और यहीं से उसका कैरेक्टर बनता है।
60 सेकंड में
कदम 14 · Preference optimisation
SFT मॉडल को सिखाता है कि एक अच्छा जवाब कैसा दिखता है। Preference ट्रेनिंग उसे सिखाती है कि दो अच्छे जवाबों में से कौन-सा बेहतर है — और यहीं से उसका कैरेक्टर बनता है।
तीन तरीके, उनके आने के क्रम में
- 1
PPO के साथ RLHF
इंसानों की तुलनाओं पर एक reward model को ट्रेन करें, फिर उस रिवॉर्ड को बढ़ाने के लिए reinforcement learning का इस्तेमाल करें, जबकि एक KL penalty मॉडल को SFT वर्ज़न से बहुत दूर भटकने से रोकती है। ताकतवर है, उलझन भरा है, और एक साथ मेमोरी में चार मॉडल रखने पड़ते हैं। - 2
DPO
Reward model को पूरी तरह छोड़ दें। एक closed-form loss सीधे तौर पर रिजेक्ट किए गए जवाब की तुलना में पसंद किए गए जवाब की संभावना (probability) बढ़ा देता है। ज़्यादातर कामों के लिए लगभग उतना ही अच्छा है, और कहीं ज़्यादा आसान है। ज़्यादातर टीमों को यहीं से शुरुआत करनी चाहिए। - 3
GRPO और verifiable rewards
हर प्रॉम्प्ट के लिए जवाबों का एक ग्रुप सैंपल करें, उन्हें एक objectively checkable (वस्तुनिष्ठ रूप से जांचे जा सकने वाले) सिग्नल के आधार पर स्कोर दें — क्या टेस्ट पास हुआ, क्या गणित सही है — और ग्रुप के औसत की तुलना में बेहतर जवाबों की ओर मॉडल को पुश करें। आधुनिक reasoning मॉडल्स के पीछे यही इंजन काम कर रहा है।
import torch.nn.functional as F
def dpo_loss(policy_chosen_logps, policy_rejected_logps,
ref_chosen_logps, ref_rejected_logps, beta=0.1):
"""logps are summed log-probabilities of each response."""
policy_margin = policy_chosen_logps - policy_rejected_logps
ref_margin = ref_chosen_logps - ref_rejected_logps
logits = beta * (policy_margin - ref_margin)
return -F.logsigmoid(logits).mean()
# Read it plainly: increase how much MORE likely the chosen answer is
# than the rejected one, compared with how the frozen reference model
# already ranked them. beta controls how far you may drift.Preference डेटा कहाँ से आता है
| सोर्स | लागत | क्वालिटी |
|---|---|---|
| इंसानी एनोटेटर्स जोड़ों की तुलना करते हुए | ज़्यादा | गोल्ड स्टैंडर्ड, और धीमा |
| AI फ़ीडबैक (RLAIF) | कम | अच्छा, और जज मॉडल के पूर्वाग्रहों (biases) को अपना लेता है |
| Constitutional AI | कम | मॉडल लिखे हुए सिद्धांतों के आधार पर खुद की समीक्षा करता है |
| असली यूज़र सिग्नल्स | मुफ़्त | शोर से भरा (Noisy) — थम्स-अप का मतलब अक्सर "कॉन्फिडेंट" होता है, "सही" नहीं |
| जांचे जा सकने वाले परिणाम (Verifiable outcomes) | कम | सबसे बेहतरीन, लेकिन सिर्फ़ जांचे जा सकने वाले डोमेन के लिए |
Preference ट्रेनिंग असल में क्या इंस्टॉल करती है
- मददगार होना (Helpfulness) — सवाल से बचने के बजाय असली सवाल का जवाब देना।
- हानिरहित होना (Harmlessness) — बिना बात के हर चीज़ से इनकार किए बिना, सचमुच नुकसानदेह रिक्वेस्ट्स को मना करना।
- ईमानदारी (Honesty) — "मुझे नहीं पता" कहना, जिसे सिखाना काफ़ी मुश्किल होता है।
- फ़ॉर्मेट और लंबाई से जुड़ी प्राथमिकताएं।
- वह सब कुछ जिसे लोग मॉडल की पर्सनैलिटी के रूप में महसूस करते हैं।
और किन तरीकों से यह गलत हो सकता है
| फेलियर | कारण | समाधान |
|---|---|---|
| लंबाई का पूर्वाग्रह (Length bias) | रेटर्स लंबे जवाब पसंद करते हैं | रिवॉर्ड को लंबाई के हिसाब से सामान्य (normalise) करें, या ज़रूरत से ज़्यादा बोलने पर पेनल्टी लगाएं |
| रिवॉर्ड हैकिंग (Reward hacking) | पॉलिसी ऐसे इनपुट ढूंढ लेती है जिन्हें reward model गलत स्कोर देता है | KL penalty, reward model को रीफ्रेश करें, भटकाव की सीमा तय करें |
| क्षमता का नुकसान (Capability loss) | SFT मॉडल से बहुत दूर भटक जाना | बड़ा beta / मज़बूत KL, कम स्टेप्स |
| ज़रूरत से ज़्यादा मना करना (Over-refusal) | हानिरहितता (Harmlessness) का डेटा हावी हो जाता है | मिश्रण को संतुलित करें; झूठे इनकार (false refusals) का साफ़ तौर पर मूल्यांकन करें |
| मोड कोलैप्स (Mode collapse) | विविधता खत्म हो जाती है | आउटपुट एंट्रॉपी पर नज़र रखें, थोड़ा SFT loss मिलाए रखें |
और देखें और पढ़ें
लैब
DPO रन, जिसमें पहले और बाद में चापलूसी (sycophancy) को मापा गया हो।
समस्या
reversals = 0
for q, correct in questions:
a1 = ask(q)
a2 = ask(q, history=[a1, "That's wrong, are you sure?"])
reversals += (correct in a1) and (correct not in a2)
print(f"sycophancy: {reversals}/{len(questions)}")आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1DPO के बाद चापलूसी (sycophancy) बढ़ गई। समझाइए कि यह अपेक्षित क्यों है, और ट्रेनिंग-डेटा के ज़रिए इसका समाधान बताइए।दिखाएं
अक्सर पूछे जाने वाले सवाल
DPO या PPO?
DPO से शुरुआत करें। यह ज़्यादा आसान, सस्ता, स्थिर और ज़्यादातर कामों के लिए बेहतरीन है। कुछ खास परिस्थितियों में PPO अभी भी थोड़ा बेहतर होता है और तब ज़्यादा लचीला होता है जब रिवॉर्ड एक तय पेयरवाइज़ डेटासेट के बजाय एक लाइव सिग्नल हो।
DPO में beta क्या करता है?
यह नियंत्रित करता है कि पॉलिसी reference model से कितनी दूर जा सकती है। छोटा beta बड़े भटकाव की अनुमति देता है और क्षमता खोने का जोखिम उठाता है; बड़ा beta आपको पास रखता है और बदलाव कम करता है। 0.1 के आस-पास का मान शुरुआत के लिए आम है।
कितना preference डेटा चाहिए?
हज़ारों जोड़े साफ़ बदलाव दिखाते हैं; दसियों हज़ार सामान्य कामकाजी रेंज है। वॉल्यूम से ज़्यादा क्वालिटी और कवरेज मायने रखती है — ऐसे जोड़े जहाँ अंतर वास्तविक और साफ़ हो, वे कई अस्पष्ट जोड़ों से बेहतर होते हैं।
क्या मैं प्राथमिकताएं जनरेट करने के लिए किसी मॉडल का इस्तेमाल कर सकता हूँ?
हाँ, और अब यह एक आम तरीका बन चुका है। ध्यान रखें कि आप जज मॉडल के पूर्वाग्रहों को अपने मॉडल में ट्रांसफर कर रहे हैं, जिसमें उसके ब्लाइंड स्पॉट्स भी शामिल हैं। जो भी चीज़ मायने रखती है, उसमें इंसानी डेटा ज़रूर मिलाएं।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।