Transformer
المحوّل (Transformer) Transformer
Transformer معمارية تعتمد على آلية الانتباه (Attention) بالكامل، تستبدل الشبكات التكرارية بمتوازية — أساس BERT و GPT ونماذج اللغة الحديثة.
Transformer معمارية شبكات عصبية تعتمد كليًا على آلية الانتباه (Self-Attention)، بلا التفاف أو تكرار (recurrence). الفكرة الأساسية: كل token في السلسلة "ينتبه" لمجموعة من الـ tokens الأخرى عبر أوزان تعلمية، فيلتقط العلاقات بعيدة المدى بكفاءة أعلى من RNN.
في full self-attention القياسي، كل token ينتبه لكل المواقع المسموح بها وفق attention mask. في Decoder (النماذج السببية causal)، لا يمكن للـ token الحاضر أن ينتبه إلى مواقع مستقبلية (future tokens) — القناع السببي يخفي هذه المواقع. هذا فرق جوهري عن Encoder الذي يرى كامل السلسلة.
مكوّناته الأساسية: Multi-Head Self-Attention (كل رأس يتعلم نوعًا مختلفًا من العلاقات)، Feed-Forward Network (طبقتين خطيتين مع تنشيط)، Layer Normalization، Residual Connections. الورقة الأصلية استخدمت Positional Encoding ثابت (sinusoidal) لتعويض غياب الترتيب المتأصل؛ المعماريات الحديثة قد تستخدم آليات positional أخرى (rotary، relative، learned) — ليست كلها متطابقة مع الأصل.
المتغيران الأبرز: Encoder-only (مثل BERT — مناسب للفهم والتصنيف)، Decoder-only (مثل GPT — مناسب للتوليد)، Encoder-Decoder (مثل T5 — للترجمة والتلخيص). في PyTorch: nn.Transformer يوفّر النسخة الكاملة، ونماذج BERT/GPT تُحمَّل من Hugging Face transformers.
هنا المرجع يغطي الأساسيات فقط — Wave 6 وما بعده (LLMs، prompt engineering، fine-tuning) خارج نطاقه.
الصياغة
# Self-Attention Attention(Q, K, V) = softmax(Q·Kᵀ / √d) · V # Block: Attention + Add&Norm + FFN + Add&Norm # Encoder: كتل Encoder مكدّسة # Decoder: Masked Attention + Cross-Attention + FFN
📄 مثال
import torch.nn as nn
# استخدام Transformer كمحرّك عام
encoder_layer = nn.TransformerEncoderLayer(
d_model=512, # أبعاد التمثيل
nhead=8, # عدد رؤوس الانتباه
dim_feedforward=2048,
dropout=0.1,
batch_first=True,
)
transformer = nn.TransformerEncoder(encoder_layer, num_layers=6)
x = torch.randn(2, 100, 512) # (batch, seq_len, d_model)
out = transformer(x)
print(out.shape) # torch.Size([2, 100, 512])أهم النقاط
| النقطة | الوظيفة |
|---|---|
| Self-Attention | كل token ينتبه للمواقع المسموح بها وفق attention mask — يلتقط علاقات بعيدة المدى |
| Multi-Head | عدة رؤوس انتباه متوازية — كل رأس يتعلم نوعًا مختلفًا من العلاقات |
| Positional Encoding | إضافة معلومات الموقع — الورقة الأصلية استخدمت sinusoidal، المعماريات الحديثة قد تستخدم آليات أخرى |
| Encoder / Decoder | Encoder-only (BERT)، Decoder-only (GPT، causal mask)، Encoder-Decoder (T5) |
💡 نصائح عملية
- ابدأ بـ pre-trained model من Hugging Face للغة الطبيعية — الضبط الدقيق لمهمة محددة غالبًا أفضل من التدريب من الصفر حين يتوفر نموذج مدرّب مسبقًا ملائم وبيانات كافية للمهمة المستهدفة
- Self-Attention تعقيدها O(n²) في طول السلسلة — لسلاسل طويلة جدًا استخدم نماذج sparse أو linear attention
⚠️ أخطاء شائعة
- تطبيق Transformer على بيانات جدولية صغيرة — MLP أو Random Forest غالبًا أفضل وأسرع
- إهمال معلومات الترتيب كليًا — Transformer بطبيعته لا يفرّق مواقع الـ tokens، وإهمال أي آلية positional (ليست فقط sinusoidal) يفقد هذا التمييز
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار AI-ML الكامل بالعربي.
📚 للتعمق التقني الكامل بالإنجليزية: PyTorch Documentation