पाठ 25 / 28

वर्गीकरण, Routing और Few-Shot Labelling

सस्ते, तेज़ classifiers के लिए embeddings को features की तरह उपयोग करें।

Vectors के ऊपर छोटा classifier

Embeddings पाठ वर्गीकरण को सरल समस्या बना देते हैं। Labelled उदाहरण embed करें और vectors पर हल्का classifier (logistic regression, k-nearest neighbours) प्रशिक्षित करें: इसे scratch से पाठ मॉडल प्रशिक्षित करने से कहीं कम labels चाहिए, यह माइक्रोसेकंड में चलता है, और दोबारा प्रशिक्षित करना आसान है। शून्य-प्रशिक्षण रूप है nearest-prototype routing: प्रति श्रेणी कुछ उदाहरण वाक्य embed करें, उनका औसत centroid बनाएँ, और नए पाठ को निकटतम centroid से जोड़ें, ऐसी similarity सीमा के साथ जिसके नीचे उत्तर "अज्ञात / मनुष्य को भेजें" है। यह intent routing, tagging और triage के लिए अच्छा चलता है। Held-out उदाहरणों पर confusion matrix से प्रति श्रेणी सटीकता जाँचें, और उन श्रेणियों पर नज़र रखें जिन्हें embedding अलग नहीं करता।

Nearest-centroid routing (उदाहरण)

मानता है कि embed() इकाई vectors लौटाता है; यहाँ चलाया नहीं गया क्योंकि इसे असली embedding model चाहिए।

import numpy as np

examples = {
    "billing":   ["I was charged twice", "refund my invoice"],
    "technical": ["the app crashes on start", "cannot log in"],
}
centroids = {}
for label, texts in examples.items():
    c = np.mean([embed(t) for t in texts], axis=0)
    centroids[label] = c / np.linalg.norm(c)

def route(text, threshold=0.45):
    v = embed(text)
    label, score = max(((l, float(v @ c)) for l, c in centroids.items()), key=lambda x: x[1])
    return label if score >= threshold else "unknown"          # below threshold: send to a human

त्वरित जाँच: Nearest-centroid routing में similarity सीमा क्यों रखें?

  • Embeddings से बचने के लिए
  • Vectors लंबे करने के लिए
  • ताकि विषय-बाह्य इनपुट ज़बरदस्ती ग़लत label की जगह "अज्ञात" बनें
  • प्रशिक्षण तेज़ करने के लिए
Answer

ताकि विषय-बाह्य इनपुट ज़बरदस्ती ग़लत label की जगह "अज्ञात" बनें — Nearest-neighbour तरीक़े हमेशा कुछ लौटाते हैं; सीमा विरत रहने देती है।