من architecture لمنظومة
architecture الـ transformer اللي ورقة “Attention Is All You Need” وصفتها كانت مخطط بناء، مش منتج نهائي. وفي السنين اللي بعد نشرها، الباحثين اكتشفوا إن نفس النواة — الـ attention layers المتراصّة، والـ feedforward layers، والـ residual connections، والـ layer normalization — ينفع تتكيّف عشان تطلّع عيلة متنوّعة من الـ models، كل واحد متحسّن لبيئة أو مهمة مختلفة.
شوية models احتفظت بالـ encoder بس، وسابت الـ decoder عشان تسمح بفهم النصوص في الاتجاهين. وmodels تانية اكتفت بالـ decoder لوحده، ووسّعت التوليد الـ autoregressive لأحجام محدش تخيّلها. وmodels تانية أعادت ترتيب العلاقة بين الـ encoder والـ decoder عشان تعالج مهام text-to-text بشكل موحّد. والـ architecture نفسها عدّت حدود اللغة وهاجرت للـ computer vision والصوت والـ multimodal، فبيّنت عمومية محدش توقّعها بالكامل سنة 2017.
الدرس ده بيعرض عيلة الـ transformers الحديثة: BERT وولاده من models الـ encoder بس، وسلالة GPT من models الـ decoder بس، وT5 وmodel الـ encoder-decoder، والـ vision transformer ViT. ولما تفهم كل نوع من دول — بيحتفظ بإيه، وبيسيب إيه، وليه — هيبقى في إيدك خريطة في دماغك للمشهد اللي هتتحرّك فيه كممارس.
BERT: تمثيلات الـ encoder في الاتجاهين
سنة 2018، فريق ديفلين وزمايله في جوجل طلّعوا BERT (Bidirectional Encoder Representations from Transformers). والفكرة الأساسية كانت بسيطة بس تأثيرها كبير: لمهام الفهم — زي الـ classification، والإجابة على الأسئلة، والـ named entity recognition — مش محتاج توليد؛ محتاج تقرا الـ input كله مرة واحدة وتطلّع تمثيل سياقي غني لكل token. والـ model اللي فيه encoder بس، اللي بيعالج الـ tokens في الاتجاهين بحيث كل token يقدر ينتبه لكل الـ tokens التانية، مثالي للغرض ده.
وBERT قدّم هدف الـ masked language modeling (نمذجة اللغة بالإخفاء) (MLM) كهدف للـ pretraining: أثناء التدريب ده، 15% من أماكن tokens الـ input بتتختار للتنبؤ: 80% منها بيتبدّل بالـ token الخاص [MASK]، و10% بـ token عشوائي، و10% بتتساب زي ما هي، والـ model لازم يتنبأ بالـ tokens الأصلية من السياق. ولأن الـ model بيشوف السياق اللي على الشمال واللي على اليمين مع بعض، بيتعلّم تمثيلات عميقة في الاتجاهين بتمسك العلاقات النحوية والمعنوية بغنى أكبر من أي حاجة model في اتجاه واحد يقدر عليها.
وBERT بيستخدم هدف pretraining تاني اسمه الـ next sentence prediction (التنبؤ بالجملة التالية) (NSP): إدّي الـ model جملتين، ويتنبأ إذا كانت التانية بتيجي بعد الأولى في المستند الأصلي. وده بيعلّمه التماسك بين الجمل. (شغل بعد كده لقى إن فايدة الـ NSP محدودة، فـ RoBERTa والـ models اللي بعده شالوه وحسّنوا تدريب الـ MLM بداله.)
بعد الـ pretraining على dataset ضخمة (ويكيبيديا الإنجليزي + BookCorpus، حوالي 3.3 مليار كلمة)، BERT بيتعمل له fine-tuning لكل مهمة بعد كده بإنك تزوّد head خاص بالمهمة (زي classifier خطي على الـ token [CLS]) وتدرّبه كام epoch على بيانات عليها labels. والـ pattern ده اللي على مرحلتين — pretraining مرة واحدة، وبعدين fine-tuning مرات كتير — بقى المعيار في الـ NLP، وبعدين في modalities تانية. وBERT-large (340 مليون parameter) وصل لنتايج رائدة في 11 معيار للغة الطبيعية مرة واحدة لما طلع، ودليل ملفت على قوة الـ transfer learning.
وعيلة BERT كبرت بسرعة: RoBERTa (فيسبوك، 2019) بيّن إن BERT كان بيتدرّب أقل من طاقته الكاملة؛ فبيانات أكتر وbatches أكبر وتدريب أطول مع شيل هدف الـ NSP حسّنوا الأداء بشكل واضح من غير ما يغيّروا الـ architecture. وDistilBERT طبّق الـ knowledge distillation عشان يطلّع model أصغر بـ 40% وأسرع بـ 60% من BERT-base وهو محتفظ بـ 97% من أدائه. وALBERT استخدم مشاركة الـ parameters بين الـ layers عشان يقلّل عددها جامد. وDeBERTa قدّم الـ disentangled attention (تمثيلين مستقلين للمحتوى والمكان) وmask decoder متحسّن، فوصل لنتايج رائدة في معياري GLUE وSuperGLUE لحد سنة 2021.
GPT: سلالة الـ decoder بس
وBERT بيحسّن الفهم، شركة OpenAI كانت بتحاول تجاوب على سؤال مختلف: model مبني على decoder بس — متدرّب يتنبأ بالـ token الجاي بشكل autoregressive — يقدر يولّد نصوص متماسكة لحد فين؟ والإجابة طلعت إنه بيعمل ده بشكل استثنائي، وبيتحسّن أكتر مع الحجم.
GPT-1 (2018) أثبت إن الـ pretraining اللي مش supervised على مجموعة نصوص ضخمة، وبعده fine-tuning supervised، يقدر يغلب الـ models المصمّمة مخصوص لمهام كتير في اللغة الطبيعية. وهدف التدريب كان بسيط: كبّر likelihood كل token بمعلومية كل الـ tokens اللي قبله. مفيش masking، ومفيش سياق في الاتجاهين — مجرد تنبؤ من الشمال لليمين، ونفس الهدف اللي اتستخدم في الـ language modeling من أيام models الـ n-gram.
وGPT-2 (2019) علّى عدد الـ parameters لـ 1.5 مليار، وكشف عن حاجة تدهش: language model متدرّب بس على التنبؤ بالـ token الجاي، من غير أي fine-tuning للمهمة، يقدر يعمل مهام كتير بكفاءة معقولة بمجرد ما توجّهه بالطريقة الصح. ودي كانت أول إشارات واضحة على الـ emergent capabilities (القدرات الناشئة): قدرات بتطلع من الحجم مش من تدريب صريح عليها. وتوليد GPT-2 للنصوص كان سلس لدرجة إنه عمل قلق من سوء استخدامه، فـ OpenAI طلّعته على مراحل.
وGPT-3 (2020) جه بـ 175 مليار parameter، متدرّب على حوالي 300 مليار token. والقفزة في القدرة كانت نوعية مش كمية بس. GPT-3 يقدر يعمل استدلالات معقّدة، ويكتب code، ويترجم، ويلخّص، ويجاوب على الأسئلة — كل ده من أمثلة قليلة جوه الـ prompt من غير أي تحديث للـ parameters. والقدرة دي على الـ few-shot in-context learning (التعلم السياقي بأمثلة قليلة) بيّنت نوع من الـ meta-learning طلع من الحجم لوحده.
الـ language models الخام زي GPT-3 شاطرة في التنبؤ بالنصوص، بس مش لازم تمشي ورا التعليمات. وInstructGPT (2022) عالج ده عن طريق الـ reinforcement learning from human feedback (تعلم التعزيز من التغذية الراجعة البشرية) (RLHF): مقيّمين بني آدمين رتّبوا outputs الـ model على حسب الجودة والفايدة، وبعدين الـ model اتظبط بـ algorithm PPO عشان يكبّر تفضيل البني آدم المتوقع. وده خلّى models فئة GPT-3 أنفع بكتير وماشية أكتر مع قصد المستخدم. ودي الأساس اللي قايم عليه ChatGPT وGPT-4 وأغلب الـ large language models اللي بتمشي ورا التعليمات. أما الـ instruction tuning (الضبط بالتعليمات) — يعني fine-tuning على مجموعات أزواج (تعليمة، رد) من غير reinforcement learning — فبيدّي بديل أبسط بيحقق كتير من نفس التحسّن.
T5: الـ text-to-text transfer transformer
BERT بيستخدم architecture الـ encoder بس، المتحسّنة للفهم. وGPT بيستخدم architecture الـ decoder بس، المتحسّنة للتوليد. وسنة 2019، جوجل طلّعت T5 (Text-to-Text Transfer Transformer)، اللي دعا لإطار موحّد: صيغ كل مهمة NLP كمسألة text-to-text، واستخدم transformer encoder-decoder كامل لكل حاجة.
وفي إطار T5، الترجمة بتبقى “translate English to German: [المصدر]” ← “[الترجمة]”. والـ classification بيبقى “sentiment: [النص]” ← “positive” أو “negative”. والإجابة على الأسئلة بتبقى “question: [س] context: [ج]” ← “[الإجابة]”. والتلخيص بيبقى “summarize: [المستند]” ← “[الملخّص]”. نفس الـ model، ونفس الـ loss function (الـ cross-entropy على tokens الـ output)، ونفس إجراء الـ fine-tuning بيتطبّق على كل المهام. والتوحيد ده أنيق ومفيد عمليًا: بيبسّط الـ pipeline الهندسي، وبيخلّي الـ model يشارك التمثيلات بين المهام.
وT5 اتعمل له pretraining على مجموعة C4 (Colossal Clean Crawled Corpus)، وهي نسخة ضخمة متفلترة من Common Crawl، باستخدام هدف الـ span corruption (تلف الامتدادات): spans عشوائية من الـ tokens بتتبدّل بـ sentinel token واحد، والـ model لازم يتنبأ بالـ spans الأصلية. وده تعميم للـ masked language modeling بتاع BERT لإطار توليدي — لأن الـ decoder بيطلّع الـ spans البايظة بدل ما يتنبأ بالـ tokens في أماكنها.
وT5-11B (11 مليار parameter) وصل لنتايج رائدة في مجموعة واسعة من معايير اللغة الطبيعية. وعيلة T5 ثبّتت كمان أهمية تنضيف البيانات بعناية: اختيارات الـ filtering في C4 (شيل التكرار، والـ quality filtering، وشيل المحتوى المسيء) بتأثّر جامد على جودة الـ model النهائية. وFlan-T5 (2022) عمل fine-tuning لـ T5 على أكتر من 1800 مهمة متصاغة كتعليمات، فطلّع model بيعمّم على مهام جديدة من التعليمات لوحدها بمهارة استثنائية.
الـ vision transformer (ViT)
الـ transformer اتصمّم لـ sequences من tokens منفصلة. أما الصور فمستمرة وفي بُعدين — بنية مختلفة من الأساس. وتلات سنين بعد ورقة الـ transformer الأصلية، الـ CNNs فضلت مسيطرة على الـ computer vision. وبعدين سنة 2020، دوسوفيتسكي وزمايله أثبتوا إن transformer خالص، بيتطبّق على طول على sequences من patches الصور بأقل تعديل، يقدر يجاري أداء الـ CNNs أو يعدّيه في تصنيف الصور لما يتدرّب على نطاق كفاية. والنتيجة كانت الـ vision transformer (محوّل الرؤية) (ViT).
الفكرة الأساسية هي الـ patch embedding (تضمين الأجزاء): قسّم الصورة لـ grid من patches مش متداخلة (مثلًا 16×16 pixel لكل patch)، وافرد كل patch لـ vector، واعمل له linear projection للبُعد dmodel. وبعدين بيتزوّد token [CLS] بيتعلّم في أول الـ sequence، وبتتزوّد positional embeddings (positional embeddings في بُعد واحد الـ model بيتعلّمها لأماكن الـ patches)، والـ sequence اللي بتطلع بتعدّي على transformer encoder عادي. وتمثيل الـ token [CLS] عند الـ output بيتستخدم للـ classification عن طريق head خطي.
والـ ViT مفيهوش convolutions ولا inductive biases محلية — يعني على عكس الـ CNNs، مبيفترضش إن الـ pixels اللي جنب بعض أوثق صلة من البعيدة. وده نقطة ضعف ونقطة قوة في نفس الوقت: في نطاق البيانات الصغير الـ CNNs بتكسب، لأن الـ bias المحلي في الـ convolutions prior مفيد للصور؛ بس في نطاق البيانات الكبير (JFT-300M: 300 مليون صورة) الـ ViT بيغلبها أو بيساويها. والدرس بيعكس حكاية GPT-3: مع الحجم الكفاية، الـ inductive biases بتبقى أقل أهمية من قدرة الـ model إنه يتعلّم البنية من البيانات.
الـ DeiT بيّن إن ينفع تدرّب ViT بفعالية على ImageNet لوحده (من غير datasets pretraining ضخمة) باستخدام data augmentation قوي وknowledge distillation من CNN teacher. والـ Swin Transformer زوّد دمج patches هرمي وشبابيك attention محلية، فبيدّي الـ ViT feature maps متعددة المقاييس اللي الـ CNNs بتستخدمها — ودي ضرورية لمهام التنبؤ الكثيف زي الـ object detection والـ segmentation. أما الـ DINO والـ DINOv2 فبيستخدموا الـ self-supervised learning على الـ ViT، فبيطلّعوا features بصرية بتطلع من غير أي labels وبتتعمّم على المهام بشكل ملفت. وfeatures الـ DINOv2 المتدرّبة على صور النت بتحقق تقدير عمق وsegmentation واسترجاع تقريبًا مثالي بمجرد linear probe — دليل إن الـ self-supervised pretraining على نطاق واسع للـ ViT بيقرّب من جودة features الـ ImageNet الـ supervised عند أي نطاق.
نظرة موحّدة: الـ foundation models
BERT وGPT وT5 وViT مش اختراعات منفصلة؛ دول تخصّصات لمخطط واحد — الـ transformer — متكيّف لـ modalities وأهداف تدريب مختلفة. والتقارب ده ناحية architecture واحدة على كل الـ modalities ليه اسم: الـ foundation models (نماذج الأساس). والـ foundation model هو model كبير بيتدرّب على بيانات واسعة النطاق، وينفع يتكيّف لمجموعة واسعة من المهام بعد كده.
والنتيجة العملية إن المجال اتنقل من تدريب models خاصة بالمهام من الصفر لـ تكييف foundation models متدرّبة مسبقًا. بدل ما تصمّم architecture جديدة لكل مشكلة، الممارسين دلوقتي بيختاروا foundation model مناسب، واستراتيجية تكييف (الـ fine-tuning، أو الـ prompt engineering، أو الـ retrieval augmentation، أو الـ parameter-efficient fine-tuning عن طريق LoRA أو الـ adapters)، وبعدين ينشروا. وجودة التمثيلات الـ pretrained بتعلّي جامد السقف اللي ينفع توصله ببيانات قليلة عليها labels.
والـ multimodal models بتوسّع ده أبعد. CLIP (رادفورد وزمايله، 2021) درّب encoder رؤية وencoder نص مع بعض على 400 مليون جوز صورة-تعليق بالـ contrastive learning، فاتعلّم فضاء embedding مشترك الصور فيه بتقع قريبة من أوصافها النصية. وتمثيلات CLIP للصور بتتنقل للمهام اللي بعد كده بنجاح كبير، وبتسمح بالـ zero-shot image classification: إدّيه صورة، وهيصنّفها بإنه يلاقي الوصف النصي الأقرب ليها في فضاء embedding بتاع CLIP، من غير ما يحتاج أي صور عليها labels. وGPT-4V وLLaVA وmodels شبههم بيوسّعوا الـ language models من فئة GPT عشان تقبل inputs صور، فبيسمحوا بالإجابة البصرية على الأسئلة، ووصف الصور، وفهم المستندات.
والمسار واضح: الـ transformers في طريقها تبقى الـ architecture الشاملة، زي ما الـ deep neural networks بقت الـ universal function approximator من عشر سنين. والسؤال مبقاش “أستخدم transformer ولا لأ؟”، بقى “أنهي نوع من الـ transformers، متدرّب مسبقًا على أنهي بيانات، ومتكيّف بأنهي تقنية؟”
- BERT بيستخدم transformers الـ encoder بس مع الـ masked language modeling للـ pretraining عشان يتعلّم تمثيلات عميقة في الاتجاهين. بيتعمل له fine-tuning لمهام الفهم (الـ classification، والإجابة على الأسئلة، والـ named entity recognition). وRoBERTa وDistilBERT وALBERT وDeBERTa هما أهم ولاده.
- GPT بيستخدم transformers الـ decoder بس متدرّبة على التنبؤ الـ autoregressive بالـ token الجاي. وزيادة الحجم من GPT-1 لـ GPT-2 لـ GPT-3 كشفت قدرة الـ in-context learning الناشئة. والـ alignment بالـ RLHF (InstructGPT وChatGPT) بيخلّي الـ language models الخام تمشي ورا التعليمات. وGPT-4 وسّع ده للـ inputs الـ multimodal.
- T5 بيوحّد كل مهام اللغة الطبيعية كمسائل text-to-text باستخدام transformer encoder-decoder كامل متدرّب مسبقًا بالـ span corruption على مجموعة C4. وFlan-T5 بيزوّد الـ instruction tuning على أكتر من 1800 مهمة.
- الـ vision transformer (ViT) بيطبّق transformer encoder عادي على sequences من patches الصور. محتاج pretraining على نطاق واسع عشان يجاري الـ CNNs، بس مع الحجم الكفاية بيغلبها. وSwin بيزوّد التسلسل الهرمي؛ وDINO بيستخدم الـ self-supervised learning لـ features بصرية قوية.
- الـ foundation models — الـ transformers الكبيرة المتدرّبة على بيانات واسعة — بقت نقطة البداية المعتادة. واستراتيجيات التكييف (الـ fine-tuning، LoRA، الـ prompt engineering، RAG) بتحدّد جودة النشر. وCLIP والـ multimodal models بيوسّعوا الطريقة دي على الـ modalities.
- الـ transformer بقى الـ architecture الشاملة. وإنك تفهم أنواع الـ encoder بس، والـ decoder بس، والـ encoder-decoder، وإمتى كل واحد يناسب، بقى معرفة أساسية لكل ممارس في الـ Machine Learning.