Few Shot Learning شرح بسيط (مع رسوم توضيحية وكود حقيقي)

Few Shot Learning: الأساسيات في مقال واحد — كود حقيقي، مخططات وخطوات ملموسة، مقتطفات من دورة مكونة من 35 درسًا.

Few Shot Learning شرح بسيط (مع رسوم توضيحية وكود حقيقي)

دليل مباشر وموجز: Few Shot Learning مفصل مع مخططات وأمثلة عملية وأوامر مجربة. كل ذلك من دورة منظمة من 11 فصلاً — إليك أفضلها.

tl;dr
  • مقدمة وتثبيت
  • لماذا الـ few-shot
  • أساسيات الـ meta-learning
  • المقاييس والمعايير المرجعية
  • شبكات Siamese
~$ cat ./parcours.md # Few Shot Learning — 10 فصول
01
مقدمة وتثبيت
→ عرض الدورة→ تثبيت PyTorch والبيئة+ 1 دروس أخرى
02
لماذا الـ few-shot
→ حدود التعلم العميق التقليدي→ حالات استخدام حقيقية للـ few-shot+ 1 دروس أخرى
03
أساسيات التعلم الفوقي
→ تعلم كيف تتعلم→ الحلقات ومجموعة الدعم ومجموعة الاستعلام+ 1 دروس أخرى
04
المقاييس والمعايير
→ Omniglot، « MNIST الـ few-shot »→ miniImageNet+ 1 دروس أخرى
05
شبكات سيامية
→ بنية سيامية→ خسارة التباين وخسارة الثلاثي+ 1 دروس أخرى
06
شبكات النماذج الأولية
→ فكرة النماذج الأولية→ المسافة الإقليدية والتصنيف+ 1 دروس أخرى
07
شبكات المطابقة
→ الانتباه للـ few-shot→ بنية شبكات المطابقة+ 1 دروس أخرى
08
MAML والتعلم الفوقي بالتدرج
→ التعلم الفوقي غير المعتمد على النموذج→ الحلقة الداخلية مقابل الحلقة الخارجية+ 1 دروس أخرى
🏁
المشروع النهائي (+ 2 فصول في الطريق)
→ تعود بمشروع ملموس وقابل للعرض

الـ attention للـ few-shot

NOTEالهدف — تقديم آلية الـ attention المطبقة على الـ few-shot. فهم فكرة Matching Networks (Vinyals et al. 2016): بدلاً من اختيار الفئة الأقرب، يتم حساب تركيبة مرجحة لكل أمثلة الدعم.

الأهداف التعليمية

TIPعند نهاية هذه الوحدة — ستتمكن من شرح ما هو الـ attention في التعلم العميق، ولماذا ينطبق تماماً على مشكلة الـ few-shot.

حدس الـ attention

الـ attention، في التعلم العميق، هو فكرة أن النموذج يستطيع إعطاء وزن مختلف لكل عنصر في مجموعة حسب السياق. عندما تقرأ جملة، لا يولي دماغك نفس الاهتمام لكل كلمة؛ بل يركز على الكلمات المهمة.

NOTEللـ few-shot — بدلاً من مقارنة الـ query بـ مرجع واحد فقط (Siamese) أو بالنموذج الأولي (ProtoNet)، تتم مقارنة الـ query بـ كل أمثلة الدعم في وقت واحد، بأوزان متعلمة.

تشبيه الفصل الدراسي

تخيل فصلاً دراسياً حيث يعطي كل طالب رأيه في إجابة سؤال. بدلاً من أخذ رأي الأفضل (Siamese)، أو متوسط الجميع (ProtoNet)، يتم الترجيح: الطالب الذي يبدو «قريباً» من الموضوع له صوت أكبر.

Siamese

نأخذ المثال الأقرب ونتجاهل الباقي. صوت واحد، صفر امتناع.

ProtoNet

نحسب المتوسط المتساوي لأمثلة الفئة. تصويت عادل بدون تمييز.

Matching Net

نعطي كل مثال وزناً حسب تشابهه مع الـ query. تصويت مرجح.

معادلة التنبؤ

لـ query q ودعم {(x_i, y_i)} :

يتنبأ النموذج إذن بـ توزيع احتمالات، مجموع كل المساهمات المرجحة لكل مثال دعم.

