Skip to content

जनरेट किए गए टेक्स्ट का मानवीय मूल्यांकन

LLM और NLG आउटपुट का ठोस मानवीय मूल्यांकन कैसे चलाएँ: मापदंडों की सटीक परिभाषा, निरपेक्ष बनाम pairwise रेटिंग का चुनाव, अध्ययन को पर्याप्त power देना, और इतना ब्योरा दर्ज करना कि कोई और उसे दोहरा सके।

BLEU और ROUGE जैसे स्वचालित मेट्रिक का इस बात से संबंध कमज़ोर है कि जनरेट किया गया टेक्स्ट असल में कितना अच्छा है, इसलिए मानक आज भी मानवीय मूल्यांकन ही है, और वह अक्सर ठीक से नहीं किया जाता। भरोसेमंद मानवीय मूल्यांकन को दिखावटी मूल्यांकन से तीन चीज़ें अलग करती हैं: हर मापदंड को सटीक परिभाषित करना, निरपेक्ष स्कोर के बजाय तुलनात्मक निर्णय को तरजीह देना, और इतना ब्योरा दर्ज करना कि कोई और उसे दोबारा चला सके। यह मार्गदर्शिका प्रक्रिया के बारे में है, rubric की शब्दावली के बारे में नहीं।

मानवीय मूल्यांकन क्यों, और उस पर भरोसा करना मुश्किल क्यों

खुले सिरे वाले जनरेशन के लिए, यानी सारांश, संवाद, अनुवाद, LLM के जवाब, स्वचालित मेट्रिक संदर्भ टेक्स्ट से तुलना करते हैं और जो असल में मायने रखता है उसका ज़्यादातर हिस्सा चूक जाते हैं: संदर्भ से अलग शब्दों में लिखा गया धाराप्रवाह और सही जवाब कम अंक पाता है, जबकि धाराप्रवाह झूठ अच्छे अंक ले जाता है। इसलिए ground truth आज भी मानवीय निर्णय ही है। पेच यह है कि मानवीय मूल्यांकन खुद एक मापन उपकरण है, और खराब डिज़ाइन वाला उपकरण उतनी ही शोरभरी संख्याएँ देता है जितनी उन मेट्रिक ने दी थीं जिनकी जगह वह लिया गया।

समस्या कितनी बड़ी है, यह दर्ज है। Howcroft et al. (2020) ने बीस साल के NLG मूल्यांकनों का सर्वेक्षण किया और पाया कि क्षेत्र इस पर भी एकमत नहीं था कि उसके अपने मापदंडों का मतलब क्या है, “fluency”, “adequacy” और “naturalness” जैसे शब्द अलग-अलग पेपरों में अलग तरह से परिभाषित थे, या परिभाषित ही नहीं थे, जिससे नतीजों की तुलना असंभव हो जाती है। उनका सुझाया हल किसी भी गंभीर मूल्यांकन का शुरुआती बिंदु है, पहला निर्णय जुटाने से पहले ही तय कर लीजिए कि हर मापदंड का मतलब ठीक-ठीक क्या है।

मापदंडों को सटीक परिभाषित करें

ज़्यादातर मानवीय मूल्यांकन धुँधले मापदंडों की वजह से बिगड़ते हैं। “1 से 5 तक गुणवत्ता आँकिए” कहने पर हर एनोटेटर गुणवत्ता की अपनी परिभाषा गढ़ लेता है। इसे नाम वाले, अलग-अलग परिभाषित आयामों में बाँटिए और हर एक के लिए एक वाक्य की काम-लायक परिभाषा लिखिए:

  • Fluency: टेक्स्ट व्याकरण के हिसाब से ठीक और सुगठित है या नहीं, चाहे वह सही हो या न हो?
  • Coherence: वाक्य एक-दूसरे के बाद समग्र रूप से समझ में आने वाले ढंग से आते हैं?
  • Faithfulness / तथ्यात्मक सटीकता: क्या हर दावा स्रोत से पुष्ट है (सारांश/RAG के लिए) या सच है (खुले जनरेशन के लिए)? Hallucination यहीं पकड़ में आते हैं।
  • Relevance: जवाब सचमुच prompt को संबोधित करता है?
  • Helpfulness: सहायक-शैली के कार्यों में, क्या वह वही करता है जो उपयोगकर्ता चाहता था?

इन्हें अलग-अलग मापने से पता चलता है कि एक सिस्टम दूसरे से बेहतर क्यों है, सिर्फ़ यह नहीं कि है।

निरपेक्ष स्कोर या तुलनात्मक निर्णय

