نماذج اللغة2019متوسط12 دقيقة قراءة

RoBERTa: منهج مُحسَّن بمتانة للتدريب المسبق على غرار BERT

RoBERTa: A Robustly Optimized BERT Pretraining Approach

Liu, Y. · Ott, M. · Goyal, N. · Du, J. · Joshi, M. · Chen, D. · Levy, O. · Lewis, M. · Zettlemoyer, L. · Stoyanov, V. — arXiv (Facebook AI)

المشكلة

بحلول منتصف 2019 كانت نماذج مثل XLNet وGPT-2 قد تخطّت BERT في عدة معايير مرجعية، وافترض كثيرون أنّ السبب هو ابتكارات في البنية. لكنّ سؤالاً محورياً بقي معلّقاً: هل استُنفدت إمكانيات BERT فعلاً؟ تفاصيل كانت تختلف جذرياً بين الأوراق — حجم البيانات، حجم الدُّفعات، مدة التدريب، المعاملات الفائقة — فأصبحت المقارنة العادلة مستحيلة. لم يكن أحد يعرف: هل التحسّن مصدره أفكار أفضل، أم مجرد حوسبة وبيانات أكثر؟

الإسهام

RoBERTa دراسة إعادة إنتاج منهجية حدّدت أربعة تعديلات حاسمة في وصفة تدريب BERT: (1) بدل الثابت، (2) حذف مهمة ، (3) التدريب بدُفعات أكبر بكثير (8 آلاف تسلسل) وبيانات أضخم (160 غيغابايت مقابل 16)، و(4) اعتماد ترميز أزواج البايتات على مستوى البايت. بهذه التغييرات فقط — دون أي مساس بالبنية — يُطابق RoBERTa أداء XLNet أو يتفوّق عليه في GLUE (88.5) وSQuAD (F1: 94.6) وRACE (83.2)، مما يُثبت أنّ BERT كان بشكل ملحوظ.

الأثر

أصبح RoBERTa المُرمِّز الافتراضي في منظومات معالجة اللغة الطبيعية لأكثر من عام، وحلّ محلّ BERT في أغلب التطبيقات. لكنّ أثره الأعمق منهجي: قبل أن تنسب التحسّن إلى البنية، استنفد وصفة التدريب أولاً. هذه الفلسفة أثّرت مباشرة في DeBERTa وELECTRA وأبحاث قوانين التوسّع. لا يزال RoBERTa من أكثر الأوراق استشهاداً في أدبيات ، ونقاط تفتيشه مُستخدمة على نطاق واسع حتى اليوم.

تخيّل أن BERT رياضي موهوب لكنّه لم يأخذ تدريبه على محمل الجد — يهرول بدل أن يركض بأقصى سرعته، يأكل وجبات عشوائية بدل نظام غذائي مدروس، ويتغيّب عن نصف حصصه. النتيجة؟ أداء لا بأس به، لكنّه أقل بكثير مما يستطيع تحقيقه فعلاً.

RoBERTa هو الرياضي نفسه تماماً، لكن مع برنامج تدريب احترافي: تمارين مكثّفة (بيانات أكبر بعشر مرات)، أثقال أعلى ( يصل إلى 8,000)، جلسات أطول (خطوات تدريب أكثر)، تغذية ذكية (تقنيع ديناميكي)، وإلغاء تمرين واحد كان يُعيق التقدّم بدل أن يُساعد (التنبؤ بالجملة التالية). الجسد لم يتغيّر — ما تغيّر هو البرنامج التدريبي.

المشكلة: هل دُرِّب BERT فعلاً حتى أقصى طاقته؟

حين ظهر BERT عام 2018 حطّم الأرقام القياسية في 11 . لكن خلال أشهر قليلة تخطّته نماذج مثل XLNet، فاستنتج كثيرون أن السبب هو ابتكارات في البنية وأهداف التدريب (كنمذجة اللغة بالتبديل).

لكنّ فريق Facebook AI انتبه إلى نقطة جوهرية: المقارنة لم تكن عادلة من الأساس. كل ورقة استخدمت حجم بيانات مختلفاً (16 غيغابايت مقابل 126)، وحجم دُفعة مختلفاً (256 مقابل 8,192)، ومُدد تدريب ومُعاملات فائقة مختلفة. السؤال الحقيقي: هل التحسّن مصدره ابتكار في البنية، أم أنّ هذه النماذج ببساطة تدرّبت أكثر وعلى بيانات أكبر؟ لم يحاول أحد عزل هذه المتغيرات.