الـ attention الناعم مقابل الصلب

النوعالسلوكالاستخدام في الـ few-shot
صلب (hard)يختار مثالاً واحداً (argmax)مكافئ لـ Siamese
ناعم (soft)يرجح كل الأمثلةMatching Networks
TIPلماذا يفوز الناعم — الـ attention الناعم قابل للتفاضل، مما يسمح بتحسين النموذج كاملاً من البداية إلى النهاية بالانتشار العكسي. الـ attention الصلب (مع argmax) غير قابل للتفاضل.

السياق: تأثير الأمثلة الأخرى

نقطة مهمة في Matching Networks: يمكن للمشفر أن يأخذ في الحسبان السياق الكامل للدعم (وليس كل صورة على حدة). هذه فكرة Full Context Embedding (FCE).

مقارنة مع ProtoNet

الجانبMatching NetProtoNet
تمثيل الفئةيحتفظ بكل الأمثلةنموذج أولي واحد
الآليةالـ attention المرجحالمسافة إلى النموذج الأولي
السياقنعم (FCE اختياري)لا
الأداء K=1 (Omniglot)~98%~98%
الأداء K=5 (Omniglot)~99%~99.5%
تعقيد الكودأعلىبسيط جداً
NOTEالحكم الحديث — يُفضل ProtoNet اليوم عموماً لبساطته. لكن أفكار Matching Networks (الـ attention، FCE) ألهمت تحسينات كثيرة (FEAT، ATNet، إلخ).

الورقة البحثية المؤسسة

حالات استخدام حقيقية للـ few-shot

NOTEالهدف — إعطاء أمثلة ملموسة على الـ few-shot learning: لكل مجال، ننظر إلى المشكلة والقيود وما يقدمه الـ few-shot ومثال رقمي. في النهاية ستتمكن من إقناع أي شخص بفائدة الموضوع.

الأهداف التعليمية

TIPعند نهاية هذه الوحدة — سيكون لديك في ذهنك خمس حالات استخدام حقيقية على الأقل (طب، تنوع حيوي، صناعة، معالجة لغة طبيعية، مالية)، مع مشكلتها والحل المرتبط بالـ few-shot.

الحالة 1 — الطب: الأمراض النادرة

يُقال إن المرض نادر في أوروبا إذا أصاب أقل من شخص واحد من كل 2000. هناك أكثر من 7000 مرض نادر موثق، لكن كل منها غالباً ما يملك بضع عشرات من الحالات الموثقة بالصور الطبية.

المشكلة الملموسة

يرى طبيب الأشعة آفة لم يرها سوى 3 مرات في مسيرته. يود أن تقارن مساعدته الذكية هذه الصورة بكل الآفات المشابهة المُعلَّمة في العالم.

مساهمة الـ few-shot

نموذج يتعلم فضاء embeddings على صور عادية ثم يسترجع أقرب الحالات من قاعدة الآفات النادرة. حتى 5 أمثلة تكفي لتفعيل فئة.

WARNINGقيود العمل — تفرض اللائحة العامة لحماية البيانات (GDPR) عدم تخزين صور المرضى. لذلك نستخدم embeddings مجهولة. كما أن القابلية للتفسير (عرض صور المرجع) ضرورية للطبيب.

الحالة 2 — التنوع الحيوي: الأنواع النادرة

تطبيق iNaturalist يسجل مئات الآلاف من الأنواع، لكن كثيراً منها لا يملك سوى 5 إلى 20 صورة في القاعدة العالمية بأكملها (فراشة اكتُشفت حديثاً، ألفية مستوطنة لغابة واحدة…).

NOTEمثال حقيقي — بالنسبة لوعول الغابات في كيبيك، لا تملك بعض القطعان سوى 12 فرداً مصوراً. يستطيع نموذج few-shot تعلم التعرف على كل فرد (re-ID) بهذا القدر القليل من الأمثلة.

الحالة 3 — الصناعة: مراقبة الجودة على العيوب النادرة

تخيل خط إنتاج بطاقات إلكترونية. الغالبية العظمى من البطاقات سليمة؛ والعيوب التي تظهر في الفحص البصري هي بطاقتان من كل 100000. خلال 6 أشهر لدينا 4 صور لـ«لحام بارد» وصورة واحدة لـ«وسادة ممزقة».

