الوحدة 5 · ما بعد الأساسيات
أين تقع النماذج اللغوية الكبيرة والـ Embeddings
17 دقراءة 4 داختر بحكمة
الدرس في لمحة
اشرح ما هو النموذج اللغوي الكبير وما هو الـ embedding، وقارن النصوص بالـ cosine similarity، واحكم متى يكون النموذج اللغوي الكبير أو الـ embeddings أو نموذج scikit-learn الكلاسيكي هو الأداة الصحيحة.
لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.
غيّرت النماذج اللغوية الكبيرة ما تستطيع البرمجيات فعله بالنصوص، وصار كل فريق بيانات يُسأل الآن: “ألا يمكننا استخدام LLM لهذا فحسب؟”. أحيانًا تكون الإجابة نعم. وكثيرًا ما تكون “لجزء منه”. ولتجيب جيدًا، تحتاج إلى صورة دقيقة عمّا هي الـ LLMs والـ embeddings، وهذه الصورة مبنية من أفكار استخدمتها طوال الدورة.
ما هو الـ LLM
النموذج اللغوي الكبير (large language model) شبكة عصبية، تكاد تكون دائمًا transformer، مدرَّبة على كمية هائلة من النصوص بهدف واحد: بالنظر إلى النص حتى الآن، تنبّأ بالـ token التالي (كلمة أو جزء من كلمة). هذا هو التدريب المسبق (pretraining). وحين يُنفَّذ على نطاق كافٍ، يجبر التنبؤ بالـ token التالي الشبكةَ على استيعاب القواعد والحقائق والأساليب وقدر مدهش من سلوك يشبه الاستدلال، لأن كل ذلك يساعد على توقّع ما يأتي بعد.
ثم يحصل النموذج المدرَّب مسبقًا على تدريب إضافي ليتّبع التعليمات ويعطي إجابات مفيدة وآمنة، عادةً بأمثلة كتبها بشر وبتغذية راجعة من تفضيلات بشرية أو من ذكاء اصطناعي. وحين ترسل إليه prompt، يحسب احتمالًا لكل token تالٍ ممكن، ويختار واحدًا (مع شيء من العشوائية يتحكم فيه إعداد الـ temperature)، ويضيفه، ثم يكرّر.
ثلاث نتائج تهمّ عالم البيانات:
- المخرجات نص مولَّد، لا احتمال مقيس. إذا سألته “ما احتمال انقطاع هذا العميل؟” وقال “70%”، فهذا الرقم لم يُعايَر مقابل النتائج الفعلية كما عوير
predict_probaفي القسم 3. - قد يخطئ بثقة. الطلاقة ليست دقة. وأي شيء تبنيه على LLM يحتاج إلى بيانات اختبار ذات labels وخط أساس، تمامًا كنموذج الانقطاع.
- يكلّف مع كل استدعاء مالًا وزمن استجابة، وقد يُرسل البيانات خارج أنظمتك. أما الانحدار اللوجستي فيقيّم مليون عميل في أقل من ثانية على حاسوب محمول.
الـ Embeddings: النص كإحداثيات
الفكرة الأكثر نفعًا بهدوء هي الـ embedding (التمثيل المتّجهي). يقرأ نموذج الـ embedding قطعة نص ويُعيد متّجهًا ثابت الطول، غالبًا من عدة مئات إلى بضعة آلاف من الأرقام، مرتّبًا بحيث تحصل النصوص المتشابهة في المعنى على متّجهات متقاربة. فتصبح تذاكر الدعم في Cartwheel صفوفًا من الأرقام، وكل ما تعرفه عن صفوف الأرقام ينطبق عليها.
يُقاس القرب بـ الـ cosine similarity (تشابه جيب التمام): جيب تمام الزاوية بين متّجهين، 1 للاتجاه نفسه، وقرب 0 لما لا علاقة بينهما. قارن ذلك بـ features عدّ الكلمات التي يستطيع scikit-learn بناءها بنفسه:
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
tickets = ["My parcel never arrived", "The package did not show up",
"I was charged twice for one order", "Refund the duplicate payment please",
"How do I change my delivery address"]
tfidf = TfidfVectorizer().fit_transform(tickets)
print("TF-IDF similarity of ticket 0 to the others:", cosine_similarity(tfidf)[0].round(2))
# Illustrative 4-number "embeddings" (real ones come from an embedding model and are far longer)
emb = np.array([[0.90, 0.10, 0.00, 0.20], [0.85, 0.15, 0.05, 0.10],
[0.05, 0.90, 0.10, 0.00], [0.10, 0.85, 0.20, 0.05],
[0.30, 0.00, 0.10, 0.90]])
print("embedding similarity of ticket 0 to the others:", cosine_similarity(emb)[0].round(2))يعدّ TF-IDF الكلمات المشتركة. “parcel never arrived” و"package did not show up" لا تشتركان في أي كلمة، فيعطيهما 0، ومع ذلك يربط التذكرة 0 بسؤال العنوان لأن كلتيهما تحتوي “my”. أما الـ embeddings فتعطي شكويَي التوصيل قيمة شبه متطابقة. المتّجهات هنا مصنوعة يدويًا لتوضيح الفكرة؛ أما نموذج الـ embedding الحقيقي فينتج هذا السلوك من تدريبه، مع نصوص لم يرَها قط.
أين تقع كل أداة في Cartwheel
| المهمة | الأداة المناسبة | السبب |
|---|---|---|
| التنبؤ بالانقطاع من حقائق العملاء | scikit-learn على الجدول | بيانات جدولية ذات labels، وتحتاج إلى درجات معايَرة ورخيصة وقابلة للاختبار |
| توجيه تذاكر الدعم إلى الفرق | Embeddings + انحدار لوجستي، أو LLM | المدخل نص؛ والـ embeddings تجعلها مصنِّفًا كلاسيكيًا |
| إيجاد تذاكر مشابهة لتذكرة جديدة | Embeddings + أقرب الجيران | البحث بالتشابه هو بالضبط ما وُجدت له الـ embeddings |
| تلخيص شكاوى أسبوع لمدير | LLM | المخرج نص حرّ؛ ويراجعه شخص |
| إضافة “موضوع الشكوى” كـ feature للانقطاع | Embeddings ← k-means، أو label من LLM | يحوّل النص إلى عمود يستطيع نموذج الانقطاع اختباره |
الصف الأخير هو حيث يلتقي العالمان. يصبح النص feature؛ ويقرّر التحقق المتقاطع ما إذا كان يساعد. ولا يتغيّر شيء في الانضباط لأن الـ feature جاء من نموذج كبير.
أيًّا كان النموذج الذي تطلقه، فسيتخذ قرارات بشأن أشخاص. يسأل الدرس القادم ما إذا كانت هذه القرارات جيدة بالقدر نفسه للجميع، وما الذي يجب مراقبته بعد الإطلاق.
أهم النقاط
- النموذج اللغوي الكبير (LLM) شبكة transformer مدرَّبة مسبقًا على التنبؤ بالـ token التالي في كميات هائلة من النصوص، ثم مضبوطة لاتّباع التعليمات.
- مخرجات الـ LLM نص مولَّد بالسحب، لا احتمال معايَر، فهي تحتاج إلى انضباط التقييم نفسه الذي يحتاجه أي نموذج: بيانات اختبار ذات labels وخط أساس.
- نموذج الـ embedding يحوّل النص إلى متّجه ثابت الطول بحيث تقع النصوص المتشابهة في المعنى قريبة من بعضها؛ ويقيس الـ cosine similarity مدى هذا القرب.
- تحوّل الـ embeddings النص غير المهيكل إلى features تستطيع الأدوات الكلاسيكية (k-NN والانحدار اللوجستي وk-means) استخدامها.
- في التنبؤات الجدولية مثل الانقطاع، تبقى نماذج scikit-learn أرخص وأسرع وأسهل في التحقق؛ أما الـ LLMs والـ embeddings فتستحق مكانها مع النصوص.