فرضية RoBERTa جريئة في بساطتها: ثبِّت البنية كما هي تماماً، وغيِّر وصفة التدريب فقط. إن لحق BERT بمنافسيه بهذه الطريقة، يكون العائق هو الوصفة — لا البنية.

افتح في المختبر
قارن إعدادات تدريب BERT الأصلية مع وصفة RoBERTa المُحسَّنة جنباً إلى جنب.
تستيقظ التجربة عند وصولك…

التعديل الأول: التقنيع الديناميكي

BERT الأصلي يعتمد التقنيع الثابت: قبل أن يبدأ التدريب، تُقنَّع كل جملة مرة واحدة أثناء تجهيز البيانات. ولكسر الرتابة، تُنسخ البيانات عشر نسخ بأنماط تقنيع مختلفة، فعلى مدار 40 حقبة تدريبية يرى النموذج كل نمط أربع مرات تقريباً.

الأمر أشبه بمعلّم أعدّ عشر نسخ من امتحان «أكمل الفراغ» ثم يدور عليها بالتناوب. بعد جولات قليلة يبدأ الطالب بحفظ مواضع الفراغات في كل نسخة — فيتعلّم الامتحان بدل أن يتعلّم المادة.

RoBERTa ينتقل إلى التقنيع الديناميكي: في كل مرة تدخل فيها جملة إلى النموذج، يُولَّد لها نمط تقنيع جديد من الصفر. لا يرى النموذج التوزيع نفسه للكلمات المُخفية مرتين أبداً. هذه النقطة حاسمة حين يطول التدريب ويكبر حجم البيانات، لأنّ تكرار الأنماط يحوّل النموذج من متعلّم للغة إلى حافظ لمواضع الأقنعة.

أظهرت أن التقنيع الديناميكي يُعطي أداءً مُكافئاً أو أفضل قليلاً من الثابت، ويتّسع الفارق كلّما زادت مدة التدريب.

افتح في المختبر
بدّل بين التقنيع الثابت والديناميكي لترى كيف تتغير أنماط التقنيع عبر الحقب التدريبية.
تستيقظ التجربة عند وصولك…

التعديل الثاني: إزالة التنبؤ بالجملة التالية

BERT يتدرّب بهدفين في الوقت نفسه: — حيث يتنبّأ بالكلمات المحذوفة — والتنبؤ بالجملة التالية (NSP) — حيث يُقرّر هل الجملة الثانية تتبع الأولى فعلاً في النص الأصلي. الفكرة كانت أنّ تعليم النموذج العلاقة بين الجمل سيُحسّن أداءه في مهام مثل الإجابة عن الأسئلة والاستدلال اللغوي.

لكنّ دراسة الاستئصال في RoBERTa كشفت نتيجة مُفاجئة: مهمة NSP لا تُساعد فحسب، بل تضرّ بالأداء. اختبر الفريق أربع صيغ لتجهيز المدخلات:

زوج مقاطع + NSP (إعداد BERT الأصلي): مقطعان من الوثيقة نفسها أو من وثيقتين مختلفتين، مع دالة خسارة NSP. زوج جمل + NSP: جملتان طبيعيتان مع خسارة NSP — لكنّ التسلسلات تصبح أقصر بكثير فيقلّ النص الذي يعالجه النموذج في كل دُفعة. جمل كاملة: تعبئة جمل متتالية من وثيقة واحدة حتى الوصول إلى 512 ، بدون NSP. جمل على مستوى الوثيقة: مثل الصيغة السابقة لكن دون تجاوز حدود الوثيقة الواحدة.

النتيجة كانت حاسمة: صيغة الجمل الكاملة بدون NSP تفوّقت على الجميع. مهمة NSP لم تكن زائدة فحسب — بل كانت تُشوّش على إشارة نمذجة اللغة المُقنَّعة. والسبب منطقي: حين تأتي الجملتان من وثيقتين مختلفتين، يكفي أن يكتشف النموذج اختلاف الموضوع — وهذه مهمة سهلة جداً لا تُنتج مفيدة. وفوق ذلك، إشارة خسارتها تُزاحم نمذجة اللغة المُقنَّعة على سعة النموذج المحدودة.