النهجالنتيجةالمشكلة
CNN تقليدي متعدد الفئات~30% f1 على العيوب النادرةقلة الأمثلة
كشف الشذوذيكشف ضوضاء إضافيةحساس جداً للتغيرات
Few-shot (ProtoNet)~88% f1 بـ5 أمثلةالأفضل حالياً

الحالة 4 — معالجة اللغة الطبيعية: نوايا العملاء المتخصصة

يجب أن يفهم روبوت محادثة مصرفي نوايا محددة جداً («إغلاق حساب قبل 30 يوماً»، «رفع رهن جزئي») والتي قد لا تملك سوى أقل من 50 مثالاً في السجلات.

output
# Few-shot باستخدام LLM لتصنيف نية
prompt = """
أنت مصنف نوايا مصرفية.
إليك 5 أمثلة:

"أريد إغلاق حسابي هذا الشهر" -> CLOTURE_RAPIDE
"أرغب في تقليل قرضي العقاري جزئياً" -> MAINLEVEE_PARTIELLE
"هل ملف الائتمان الخاص بي قيد المعالجة؟" -> SUIVI_CREDIT
"أريد إغلاق حساباتي بسرعة" -> CLOTURE_RAPIDE
"أريد تحرير جزء من رهني" -> MAINLEVEE_PARTIELLE

السؤال: "كيف أغلق حسابي بشكل عاجل؟"
الرد:"""
# → يرد LLM بـ CLOTURE_RAPIDE، بدون تدريب
TIPنصيحة — أصبح الـ few-shot باستخدام LLM الأداة المفضلة متى كانت نية NLP تملك أقل من 100 مثال: فهو مجاني من حيث وقت التطوير، ويمكن تحديثه بتعديل الـ prompt.

الحالة 5 — المالية: أنواع جديدة من الاحتيال

يبتكر المحتالون مخططات جديدة باستمرار. عندما يكتشف بنك نمط احتيال جديد، غالباً ما لا يملك سوى 10 إلى 30 معاملة مُعلَّمة قبل أن يختفي النمط أو يتغير.

المشكلة

من المستحيل إعادة تدريب نموذج تقليدي على كل نمط جديد: سيكون ذلك بطيئاً جداً وقد تغير النمط بالفعل.

حل الـ few-shot

نموذج embeddings للمعاملات يقارن في الوقت الفعلي المعاملة الجديدة بالـ10 حالات احتيال المعروفة للنمط الحالي.

التعلم داخل السياق مع GPT

NOTEالهدف — اكتشاف in-context learning: الطريقة الحديثة والثورية لعمل few-shot باستخدام نماذج اللغة الكبيرة (GPT-4، Claude، Gemini). نضع أمثلة في الـ prompt، فيتعلم النموذج «دون أي تحديث للأوزان».

الأهداف التعليمية

TIPعند نهاية هذه الوحدة — ستتمكن من شرح ما هو in-context learning، وأصل المفهوم (GPT-3 / Brown 2020)، ومتى تستخدمه بدلاً من الطرق التقليدية.

الفكرة الثورية لـ GPT-3

قبل 2020، كان عمل الـ few-shot يتطلب تدريب نموذج مخصص (ProtoNet، MAML، إلخ). في 2020، نشرت OpenAI GPT-3 وأظهرت أن نموذج لغة كبير مدرب مسبقاً يستطيع عمل few-shot دون تدريب إضافي. يكفي وضع الأمثلة في الـ prompt.

NOTEتعريفin-context learning هو قدرة نموذج لغة كبير على تعلم مهمة من أمثلة موضوعة في الـ prompt، دون أي تحديث لأوزانه.

مثال ملموس

output
prompt = """
ترجم من الفرنسية إلى الإنجليزية.

فرنسية: Le chat dort sur le canapé.
إنجليزية: The cat is sleeping on the sofa.

فرنسية: Je vais au marché.
إنجليزية: I am going to the market.

فرنسية: Il fait beau aujourd'hui.
إنجليزية:"""

# الرد المتوقع من GPT-4:
# «It is sunny today.»

دون أي مرحلة ضبط دقيق، وبمثالين فقط في الـ prompt، فهم GPT-4 مهمة الترجمة وأنتج الرد الصحيح.

Zero-shot مقابل One-shot مقابل Few-shot prompting

