पाठ 12 / 27

Preference Tuning: RLHF और DPO

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

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

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 एक जोड़ी के उदाहरण अंक हैं।

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 शोर वाला व्यवहार सिखाती हैं।

त्वरित जाँच: Preference tuning कौन-सा डेटा उपयोग करती है?

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

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