افتح في المختبر
استكشف تجارب صيغ المدخلات الأربع وأثر كل منها على المهام النهائية.
تستيقظ التجربة عند وصولك…

التعديل الثالث: التدريب على نطاق أوسع — بيانات أكثر ودُفعات أكبر

BERT الأصلي تدرّب على 16 غيغابايت من النصوص (BookCorpus + ويكيبيديا الإنجليزية) بـدُفعات حجمها 256 تسلسلاً، لمدة مليون خطوة. RoBERTa يرفع كل هذه الأرقام بشكل جذري:

البيانات: 160 غيغابايت من النص غير المضغوط، مجموعة من خمسة مصادر — BookCorpus + ويكيبيديا (16 غيغابايت)، CC-News وهي 76 غيغابايت من مقالات إخبارية إنجليزية من CommonCrawl، ثم OpenWebText (38 غيغابايت، نسخة مُعاد بناؤها من بيانات GPT-2)، وأخيراً قصص من CommonCrawl (31 غيغابايت). المحصّلة: عشرة أضعاف بيانات BERT، تُغطي مجالات متنوّعة.

حجم الدُّفعة: يقفز من 256 إلى 8,000 تسلسل — أي 32 ضعفاً. الدُّفعات الكبيرة تجعل تقدير أكثر استقراراً، وتُتيح توزيعاً أكفأ على وحدات المعالجة. أظهر الفريق أنّ 31 ألف خطوة بدُفعة حجمها 8,000 تُكافئ حسابياً مليون خطوة بدُفعة حجمها 256 — لكنّها تُعطي أداءً نهائياً أفضل.

مدة التدريب: يمتد إلى 500 ألف خطوة، والأداء لا يزال يتحسّن عند هذه النقطة — ما يعني أنّ BERT أُوقف مبكراً جداً. جرى التدريب على 1,024 وحدة معالجة رسومية V100.

افتح في المختبر
شاهد الفرق بين BERT وRoBERTa في حجم البيانات وحجم الدُّفعة وعدد خطوات التدريب.
تستيقظ التجربة عند وصولك…

التعديل الرابع: ترميز أزواج البايتات على مستوى البايت

BERT يعتمد بـ تضم 30,000 وحدة فرعية مبنية من محارف يونيكود. RoBERTa يستبدله بـ** على مستوى البايت** (byte-level BPE) على غرار GPT-2، مع تضم 50,000 وحدة.

الفرق بين الأسلوبين جوهري. على مستوى المحارف ينطلق من محارف يونيكود ويحتاج قواعد معالجة خاصة بكل لغة (كالتعامل مع الحروف المُشكَّلة مثلاً). أما الترميز على مستوى البايت فينطلق من البايتات الخام مباشرة — أي تسلسل بايتات يمكن ترميزه دون معالجة مسبقة أو حالات استثنائية. بعبارة أخرى: نفسه يتعامل مع أي لغة وأي نظام كتابة وأي حالة شاذة (شيفرة برمجية، عناوين ويب، رموز تعبيرية) بلا تعديل.

لاحظ الفريق أنّ الأداء انخفض بمقدار طفيف في بعض المعايير الفردية، لكنّ مزايا الشمولية والبساطة تفوق هذه التكلفة بكثير: لا قواعد ترميز تخمينية، ولا معالجة مسبقة تعتمد على اللغة، ولا رموز غير معروفة على الإطلاق.

الوصفة الكاملة: جمع التعديلات معاً

قوة RoBERTa ليست في تعديل واحد بعينه، بل في الجمع بين التعديلات الأربعة معاً — تفاعلها يفوق مجموع أجزائها. إليك المقارنة الكاملة مع BERT:

التقنيع الديناميكي (يتجدّد كل حقبة) بدل التقنيع الثابت (10 نسخ مُثبَّتة). حذف مهمة التنبؤ بالجملة التالية واستبدالها بصيغة الجمل الكاملة. بيانات تدريب تبلغ 160 غيغابايت من 5 مجالات، بدل 16 غيغابايت من مصدرين. حجم الدُّفعة يقفز من 256 إلى 8,000 تسلسل. المُجزِّئ يتحوّل من WordPiece (30 ألف وحدة) إلى ترميز أزواج البايتات على مستوى البايت (50 ألف وحدة). والتدريب يمتد 500 ألف خطوة بدل مليون — خطوات أقل عدداً لكن بدُفعات أضخم بكثير، فيكون إجمالي الرموز التدريبية أكبر بمراحل.