الوضعمحتوى الـ promptمثال
Zero-shotتعليمات فقط«ترجم: مرحباً»
One-shotتعليمات + مثال واحد«ترجم. 'شكراً' -> 'Thank you'. 'مرحباً' -> »
Few-shotتعليمات + 3 إلى 10 أمثلة(كما أعلاه مع المزيد من الأمثلة)

الورقة التي غيرت كل شيء: Brown 2020

NOTETom Brown et al. 2020«Language Models are Few-Shot Learners» (NeurIPS 2020). هذه ورقة GPT-3 (175B معامل). تظهر أن الدقة تزداد بشكل كبير عند الانتقال من 0 إلى 1 ثم 3، 5، 10 أمثلة في الـ prompt. في كثير من المهام، كان GPT-3 few-shot يعادل أو يتفوق على النماذج المخصصة المضبوطة بدقة.

لماذا يعمل؟

لا توجد إجابة كاملة. عدة نظريات تكمل بعضها:

1. التعرف على الأنماط

رأى النموذج ملايين القوائم «س: ... الرد: ...» أثناء التدريب المسبق ويتعرف على التنسيق.

2. الـ meta-learning الضمني

أثناء التدريب المسبق، تعلم النموذج التعلم من المهام الجديدة عبر النص الذي يستهلكه.

3. رؤوس الاستقراء (Induction heads)

تحليل المحولات يكشف دوائر داخلية («induction heads») متخصصة في نسخ الأنماط السابقة.

متى نستخدم in-context learning؟

TIPالحالة المثالية — لديك بضعة أمثلة لمهمة، تريد نموذجاً أولياً سريعاً دون تدريب، وأنت مستعد لدفع API LLM. يمنحك in-context learning نموذجاً قابلاً للاستخدام في 5 دقائق.

الوضعالتوصية
بيانات قليلة جداً (1-30 مثال)In-context learning مع LLM
بيانات كثيرة (1000+ مثال)الضبط الدقيق التقليدي
لا إنترنت / محليProtoNet أو MAML محلياً
زمن استجابة حرج (< 10 مللي ثانية)نموذج محلي مدرب
تكلفة API مرتفعة جداًالضبط الدقيق أو ProtoNet

كود Python: استدعاء واجهة OpenAI بـ few-shot

output
from openai import OpenAI

client = OpenAI()

few_shot_examples = [
    {"role": "system", "content": "أنت مصنف مشاعر."},
    {"role": "user",   "content": "أحب هذا الفيلم!"},
    {"role": "assistant", "content": "إيجابي"},
    {"role": "user",   "content": "كان مملًا."},
    {"role": "assistant", "content": "سلبي"},
    {"role": "user",   "content": "لا بأس، عادي."},
    {"role": "assistant", "content": "محايد"},
]

def classify(text):
    msgs = few_shot_examples + [{"role": "user", "content": text}]
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=msgs,
        temperature=0,
    )
    return resp.choices[0].message.content

print(classify("القصة مشوقة!"))  # → إيجابي
va-plus-loin

يغطي هذا المقال أكثر المقتطفات فائدة — الدورة الكاملة Few Shot Learning (11 فصلاً، 35 درساً، تمارين محلولة ومشروع نهائي) تأخذك إلى النهاية.

./الوصول-إلى-الدورة-الكاملة دورة مجانية: هندسة الـ prompts

الأسئلة الشائعة

كم من الوقت يستغرق تعلم Few Shot Learning؟
مع تقدم منظم (11 فصلاً، 35 درساً قصيراً وعملياً)، يمكن الوصول إلى مستوى تشغيلي في بضعة أسابيع بمعدل 30 إلى 60 دقيقة يومياً. المهم هو تطبيق كل مفهوم فوراً.
هل هناك متطلبات مسبقة؟
تكفي أساسيات الحاسوب. إذا كنت تستطيع استخدام الطرفية وقراءة كود بسيط، فأنت جاهز.
من أين أبدأ عملياً؟
أعد تنفيذ أوامر هذا المقال، ثم تابع دورة Few Shot Learning الكاملة: فهي تربط الـ35 درساً بالترتيب مع تمارين ومشروع نهائي.

📬 هل تريد تلقي هذا النوع من الأدلة أسبوعياً؟ اشترك مجاناً — كود حقيقي، بدون كلام زائد.