डिज़ाइन का सबसे बड़ा फ़ैसला यह है कि एनोटेटर एक बार में एक आउटपुट आँकें या कई की आपस में तुलना करें।

  • निरपेक्ष (Likert) रेटिंग आसान तो है, पर scale bias से ग्रस्त रहती है: एनोटेटर अलग-अलग जगह लंगर डालते हैं, सिरों से बचते हैं, और एक ही सत्र के दौरान खिसकते रहते हैं, इसलिए एक रेटर का “4” दूसरे रेटर के “4” जैसा नहीं होता।
  • Pairwise वरीयता (A बेहतर है या B?) scale bias से पूरी तरह बच निकलती है और आम तौर पर ज़्यादा भरोसेमंद रहती है, इसीलिए RLHF वरीयता डेटा और मॉडल तुलना इसी पर टिके हैं। कीमत यह है कि आपको क्रम मिलता है, निरपेक्ष स्तर नहीं।
  • Best-worst scaling एक छोटा समूह दिखाकर सिर्फ़ सबसे अच्छा और सबसे खराब पूछती है, जो कम निर्णयों से भरोसेमंद क्रम पाने का सस्ता तरीका है।

van der Lee et al. (2021) इन्हीं चुनावों पर सर्वोत्तम व्यवहार के दिशानिर्देश देते हैं, कितने आइटम और कितने मूल्यांकनकर्ता, कौन-सा scale, कौन-सा सांख्यिकीय विश्लेषण, और डिज़ाइन तय करने से पहले इन्हें पढ़ लेना चाहिए।

पर्याप्त power दें, और दर्ज करें

डिज़ाइन ठीक हो जाने के बाद भी दो तरह की चूक बची रहती है।

पहली, कम power वाली तुलनाएँ। दो अच्छे सिस्टमों के बीच का छोटा गुणवत्ता अंतर पकड़ने में उम्मीद से ज़्यादा आइटम लगते हैं, इसलिए पहले power analysis कीजिए, ठीक सार्थकता परीक्षण इस्तेमाल कीजिए, और सिर्फ़ यह मत बताइए कि किसका औसत ऊँचा था, effect size भी बताइए।

दूसरी, ब्योरा दर्ज न करना। Belz et al. (2021) ने NLP में पुनरुत्पादनीयता की समीक्षा की और पाया कि मानवीय मूल्यांकन दोहराना ख़ासकर मुश्किल है, आम तौर पर इसलिए कि पेपर में ठीक-ठीक मापदंड, निर्देश, एनोटेटर समूह और विश्लेषण छूट जाते हैं। यह सब अध्ययन के हिस्से के रूप में दर्ज कीजिए, बाद में सोचने की चीज़ मानकर नहीं।

कुछ व्यावहारिक बातें जो टाली जा सकने वाले पूर्वाग्रह रोकती हैं: आउटपुट का क्रम बेतरतीब रखिए ताकि स्थिति से कोई संकेत न रिसे (लोग पहले विकल्प को तरजीह देते हैं), सिस्टम की पहचान छिपाइए ताकि एनोटेटर को पता न चले कि कौन-सा मॉडल क्या लिख रहा है, और छोटे बैच पर pilot कीजिए ताकि पैमाना बढ़ाने से पहले सहमति नाप ली जाए और उलझाने वाले मापदंड सुधार लिए जाएँ।

Potato में यह कैसे करें

Potato में हर मूल्यांकन शैली के लिए एक स्कीमा है, इसलिए ऊपर का डिज़ाइन फ़ैसला सीधे कॉन्फ़िग में उतर आता है। प्रति मापदंड निरपेक्ष रेटिंग के लिए:

yaml
annotation_schemes:
  - name: faithfulness
    annotation_type: likert
    description: "Is every claim in the response supported by the source? 1 = many unsupported, 5 = fully supported."
    size: 5
  - name: fluency
    annotation_type: likert
    description: "Is the response grammatical and well-formed?"
    size: 5

अंधी A/B तुलना के लिए pairwise स्कीमा इस्तेमाल कीजिए और यह बेतरतीब रखिए कि A के तौर पर कौन-सा सिस्टम दिखाया जा रहा है:

yaml
annotation_schemes:
  - name: preference
    annotation_type: pairwise
    description: "Which response is more helpful overall?"
    labels: ["A is better", "Tie", "B is better"]

एक ही बार में संरचित, बहु-मापदंड स्कोरिंग के लिए rubric_eval स्कीमा हर rubric आयाम पर एक स्कोर जुटाती है। आप जो भी चुनें, एक साझा उपसमूह पर overlap बनाए रखें ताकि सहमति बताई जा सके, और एक्सपोर्ट में प्रति-एनोटेटर लेबल रखें ताकि सार्थकता परीक्षण को वह प्रसरण मिले जिसकी उसे ज़रूरत है।

आगे पढ़ें