والبنية؟ مطابقة تماماً. نفسه بالضبط — 24 طبقة، 1,024 بُعداً مخفياً، 16 رأس ، 355 مليون مُعامل (إعداد BERT-Large). الفرق الوحيد هو كيف دُرِّب.

افتح في المختبر
فعّل كل تعديل أو أوقفه لترى أثره التراكمي على الأداء.
تستيقظ التجربة عند وصولك…

الفكرة في الكود

التقنيع الديناميكي — أقنعة جديدة في كل مرةpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np

def dynamic_mask(tokens, vocab_size, mask_id, mask_prob=0.15):
    """التقنيع الديناميكي في RoBERTa: قناع جديد في كل تمريرة أمامية."""
    masked = tokens.copy()
    labels = np.full_like(tokens, -1)

    for i in range(len(tokens)):
        if np.random.random() < mask_prob:
            labels[i] = tokens[i]
            roll = np.random.random()
            if roll < 0.8:
                masked[i] = mask_id        # 80% ← [MASK]
            elif roll < 0.9:
                masked[i] = np.random.randint(vocab_size)  # 10% ← عشوائي
            # وإلا: 10% ← أبقِ الرمز الأصلي
    return masked, labels

# --- الفرق الجوهري عن BERT ---
# BERT: دالة التقنيع تُنفَّذ مرة واحدة في المعالجة المسبقة ← أقنعة ثابتة
# RoBERTa: دالة التقنيع تُنفَّذ في كل تمريرة أمامية ← أقنعة ديناميكية

def roberta_training_step(model, tokens, mask_id, vocab_size):
    """كل خطوة ترى قناعاً فريداً — بلا تكرار."""
    masked, labels = dynamic_mask(tokens, vocab_size, mask_id)
    hidden = model.encode(masked)  # مرمِّز BERT نفسه، بلا تغيير
    loss = masked_lm_loss(hidden, labels, model.vocab_proj)
    return loss

# لا رأس NSP. لا تضمينات مقاطع. فقط نمذجة لغة مُقنَّعة.
# البنية نفسها. الوصفة أفضل.

النتائج: البنية نفسها، أرقام قياسية جديدة

RoBERTa يُحقّق نتائج تُطابق XLNet أو تتفوّق عليه في كل المعايير المرجعية الرئيسية، وذلك بـضبط دقيق على مهمة واحدة فقط — بلا حيل متعددة المهام:

GLUE: متوسط 88.5، مقابل 80.5 لـ BERT-Large و88.4 لـ XLNet-Large. قفزة بثماني نقاط عن BERT الأصلي، بالبنية نفسها بالضبط.

SQuAD v1.1: دقة F1 تبلغ 94.6، متقدّماً على XLNet (94.5) وبفارق واضح عن BERT (93.2).

SQuAD v2.0: دقة F1 تبلغ 89.4، متجاوزاً XLNet (88.8) وبقفزة 6.3 نقطة عن BERT (83.1).

RACE (فهم القراءة): 83.2% دقة، مُكافئ لـ XLNet ومتفوّق بوضوح على BERT.

النقطة الأبرز: RoBERTa يصل إلى هذه النتائج بـضبط دقيق بسيط على مهمة واحدة، بينما احتاج XLNet وغيره إلى إعدادات متعددة المهام ونماذج مُجمَّعة. الرسالة واضحة: حين تكون وصفة التدريب صحيحة، لا حاجة لتعقيد مرحلة الضبط.

افتح في المختبر
قارن BERT وRoBERTa وXLNet عبر المعايير الرئيسية.
تستيقظ التجربة عند وصولك…

دراسة الاستئصال: كل تغيير له أثره

دراسة الاستئصال هي ربّما أهم ما في الورقة — لأنّها تعزل كل تعديل على حدة وتقيس أثره. المنهجية واضحة: نبدأ من BERT-Large كخطّ أساس ونُضيف التغييرات واحداً تلو الآخر:

الخطوة الأولى — بيانات أكثر + تدريب أطول: مجرد زيادة حجم البيانات وإطالة التدريب يُحسّن الأداء بشكل ملحوظ. هذا وحده يسدّ جزءاً كبيراً من الفجوة مع XLNet.

