نماذج اللغة2018متوسط10 دقيقة قراءة
الضبط الدقيق الشامل لنموذج اللغة من أجل تصنيف النصوص
Universal Language Model Fine-Tuning for Text Classification
Howard, J. · Ruder, S. — ACL
المشكلة
بحلول 2018، كان نقل التعلّم قد غيّر وجه تماماً — نماذج ImageNet كانت تُضبط بشكل روتيني للتصوير الطبي والقيادة الذاتية وغيرها. لكن معالجة اللغة الطبيعية كانت تعيش في عصر مختلف: كل نموذج نصوص كان يُبنى من الصفر، ويحتاج بيانات مُعنونة ضخمة وأياماً من الحوسبة. تضمينات الكلمات الجاهزة مثل Word2Vec لم تنقل سوى الطبقة الأولى. ومحاولات ضبط نماذج اللغة الكاملة كانت تنتهي إما بنسيان كارثي لما تعلّمه النموذج، أو بإفراط في التكيّف على البيانات الصغيرة. معالجة اللغة لم تكن قد عاشت لحظتها المفصلية — بعدُ.
الإسهام
ULMFiT: وصفة نقل تعلّم من ثلاث مراحل لمعالجة اللغة. (1) تدريب نموذج لغوي على مجموعة بيانات عامة كبيرة (Wikitext-103). (2) ضبط هذا النموذج على نصوص المهمة المستهدفة باستخدام الضبط التمييزي ومعدّلات التعلّم المثلثية المائلة. (3) ضبط المصنِّف على البيانات المُعنونة بأسلوب . بمئة مثال مُعنوَن فقط، يصل ULMFiT إلى أداء يعادل نماذج دُرِّبت من الصفر على بيانات أكبر بمئة ضعف، ويقلّل الخطأ بنسبة 18–24% على ستة معايير لتصنيف النصوص.
الأثر
شكّل ULMFiT لحظة ImageNet لمعالجة اللغة. أثبت أن نموذج لغة واحداً مُدرَّباً مسبقاً يكفي لأي مهمة نصية — تحليل مشاعر، تصنيف مواضيع، تصنيف أسئلة — بلا حاجة لبنى معمارية مخصوصة. تقنياته الثلاث (الضبط التمييزي، ، فك التجميد التدريجي) أثّرت مباشرةً في GPT-1 وBERT اللذين ظهرا بعد أشهر واعتمدا المنهجية ذاتها «درِّب مسبقاً ثم اضبط» مع المحوِّلات. هذه الورقة فتحت الباب لعصر النماذج الأساسية.
بناء نموذج لغوي من الصفر أشبه بتوظيف شخص لا يعرف لغتك — ستحتاج آلاف الأمثلة المُعنونة حتى يتعلّم الأساسيات، قبل أن يستطيع إنجاز أي شيء مفيد.
ULMFiT أشبه بتوظيف شخص يقرأ بطلاقة أصلاً — درس موسوعة كاملة — ثم تكتفي بأن تُطلعه على طبيعة عملك. في البداية، دعه يقرأ وثائق شركتك حتى يألف مصطلحاتها ( لنموذج اللغة). بعدها، أرِه أمثلة قليلة مُعنونة ليفهم ما تريد تصنيفه (ضبط المصنِّف). لأنه يفهم اللغة مسبقاً، حفنة من الأمثلة تكفيه تماماً.
المشكلة: معالجة اللغة كانت عالقة في التدريب من الصفر
بحلول 2018، كانت الرؤية الحاسوبية تملك وصفة ناضجة ومُجرَّبة: خُذ نموذجاً مُدرَّباً مسبقاً على ImageNet، استبدل الأخيرة، واضبطه على مهمتك — سواء كان الكشف عن أورام أو التعرّف على سلالات الكلاب. السبب في نجاح هذا الأسلوب أن الطبقات الأولى تتعلم سمات عامة (حواف، أنسجة) تصلح لأي مجال.
معالجة اللغة الطبيعية لم تكن تملك ما يشبه ذلك. أفضل ما كان متاحاً هو تهيئة بـ أو GloVe، ثم تدريب بقية النموذج من أوزان عشوائية. هذا يعني أن كل مشروع كان يحتاج مجموعات بيانات مُعنونة ضخمة — عشرات الآلاف من الأمثلة — وأياماً من الحوسبة على معالجات رسومية. الشركات الصغيرة والباحثون أصحاب البيانات المحدودة لم يكن أمامهم خيار يُذكر.
محاولتان سابقتان لنقل أعمق باءتا بالفشل. الأولى: دمج تضمينات مُدرَّبة مسبقاً من مهام أخرى (أسلوب «الأعمدة الفائقة» في ELMo وCoVe) — حقّقت تحسّناً، لكنها ظلّت تُدرِّب النموذج الأساسي من الصفر. الثانية: الضبط الدقيق المباشر لـ مُدرَّب مسبقاً (كما جرّب Dai وLe عام 2015)، وهذا أدّى إلى : النموذج كان يستبدل معرفته اللغوية العامة بسرعة بأنماط خاصة بالمهمة، فيخسر الميزة الجوهرية التي جعلت ذا قيمة من الأساس.
الفكرة: وصفة من ثلاث مراحل لنقل المعرفة اللغوية
الفكرة المحورية في ULMFiT هي أن في معالجة اللغة يحتاج ثلاث مراحل مدروسة، لا قفزة واحدة متهوّرة. تخيّل الأمر كسُلَّم: كل درجة تُقرِّب النموذج من المهمة المستهدفة دون أن يفقد ما اكتسبه في الدرجات السابقة.
المرحلة الأولى — تدريب نموذج اللغة على نطاق عام. نبدأ بتدريب نموذج لغة على ضخمة ومتنوعة (Wikitext-103: 103 ملايين كلمة من نحو 28,595 مقالة ويكيبيديا). في هذه المرحلة يتعلّم النموذج القواعد النحوية والحقائق والمشاعر والعلاقات بعيدة المدى — أي يبني «ثقافة عامة» في اللغة. هذه الخطوة هي الأكثر تكلفة حسابياً، لكنها تُنفَّذ مرة واحدة فقط، والنموذج الناتج يمكن إعادة استخدامه لأي . البنية المستخدمة هي : شبكة LSTM من 3 طبقات مع مضبوط بعناية، بلا آليات انتباه ولا اختصارات — مجرد نموذج تكراري مُنظَّم جيداً.
المرحلة الثانية — ضبط نموذج اللغة على نصوص المهمة. هنا يقرأ النموذج العام نصوص المهمة المستهدفة (مثل مراجعات الأفلام في حالة تحليل مشاعر IMDb). الهدف هو تكييف التمثيلات الداخلية مع مفردات المجال وأسلوبه — وكل ذلك بلا حاجة لأي بيانات مُعنونة. تقنيتان مبتكرتان تحميان النموذج من النسيان الكارثي في هذه المرحلة: ومعدّلات التعلّم المثلثية المائلة.
المرحلة الثالثة — ضبط المصنِّف. نُضيف رأس تصنيف (طبقتان خطيتان مع والتسرُّب ودالة ReLU) فوق نموذج اللغة المضبوط، وندرّبه على البيانات المُعنونة. فك التجميد التدريجي يحمي المعرفة المخزّنة في الطبقات السفلى من أن تُمحى في هذه المرحلة الأخيرة.
الضبط الدقيق التمييزي: طبقات مختلفة، سرعات مختلفة
ليست كل طبقات تتعلّم النوع نفسه من المعلومات. أبحاث الرؤية الحاسوبية (Yosinski وآخرون، 2014) بيّنت أن الطبقات الأولى تلتقط سمات عامة كالحواف والأشكال، بينما الطبقات الأعلى تتخصص في أنماط مرتبطة بالمهمة (كآذان الكلاب أو عجلات السيارات). المبدأ ذاته ينطبق على نماذج اللغة: الطبقات السفلى تتعلّم القواعد النحوية وبنية الكلمات الصرفية، والطبقات العليا تتعلّم الدلالات والسياق البعيد.
هذا يعني أننا بحاجة للحذر في مقدار التعديل الذي نُجريه على كل طبقة. لو ضبطنا جميع الطبقات بـ واحد، فإننا نُخاطر بمحو المعرفة العامة القيّمة في الطبقات السفلى. الضبط الدقيق التمييزي يحلّ هذه المشكلة بأن يمنح كل طبقة معدّل تعلّم خاصاً بها. الطبقة الأخيرة تأخذ المعدّل الأساسي ، وكل طبقة أدنى تأخذ معدّلاً أصغر تدريجياً:
تخيّل الأمر كمقبض تحكّم في كل طابق من مبنى: الطابق الأرضي (المعرفة العامة) يعمل بهدوء حتى تبقى أساساته ثابتة، بينما الطابق العلوي (المعرفة الخاصة بالمهمة) يعمل بأقصى طاقة ليتكيّف بسرعة. بعبارة أخرى، كلما نزلنا طبقة أعمق قلّلنا سرعة التعديل، حتى نحمي الأساسيات التي تعلّمها النموذج أثناء التدريب المسبق.
معدّلات التعلّم المثلثية المائلة: صعود سريع ثم صقل بطيء
أثناء الضبط الدقيق، نريد من النموذج أن يُنجز مهمتين متتاليتين: أولاً، أن ينتقل بسرعة إلى منطقة مناسبة في فضاء تلائم المهمة الجديدة. ثانياً، أن يصقل معاملاته ببطء وصولاً إلى أفضل أداء ممكن. معدّل التعلّم الثابت لا يخدم أيّاً من الهدفين جيداً — إما يكون عنيفاً في النهاية فيُسبّب ، أو حذراً جداً في البداية فيُهدر التدريب.
معدّلات التعلّم المثلثية المائلة (STLR) تعالج هذا بجدول بسيط: زيادة خطّية لمعدّل التعلّم خلال فترة إحماء قصيرة (عادةً أول 10% من التدريب)، ثم تناقص خطي خلال الـ 90% المتبقية. الصعود السريع يُتيح للنموذج الخروج من المنطقة التي استقرّ فيها بعد التدريب المسبق والانتقال إلى المنطقة المرتبطة بالمهمة الجديدة. أما التناقص البطيء فيسمح له بالاستقرار في تلك المنطقة بدقّة دون أن يتجاوزها.
فك التجميد التدريجي: إذابة الطبقات واحدة تلو الأخرى
أخطر لحظة لحدوث النسيان الكارثي هي عندما نبدأ بضبط المصنِّف على البيانات المُعنونة. لو أطلقنا جميع الطبقات دفعة واحدة ودرّبناها بدالة خسارة التصنيف، فإن القادمة من المهمة الجديدة ستتسلسل نزولاً وقد تمحو المعرفة العامة في الطبقات السفلى — خاصة حين تكون البيانات المُعنونة قليلة.
فك التجميد التدريجي يتعامل مع هذا بأسلوب جراحي: نبدأ بإذابة الطبقة الأخيرة فقط (الأكثر تخصصاً بالمهمة) وندرّبها لـحقبة واحدة. ثم نُذيب الطبقة التي تسبقها وندرّب الاثنتين معاً لحقبة أخرى. نستمر هكذا حتى تُذاب جميع الطبقات، ثم ندرّب حتى . بهذه الطريقة، تتكيّف الطبقات العليا أولاً فتعمل كـ«منطقة عازلة» تمتص التدرّجات الخاصة بالمهمة قبل أن تصل إلى الطبقات السفلى الحسّاسة.
حين نجمع بين فك التجميد التدريجي والضبط التمييزي (الطبقات السفلى تظل بمعدّلات تعلّم أصغر حتى بعد إذابتها) ومعدّلات التعلّم المثلثية المائلة، نحصل على الاستقرار الذي يتميّز به ULMFiT: على مجموعة IMDb مثلاً، خطأ التحقق يبقى ثابتاً أو يتحسّن طوال التدريب، بينما الضبط الكامل بلا تدرّج يقع في الإفراط في التكيّف من أول حقبة.
التجميع بالربط وBPT3C: قراءة المستندات الطويلة
تصنيف النصوص كثيراً ما يعتمد على كلمات أو عبارات مفتاحية قد تظهر في أي موضع من المستند — وليس بالضرورة في نهايته. لو اعتمدنا على الأخيرة لشبكة LSTM وحدها، سنفقد إشارات مهمة من أجزاء سابقة في النص. ULMFiT يعالج هذا بأسلوب : يربط الحالة الخفية الأخيرة مع ناتج و لجميع الحالات الخفية عبر المستند بأكمله. بهذا نحصل على تمثيل يلتقط أقوى الإشارات ومتوسطها معاً.
أما المستندات الطويلة التي تتجاوز سعة ذاكرة المعالج الرسومي، فيتعامل معها ULMFiT بأسلوب BPT3C ( لتصنيف النصوص): يُقسَّم المستند إلى دُفعات ثابتة الطول، وتُمرَّر الحالة الخفية بين دُفعة وأخرى. التدرّجات تنتشر عكسياً فقط عبر الدُّفعات التي أسهمت في التمثيل المُجمَّع النهائي — وهذا ما يجعل تصنيف مستندات بأي طول ممكناً عملياً.
النتائج: تصدُّر ستة معايير مرجعية
قُيِّم ULMFiT على ست مجموعات بيانات لتصنيف النصوص تُغطّي ثلاثة أنواع من المهام: (IMDb وYelp-binary وYelp-full)، وتصنيف الأسئلة (TREC-6)، وتصنيف المواضيع (AG News وDBpedia). باستخدام بنية AWD-LSTM نفسها و ذاتها في جميع المهام، حقّق ULMFiT أفضل النتائج على كل واحدة منها:
- IMDb: خطأ 4.6% (مقابل 5.9% لأفضل نتيجة سابقة) — تقليص بنسبة 22%
- AG News: خطأ 5.01% — تقليص بنسبة 23.7% مقارنة بـ DPCNN
- DBpedia: خطأ 0.80%
- Yelp-binary: خطأ 2.16% — تقليص بنسبة 18.2%
- TREC-6: خطأ 3.6%
اللافت أن ULMFiT حقّق كل هذا بشبكة LSTM بسيطة من 3 طبقات — بلا آليات ولا بنى معقدة. وصفة نقل التعلّم هي التي صنعت الفارق، لا البنية المعمارية.
القوة الحقيقية: التعلّم من لا شيء تقريباً
أبرز ما في هذه الورقة ليس تحسين — بل القدرة على التعلّم من أمثلة قليلة جداً. على مجموعة IMDb، يحقق ULMFiT بمئة مثال مُعنوَن فقط أداءً يوازي نموذجاً دُرِّب من الصفر على 10,000 مثال — أي بيانات أكثر بمئة ضعف. وحين نستخدم البيانات غير المُعنونة أيضاً لضبط نموذج اللغة (ما يُعرف بالإعداد )، فإن 100 مثال مُعنوَن تكافئ التدريب من الصفر على 50,000 مثال.
لهذا أثر عملي ضخم. معظم مشاكل تصنيف النصوص الحقيقية تعاني من شُحّ البيانات المُعنونة — عنونة آلاف الوثائق القانونية أو التقارير الطبية أو تذاكر الدعم الفني عملية مُكلفة ومُرهقة. ULMFiT أثبت أنك لا تحتاج لكل ذلك: المعرفة اللغوية المكتسبة من التدريب المسبق مع حفنة من الأمثلة تكفي في أغلب الحالات.
المراحل الثلاث في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
# المرحلة 1: التدريب المسبق لنموذج اللغة العام (تُنفَّذ مرة واحدة)
lm = AWD_LSTM(vocab_size=30_000, embed_dim=400, hidden=1150, layers=3)
lm.train(corpus=wikitext_103, epochs=30) # يتعلّم اللغة العامة
# المرحلة 2: ضبط نموذج اللغة على نصوص المهمة
lm.fine_tune(
data=imdb_all_text, # لا حاجة لعنونات — نص خام فقط
lr=0.004,
schedule='slanted_triangular', # إحماء سريع ثم تناقص بطيء
discriminative=True, # كل طبقة تحصل على lr / 2.6
)
# المرحلة 3: ضبط المصنِّف
classifier = Classifier(
encoder=lm.encoder,
pooling='concat', # [h_T, maxpool(H), meanpool(H)]
head=[Linear(3*1150, 50), ReLU, BN, Dropout,
Linear(50, n_classes), Softmax]
)
classifier.fine_tune(
data=imdb_labeled,
gradual_unfreezing=True, # إذابة طبقة واحدة لكل حقبة
discriminative=True,
schedule='slanted_triangular',
)لماذا غيَّر كل شيء
ظهر ULMFiT في يناير 2018. وبحلول يونيو، تبنّى GPT-1 المنهجية ذاتها — «درِّب مسبقاً ثم اضبط» — لكن باستخدام بدلاً من LSTM. وفي أكتوبر، فعل BERT الشيء نفسه لكن بـ المحوِّل مع سياق ثنائي الاتجاه. كلا الورقتين تستشهدان بـ ULMFiT.
التقنيات الثلاث التي ابتكرها ULMFiT — الضبط التمييزي، وجدولة معدّل التعلّم لعمليات النقل، وفك التجميد التدريجي — تتردد أصداؤها في عصر بأكمله. كلما رأيت عبارة «جمِّد » أو «استخدم معدّل تعلّم أصغر للطبقات المُدرَّبة مسبقاً»، فاعلم أن جذور هذا الأسلوب تعود إلى ULMFiT.
2018
ULMFiT (يناير)
وصفة نقل تعلّم من ثلاث مراحل لمعالجة اللغة باستخدام LSTM. أثبت أن التدريب المسبق مع ضبط دقيق مدروس يصلح لأي مهمة تصنيف نصوص.
2018
GPT-1 (يونيو)
استبدل LSTM بفاكّ ترميز المحوِّل. المنهجية نفسها «درِّب مسبقاً ثم اضبط»، لكن ببنية قابلة للتوازي أصبحت السمة المميّزة لسلسلة GPT.
2018
BERT (أكتوبر)
مُرمِّز المحوِّل مع نمذجة لغة مُقنَّعة ثنائية الاتجاه. تدريب مسبق مرة واحدة ثم ضبط على 11 معياراً دفعة واحدة. منهجية «درِّب ثم اضبط» صارت هي السائدة.
2020
GPT-3
175 مليار معامل. تطوّرت المنهجية من «درِّب ثم اضبط» إلى «درِّب ثم وجِّه بالتعليمات»، لكن الفكرة الجوهرية — أن التدريب المسبق على اللغة ينقل المعرفة — تعود جذورها إلى ULMFiT.
المرجعHoward, Ruder. Universal Language Model Fine-tuning for Text Classification. ACL, 2018.
مصطلحات هذه الورقة
- نقل التعلمTransfer Learning
- الضبط الدقيقFine-Tuning
- التدريب المسبقPretraining
- النموذج اللغويLanguage Model
- الضبط الدقيق التمييزيDiscriminative Fine-Tuning
- فك التجميد التدريجيGradual Unfreezing
- شبكة الذاكرة الطويلة قصيرة المدىLSTM
- النسيان الكارثيCatastrophic Forgetting
- فرط التخصيصOverfitting