الفصل 2: التاريخ - من الشبكات العصبية المتكررة إلى المحولات
مقدمة
رحلة الوصول إلى النماذج اللغوية الكبيرة الحديثة تمتد لعقود من البحث في الشبكات العصبية ومعالجة اللغة الطبيعية. فهم هذا التاريخ يساعدنا على تقدير لماذا كانت بنية المحولات اختراقًا كبيرًا.
العصر ما قبل العصبي (الخمسينيات - 2000)
الأنظمة المعتمدة على القواعد
اعتمدت معالجة اللغة الطبيعية المبكرة على قواعد مصممة يدويًا:
IF input contains "weather" AND "tomorrow"
THEN search weather database for tomorrow
RETURN formatted weather response
القيود:
- لم تستطع التعامل مع تنوع اللغة
- تطلبت هندسة يدوية مكثفة
- ضعف في التعميم
نماذج اللغة الإحصائية
النهج الإحصائي نمذج اللغة كتوزيعات احتمالية:
نماذج N-gram:
# Bigram model example
bigram_counts = {
("the", "cat"): 100,
("the", "dog"): 80,
("cat", "sat"): 50,
}
# P("cat" | "the") = count("the cat") / count("the")
القيود:
- ندرة البيانات للسياقات الأطول
- لا يوجد فهم دلالي
- مفردات ثابتة
الثورة العصبية (2000-2017)
نماذج اللغة العصبية المتقدمة (2003)
قدم بنجيو وآخرون نماذج اللغة العصبية:
[w_{t-3}] [w_{t-2}] [w_{t-1}]
↓ ↓ ↓
[Embedding] [Embedding] [Embedding]
↘ ↓ ↙
[Hidden Layer]
↓
[Softmax Output]
↓
P(w_t)
الابتكار الرئيسي: تعلم التمثيلات الموزعة (التضمينات)
الشبكات العصبية المتكررة (RNNs)
قدمت الشبكات العصبية المتكررة مفهوم الذاكرة من خلال التكرار:
class SimpleRNN:
def forward(self, x, h_prev):
"""
x: current input
h_prev: previous hidden state
"""
h_new = tanh(W_xh @ x + W_hh @ h_prev + b)
return h_new
البنية:
h_0 → [RNN] → h_1 → [RNN] → h_2 → [RNN] → h_3
↑ ↑ ↑
x_1 x_2 x_3
المشاكل:
- تلاشي التدرجات: الإشارات تتضاءل عبر التسلسلات الطويلة
- المعالجة التسلسلية: لا يمكن موازاة التدريب
الذاكرة طويلة وقصيرة المدى (LSTM) - 1997
صمم هوشريتر وشميدهوبر LSTMs لمعالجة تلاشي التدرجات:
class LSTMCell:
def forward(self, x, h_prev, c_prev):
# Forget gate
f = sigmoid(W_f @ [h_prev, x] + b_f)
# Input gate
i = sigmoid(W_i @ [h_prev, x] + b_i)
# Candidate values
c_tilde = tanh(W_c @ [h_prev, x] + b_c)
# Update cell state
c = f * c_prev + i * c_tilde
# Output gate
o = sigmoid(W_o @ [h_prev, x] + b_o)
h = o * tanh(c)
return h, c
المكونات الرئيسية:
| البوابة | الغرض |
|---|---|
| بوابة النسيان | ما يجب إزالته من الذاكرة |
| بوابة الإدخال | ما المعلومات الجديدة التي يجب تخزينها |
| بوابة الإخراج | ما يجب إخراجه من الذاكرة |
التسلسل إلى التسلسل (2014)
قدم سوتسكيڤر وآخرون بنى التشفير-فك التشفير:
Encoder: Decoder:
"Hello world" → [LSTM] → Context Vector → [LSTM] → "Bonjour monde"
القيود: عنق الزجاجة في المتجه السياقي الواحد
آلية الانتباه (2014-2015)
قدم بهاداناو وآخرون الانتباه لمعالجة عنق الزجاجة:
def attention(query, keys, values):
"""
query: what we're looking for
keys: what each position offers
values: actual content at each position
"""
scores = query @ keys.T / sqrt(d_k)
weights = softmax(scores)
output = weights @ values
return output
الفكرة الرئيسية: دع النموذج يتعلم أي أجزاء من المدخلات ذات صلة بكل مخرج.
ثورة المحولات (2017)
"الانتباه هو كل ما تحتاجه"
اقترح ڤاسواني وآخرون إزالة التكرار بالكامل:
"الانتباه هو كل ما تحتاجه" (2017)
- المؤلفون: ڤاسواني، شازير، بارمار، أوزكورييت، جونز، جوميز، كايزر، بولوسوخين
- قدمت بنية المحولات
- مكنت الموازاة الضخمة
- الأساس لجميع النماذج اللغوية الكبيرة الحديثة
نظرة عامة على بنية المحولات
Input Tokens
↓
[Embedding + Positional Encoding]
↓
┌─────────────────────────────┐
│ Multi-Head Attention │
│ ↓ │
│ Add & Normalize │
│ ↓ │
│ Feed-Forward Network │
│ ↓ │
│ Add & Normalize │
└─────────────────────────────┘ × N layers
↓
Output Probabilities
لماذا فازت المحولات
| الميزة | RNN/LSTM | المحول |
|---|---|---|
| الموازاة | تسلسلي | موازاة كاملة |
| التبعيات طويلة المدى | صعبة | انتباه مباشر |
| سرعة التدريب | بطيء | سريع |
| القابلية للتوسع | محدودة | ممتازة |
عصر GPT (2018-الحاضر)
GPT-1 (2018)
أول "محول مولد مدرب مسبقًا" من OpenAI:
- 117 مليون معلمة
- نموذج التدريب المسبق + الضبط الدقيق
- بنية فك التشفير فقط
# GPT-1 architecture (simplified)
class GPT1:
def __init__(self):
self.layers = 12
self.heads = 12
self.d_model = 768
self.vocab_size = 40478
BERT (2018)
نهج جوجل ثنائي الاتجاه:
- 340 مليون معلمة (BERT-Large)
- بنية التشفير فقط
- نمذجة اللغة المقنعة
# BERT pre-training objective
def masked_lm_loss(input_ids, model):
# Randomly mask 15% of tokens
masked_input = mask_tokens(input_ids, mask_prob=0.15)
# Predict original tokens
predictions = model(masked_input)
# Loss only on masked positions
return cross_entropy(predictions[masked_positions],
input_ids[masked_positions])
GPT-2 (2019)
التوسع وإظهار القدرات الناشئة:
- 1.5 مليار معلمة
- أداء المهام بدون تدريب مسبق
- تم حجبها في البداية بسبب مخاوف من سوء الاستخدام
GPT-3 (2020)
الحجم الذي غير كل شيء:
- 175 مليار معلمة
- التعلم في السياق
- موجّهات قليلة اللقطات
# GPT-3 scale
gpt3_config = {
"n_params": 175_000_000_000,
"n_layers": 96,
"d_model": 12288,
"n_heads": 96,
"context_length": 2048,
}
العصر الحديث (2022-الحاضر)
| النموذج | السنة | المعلمات | الابتكار الرئيسي |
|---|---|---|---|
| ChatGPT | 2022 | ~175 مليار | التعلم المعزز من خلال التغذية الراجعة البشرية للمواءمة |
| GPT-4 | 2023 | ~1.8 تريليون* | متعدد الوسائط، MoE* |
| Claude 2/3 | 2023-24 | غير معروف | الذكاء الاصطناعي الدستوري |
| Llama 2 | 2023 | 7-70 مليار | أوزان مفتوحة |
| Mistral | 2023 | 7 مليار | بنية فعالة |
*تقديري/غير مؤكد
تصور الجدول الزمني
لماذا التاريخ مهم
فهم هذا التطور يساعدنا على:
- تقدير القرارات التصميمية في البنى الحديثة
- التعرف على الأنماط التي تؤدي إلى الاختراقات
- التنبؤ بالاتجاهات المستقبلية بناءً على الاتجاهات
- تصحيح وتحسين الأنظمة الحالية
النقاط الرئيسية
- الشبكات العصبية المتكررة قدمت نمذجة التسلسل لكنها لم تستطع الموازاة
- LSTMs عالجت تلاشي التدرجات لكنها بقيت تسلسلية
- الانتباه مكن التركيز على المدخلات ذات الصلة
- المحولات أزالت التكرار، مما مكن من التوسع الضخم
- الحجم أثبت أنه عنصر رئيسي لظهور القدرات
نظرة إلى الأمام
في الفصل التالي، سنستعرض المشهد الحالي للنماذج اللغوية الكبيرة، مستكشفين اللاعبين الرئيسيين، نماذجهم، والنقاش المستمر بين النهج المفتوح المصدر والنهج الاحتكاري.