الخطوة الثانية — دُفعات كبيرة (8 آلاف): الانتقال من 256 إلى 8,000 يُعطي دفعة إضافية، خصوصاً في المهام الحسّاسة لضجيج التدرّج مثل MNLI وSST-2.

الخطوة الثالثة — حذف NSP: إزالة التنبؤ بالجملة التالية والتحوّل إلى صيغة الجمل الكاملة يرفع الأداء في كل معيار بلا استثناء.

الخطوة الرابعة — التقنيع الديناميكي: اللمسة الأخيرة. بالتضافر مع التعديلات السابقة، يدفع التقنيع الديناميكي الأداء إلى مستوى قياسي جديد.

ما تُثبته هذه الدراسة أنّه لا يمكن نسب التحسّن إلى تغيير واحد بعينه — التعديلات الأربعة تتكامل معاً، وتُظهر بوضوح أنّ وصفة BERT الأصلية كانت تترك أداءً كبيراً على الطاولة.

افتح في المختبر
أضِف كل تعديل خطوة بخطوة وراقب الأثر التراكمي على معيار GLUE.
تستيقظ التجربة عند وصولك…

الدرس الأعمق: الوصفة قبل البنية

الأثر الأعمق لـ RoBERTa ليس في أرقامه، بل في الدرس المنهجي الذي غرسه في المجال. قبل هذه الورقة، كان مجتمع معالجة اللغة الطبيعية يركض وراء الجديد في البنية — أنماط انتباه مبتكرة، أهداف تدريب جديدة، مهام تدريب مسبق مختلفة. ما أثبته RoBERTa أنّ كثيراً من التحسّن المنسوب لهذه الابتكارات كان في الحقيقة نتيجة تدريب أقوى: بيانات أكثر، ودُفعات أكبر، وجداول تدريب أطول.

صدى هذا الدرس واضح في الأعمال اللاحقة. ELECTRA قدّم هدفاً جديداً فعلاً (كشف الرموز المُستبدَلة)، لكنّ ورقته حرصت على ضبط متغيرات التدريب بعناية لإثبات أنّ الهدف هو مصدر التحسّن وليس الموارد الإضافية. DeBERTa ابتكر الانتباه المُفكَّك، لكنّه بنى وصفة تدريبه على دروس RoBERTa صراحةً. وأدبيات قوانين التوسّع (Chinchilla وغيرها) هي امتداد طبيعي لهذه الفكرة: لا تُكبِّر النموذج فحسب، بل كبِّره بالطريقة الصحيحة.

الرسالة العملية واضحة: قبل أن تبني بنية جديدة، استنفد إمكانيات وصفة التدريب الحالية. قد تجد أنّ نموذجك يُخفي طاقة كبيرة خلف معاملات فائقة لم تُضبط كما ينبغي.

سلالة وصفات BERT

  1. 2018

    BERT

    نمذجة لغة مُقنَّعة + التنبؤ بالجملة التالية + تقنيع ثابت. تدريب على 16 غيغابايت بدُفعات حجمها 256. حقّق 11 رقماً قياسياً لكنه كان مُدرَّباً تدريباً ناقصاً.

  2. 2019

    RoBERTa

    البنية ذاتها مع وصفة مُحسَّنة: تقنيع ديناميكي، بلا NSP، 160 غيغابايت بيانات، دُفعات بحجم 8,000. طابق أداء XLNet أو تفوّق عليه — مثبتاً أن الوصفة كانت العائق.

  3. 2019

    XLNet

    نمذجة اللغة بالتبديل — يلتقط السياق من الاتجاهين بدون تقنيع. هدف جديد فعلاً، لكنه أيضاً دُرِّب على بيانات أكثر من BERT.

  4. 2020

    ELECTRA

    كشف الرموز المُستبدَلة: كل رمز يحصل على إشارة تدريبية وليس 15% فقط. كفاءة أعلى أربع مرات. بُني على دروس وصفة RoBERTa.

  5. 2020

    DeBERTa

    انتباه مُفكَّك يفصل المحتوى عن الموضع. دُرِّب بوصفة على غرار RoBERTa مع أفكار بنيوية جديدة. تفوّق على RoBERTa في SuperGLUE.

المرجعLiu, Ott, Goyal, Du, Joshi, Chen, Levy, Lewis, Zettlemoyer, Stoyanov. RoBERTa: A Robustly Optimized BERT Pretraining Approach. arXiv, 2019.

مصطلحات هذه الورقة