نماذج اللغة2020متوسط11 دقيقة قراءة
ELECTRA: تدريب مُرمِّزات النصوص مسبقاً بالتمييز بدلاً من التوليد
ELECTRA: Pre-Training Text Encoders as Discriminators Rather Than Generators
Clark, K. · Luong, M.-T. · Le, Q. V. · Manning, C. D. — ICLR
المشكلة
في التي يعتمدها BERT، يُخفى 15% من الرموز ويُطلب من النموذج التنبّؤ بها. الأسلوب فعّال، لكنه مُسرف جداً في استهلاك الحوسبة: الـ 85% المتبقية من الرموز تمرّ عبر الشبكة دون أن تُنتج أي إشارة تدريبية. النموذج يُعالج كل رمز في كل تمريرة، لكن لا تستفيد إلا من الشريحة المُقنَّعة. النتيجة: الوصول إلى أداء متقدّم يتطلّب مئات الأيام من التدريب على وحدات معالجة الرسوميات. السؤال إذاً: هل يمكن تصميم مهمة تدريب مسبق تستخلص إشارة تعلُّم من كل رمز، لا من 15% فقط؟
الإسهام
تطرح ELECTRA مهمة جديدة اسمها «» (RTD). الفكرة بسيطة: مُولِّد صغير (نموذج لغة مُقنَّعة) يقترح رموزاً بديلة تبدو طبيعية، ثم يأتي مُميِّز أكبر ويُصنّف كل رمز في الجملة: أصلي أم مُستبدَل. الميزة الجوهرية أن المُميِّز يتعلّم من جميع مواضع الإدخال — وليس 15% فقط — فترتفع كفاءة التدريب ارتفاعاً كبيراً. ELECTRA-Small يكفيه GPU واحد لمدة 4 أيام ومع ذلك يتفوّق على GPT في GLUE. وELECTRA-Base يُضاهي BERT-Large بربع الحوسبة. أما ELECTRA-Large فيُسجّل نتائج غير مسبوقة على 2.0.
الأثر
الدرس الأهم من ELECTRA هو أن نوع مهمة لا يقلّ أهمية عن حجم النموذج نفسه. بالانتقال من هدف توليدي إلى هدف تمييزي، حصلنا على نتائج أفضل بحوسبة أقل بكثير — وهذا فتح باب التدريب المسبق أمام فِرق لا تملك مئات وحدات المعالجة. بنية المُولِّد-المُميِّز أثّرت لاحقاً في DeBERTa وفي موجة كاملة من أساليب التدريب المسبق الكفوء. والأهم أن ELECTRA أثبتت أن فكرة «اكتشف المُزيّف» المستوحاة من الشبكات التوليدية التخاصمية تعمل بقوة في معالجة اللغة الطبيعية، وفتحت اتجاهاً بحثياً جديداً يتخطّى نمذجة اللغة المُقنَّعة.
تخيّل امتحاناً لغوياً بصيغتين مختلفتين. في الصيغة الأولى (طريقة BERT)، يأتي الممتحِن ويُخفي 15% من كلمات الفقرة بطمسها، ثم يطلب من الطالب: «املأ الفراغات.» الطالب يبذل جهده في ملء تلك الفراغات، لكن الكلمات الـ 85% المتبقية لا يُلقي لها بالاً — لا تحتاج إجابة أصلاً.
ELECTRA تُغيّر قواعد اللعبة كلياً. بدل الطمس، يأتي مساعد مُشاغب ويستبدل بعض الكلمات ببدائل تبدو صحيحة لكنها ليست الأصلية — مثلاً «الطاهي أكل وجبة لذيذة» بدلاً من «الطاهي طهى وجبة لذيذة.» هنا يتحوّل الطالب إلى محقّق: عليه أن يقرأ كل كلمة ويُقرّر هل هي الأصلية أم دُسّت مكانها. لا كلمة تمرّ دون تدقيق. النتيجة؟ الطالب يتعلّم من الفقرة نفسها أضعاف ما يتعلّمه بأسلوب الفراغات.
مشكلة الهدر: لماذا لا نتعلّم إلا من 15% من المدخلات؟
حين قدّم BERT نمذجة اللغة المُقنَّعة (MLM)، كانت خطوة جوهرية: تُقنَّع 15% من الرموز عشوائياً ويتنبّأ النموذج بالرمز الأصلي في كل موضع مُقنَّع. هذا الأسلوب أتاح لأول مرة التدريب المسبق العميق .
لكن في هذا الأسلوب خللاً بنيوياً واضحاً حين نتأمّله. لنأخذ جملة من 100 رمز: BERT يُقنّع منها 15 فقط. النموذج يُمرِّر الرموز المئة كلها عبر طبقات ، لكن دالة الخسارة لا تحسب إلا عند المواضع الـ 15 المُقنَّعة. أي أن 85 رمزاً تمرّ عبر الشبكة وتستهلك حوسبة دون أن تُنتج أي إشارة تدريبية. الأمر أشبه بطالب يقرأ كتاباً كاملاً لكنه لا يُمتحن إلا في صفحة من كل سبع.
الأثر المباشر لهذا الهدر: لكي يتعلّم BERT القدر نفسه، يحتاج تمريرات أكثر بكثير على البيانات — وبالتالي حوسبة أكبر بكثير. RoBERTa أكّد أن BERT لم يُدرَّب بما يكفي، وكان الحل ببساطة المزيد من البيانات والحوسبة. لكن هذا علاج للعَرَض وليس للمرض.
الفكرة: اكتشف المُزيَّف بدل أن تملأ الفراغ
الفكرة المحورية في ELECTRA هي التخلّي عن المهمة التوليدية (نمذجة اللغة المُقنَّعة) والاستعاضة عنها بمهمة تمييزية تُسمّى كشف الرموز المُستبدَلة (RTD). المنظومة تتألّف من شبكتين تعملان جنباً إلى جنب:
هو مُقنَّعة صغير. يأخذ النص الأصلي، يُقنّع 15% من رموزه (مثل BERT تماماً)، ثم يتنبّأ برمز بديل لكل موضع مُقنَّع. هذه البدائل ليست عشوائية بل مقنعة — يختارها المُولِّد من التوزيع الاحتمالي الذي تعلّمه على المفردات. فلو كانت الكلمة الأصلية «طهى»، قد يقترح المُولِّد «أكل» أو «أعدّ» — كلمات صحيحة نحوياً لكنها ليست الكلمة الأصلية.
هو النموذج الأساسي الذي نهتم به — وهو الذي يتحوّل بعد التدريب إلى المُدرَّب مسبقاً. يستقبل المُميِّز التسلسل المُفسَد (النص الأصلي بعد تبديل بعض رموزه ببدائل المُولِّد) ومهمته تصنيف كل رمز: «أصلي» أم «مُستبدَل». هذا تصنيف ثنائي بسيط في كل موضع — دالة واحدة فوق تمثيل الرمز.
وهنا يظهر الفرق الجوهري: BERT يحسب الخسارة على 15% فقط من الرموز، بينما ELECTRA تحسبها على 100% منها. كل موضع إما يُؤكّد «هذا الرمز أصلي» أو يُنبِّه «هذا الرمز مُستبدَل». بهذا يحصل المُميِّز على إشارة تدريبية من كل موضع في الجملة.
هدف التدريب: خسارتان في تمريرة واحدة
في ELECTRA يُدرَّب المُولِّد والمُميِّز معاً في كل خطوة. المُولِّد يستخدم المعيارية على المواضع المُقنَّعة — بالضبط مثل BERT. المُميِّز يستخدم على جميع المواضع، ويتنبّأ لكل رمز: أصلي أم مُستبدَل.
لماذا نحتاج الخسارتين معاً؟ لأن دور المُولِّد هو أن يجعل مهمة المُميِّز صعبة بما فيه الكفاية ليتعلّم منها. تخيّل لو كانت البدائل مجرد حروف عشوائية (مثل تبديل «الطاهي» بـ «خقز»): المُميِّز سيكتشفها فوراً ولن يتعلّم شيئاً مفيداً. لكن حين يُنتج المُولِّد بدائل مقنعة، يضطر المُميِّز للتعامل مع تحدٍّ حقيقي — فالتفريق بين «أكل» و«طهى» يحتاج فهماً لغوياً فعلياً.
البنية: مُولِّد صغير ومُميِّز كبير
كلا الشبكتين — المُولِّد والمُميِّز — مبنيّتان على بنية مُرمِّز المُحوِّل، أي نفس بنية BERT. لكن القرار التصميمي الأهم هو الحجم النسبي بينهما. وجد الباحثون أن المُولِّد يجب أن يكون أصغر بكثير من المُميِّز — عادةً بين الربع والثلث. والسبب بديهي:
لو كان المُولِّد بحجم المُميِّز وقوته، لأنتج بدائل شبه مثالية يصعب تمييزها عن الأصل. عندها تصير مهمة المُميِّز سهلة جداً فلا يتعلّم منها الكثير. المُولِّد الأصغر يرتكب أخطاء كافية تجعل المُميِّز يواجه تحدياً تعليمياً حقيقياً.
أحجام نماذج ELECTRA:
- ELECTRA-Small: المُميِّز بـ 12 طبقة و256 بُعداً خفياً و4 رؤوس (14 مليون معامل). المُولِّد بـ 12 طبقة لكن ببُعد خفي أصغر.
- ELECTRA-Base: المُميِّز يُطابق BERT-Base (12 طبقة، 768 بُعداً خفياً، 12 رأس انتباه، 110 مليون معامل). المُولِّد بـ 12 طبقة و256 بُعداً خفياً — أي ثلث عرض المُميِّز.
- ELECTRA-Large: المُميِّز يُطابق BERT-Large (24 طبقة، 1024 بُعداً خفياً، 16 رأس انتباه، 330 مليون معامل). المُولِّد بربع حجم المُميِّز.
وهناك تقنية ذكية: المُولِّد والمُميِّز يتشاركان أوزان و****. هذا موفِّر من ناحية المعاملات — لأن التضمينات تُشكّل جزءاً كبيراً من معاملات المُولِّد — وفي الوقت نفسه يسمح للمعرفة التي اكتسبها المُولِّد عن المفردات أن تنتقل مباشرة إلى المُميِّز.
الفكرة في الكود
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def electra_pretrain_step(tokens, generator, discriminator, mask_prob=0.15):
"""خطوة تدريب مسبق واحدة في ELECTRA: المُولِّد يقترح، والمُميِّز يحكم."""
n = len(tokens)
# الخطوة 1: قنّع 15% من المواضع (نفس طريقة BERT)
mask = np.random.random(n) < mask_prob
masked_input = tokens.copy()
masked_input[mask] = MASK_TOKEN_ID
# الخطوة 2: المُولِّد يتنبّأ ببدائل للمواضع المُقنَّعة
gen_logits = generator(masked_input) # (n, vocab_size)
replacements = sample_from_softmax(gen_logits) # اعتيان وليس argmax
# الخطوة 3: ابنِ المدخل المُفسَد — ضع بدائل المُولِّد مكان المُقنَّعة
corrupted = tokens.copy()
corrupted[mask] = replacements[mask]
# الخطوة 4: المُميِّز يُصنّف كل رمز: أصلي أم مُستبدَل؟
disc_logits = discriminator(corrupted) # (n,) — sigmoid واحد لكل رمز
labels = (corrupted != tokens).astype(float) # 1 = مُستبدَل، 0 = أصلي
# الخطوة 5: احسب الخسائر
gen_loss = cross_entropy(gen_logits[mask], tokens[mask]) # MLM على 15%
disc_loss = binary_cross_entropy(disc_logits, labels) # BCE على 100%
total_loss = gen_loss + 50 * disc_loss # λ = 50
return total_loss
# بعد التدريب المسبق: تخلّص من المُولِّد واضبط المُميِّز فقط.قرارات التصميم: ما جرّبه المؤلفون ولماذا
من أبرز ما يُميّز ورقة ELECTRA هو المُعمَّقة التي أجراها الباحثون. جرّبوا بشكل منهجي تصميمات بديلة وأبلغوا بوضوح عمّا لم ينجح — وهذه النتائج السلبية لا تقلّ قيمة عن النتائج الإيجابية:
التدريب التخاصمي (على غرار GAN): حين دُرِّب المُولِّد على خداع المُميِّز، تراجع الأداء. السبب أن الرموز المنفصلة تقطع مسار التدرّجات، والبدائل المعتمدة على (مثل REINFORCE) أدخلت تبايناً كبيراً. في المقابل، تدريب المُولِّد بأسلوب الأرجحية العظمى كان أبسط وأفضل.
حجم المُولِّد: حين كان المُولِّد بحجم المُميِّز نفسه، تراجع الأداء. الحدس واضح: المُولِّد القوي جداً يُنتج بدائل واقعية للغاية فلا يجد المُميِّز ما يتعلّم منه. النقطة المثلى كانت أن يكون عرض المُولِّد بين ربع وثلث عرض المُميِّز.
ELECTRA 15% (الخسارة على المواضع المُقنَّعة فقط): لعزل السبب الحقيقي لتفوّق ELECTRA، جرّب الباحثون حساب خسارة المُميِّز على 15% فقط — أي نفس مواضع BERT. انخفض الأداء من 85.0 إلى 82.4 على GLUE. هذا يُثبت بوضوح أن الفائدة تأتي تحديداً من حساب الخسارة على جميع الرموز.
استبدال [MASK] برموز مُولَّدة: جُرِّب أيضاً استبدال رموز [MASK] في BERT بعيّنات من المُولِّد مع الإبقاء على هدف نمذجة اللغة المُقنَّعة. أعطى هذا تحسّناً طفيفاً لكنه لم يصل إلى أداء ELECTRA. وهذا يُؤكّد أن الابتكار الحقيقي ليس في طريقة التقنيع، بل في المهمة التمييزية نفسها (التصنيف الثنائي لكل رمز).
النتائج: أكثر بأقل
نتائج ELECTRA تُثبت أن كفاءة مهمة التدريب المسبق تُحدث فرقاً حقيقياً عبر جميع الأحجام:
ELECTRA-Small (14 مليون معامل): يكفيه GPU واحد لمدة 4 أيام، ومع ذلك سجّل 79.9 على GLUE dev — متفوّقاً على GPT (117 مليون معامل) الذي سجّل 78.8. نموذج أصغر 8 مرات وبحوسبة أقل بكثير يتغلّب على نموذج أكبر منه. هذا دليل مباشر على أن نوع مهمة التدريب أهم من الحجم الخام.
ELECTRA-Base (110 مليون معامل): بنفس حجم بنية BERT-Base، لكنه سجّل 85.1 على GLUE dev — متجاوزاً BERT-Large (340 مليون معامل، 84.0) بربع حوسبته فقط. مهمة كشف الرموز المُستبدَلة دفعت نموذجاً بحجم معيّن لتجاوز نموذج بثلاثة أضعاف حجمه.
ELECTRA-Large (330 مليون معامل): بنفس ميزانية الحوسبة المُتاحة لـ RoBERTa، حقّق 88.5 على GLUE dev (مساوياً لـ RoBERTa) وسجّل رقماً قياسياً جديداً: 88.7 EM / 90.6 F1 على SQuAD 2.0 — متفوّقاً على RoBERTa وXLNet معاً.
النمط واحد في كل الأحجام: ELECTRA تُعطي أداءً مساوياً أو أفضل من نماذج تستهلك حوسبة ومعاملات أكثر بكثير. مهمة التدريب هي المُضاعِف الحقيقي.
من BERT إلى ELECTRA: جبهة الكفاءة
2018
BERT — نموذج اللغة المُقنَّعة
أثبت نجاح التدريب المسبق العميق ثنائي الاتجاه. لكن نمذجة اللغة المُقنَّعة لا تستفيد إلا من 15% من الرموز، فيحتاج النموذج حوسبة ضخمة للوصول إلى أداء جيد.
2019
RoBERTa — بيانات أكثر، حوسبة أكبر
كشف أن BERT لم يُدرَّب بما يكفي، فعالج المشكلة بتدريب أطول على بيانات أكثر. نفس المهمة ونفس الهدر — لكن بقوة حوسبة خام أكبر.
2020
ELECTRA — تدريب مسبق كفوء عبر كشف الرموز المُستبدَلة
استعاض عن نمذجة اللغة المُقنَّعة التوليدية بمهمة تمييزية: كشف الرموز المُستبدَلة. كل رمز يُسهم في التعلُّم. ضاهى RoBERTa بربع الحوسبة.
2021
DeBERTa — انتباه مفكوك يبني على ELECTRA
دمج آلية الانتباه المفكوك مع تدريب على نمط ELECTRA. أثبت أن مهمة كشف الرموز المُستبدَلة تتكامل بسلاسة مع التحسينات المعمارية.
الأثر الأعمق لـ ELECTRA فلسفي بقدر ما هو تقني. كسرت الافتراض السائد بأن التدريب المسبق يجب أن يكون توليدياً — أي أن النموذج يجب أن يتعلّم إنتاج اللغة حتى يفهمها. ELECTRA أثبتت العكس: تعلُّم الحُكم على اللغة يمكن أن يكون أكثر كفاءة. المحقّق لا يحتاج أن يكتب روايات حتى يكتشف التزوير.
وهذا المبدأ لا يقتصر على النصوص. في أيضاً أظهرت أهداف التدريب التمييزية مكاسب كفاءة مشابهة. القاعدة عامة: حين تُصمّم مهمة تستخلص إشارة تعلُّم من كل عنصر في المدخلات — لا من شريحة مُقنَّعة فقط — تحصل على تعلُّم أكبر من كل وحدة حوسبة تُنفقها.
المرجعClark, Luong, Le, Manning. ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators. ICLR, 2020.
مصطلحات هذه الورقة
- كشف الرموز المُستبدَلةReplaced Token Detection
- الـمُميِّز الحاكمDiscriminator
- الموّلد التخليقيGenerator
- كفاءة استخدام العيّناتSample Efficiency
- نمذجة اللغة المُقنَّعة (MLM)Masked Language Modeling (MLM)
- الشبكة التوليدية التنافسيةGAN
- مشاركة الأوزانweight sharing
- التدريب الأمثل حوسبياًCompute-Efficient Training
- الضبط الدقيقFine-Tuning
- التعلم ذاتي الإشرافSelf-Supervised Learning
- التدريب المسبقPretraining
- المُرمِّزEncoder
- دالة سيجمويدSigmoid
- العشوائية المتقاطعةCross Entropy
- معيار GLUEGLUE Benchmark