إنتقل إلى المحتوى الرئيسي

الفصل 2: التاريخ - من الشبكات العصبية المتكررة إلى المحولات

مقدمة​

رحلة الوصول إلى النماذج اللغوية الكبيرة الحديثة تمتد لعقود من البحث في الشبكات العصبية ومعالجة اللغة الطبيعية. فهم هذا التاريخ يساعدنا على تقدير لماذا كانت بنية المحولات اختراقًا كبيرًا.

العصر ما قبل العصبي (الخمسينيات - 2000)​

الأنظمة المعتمدة على القواعد​

اعتمدت معالجة اللغة الطبيعية المبكرة على قواعد مصممة يدويًا:

IF input contains "weather" AND "tomorrow"
THEN search weather database for tomorrow
RETURN formatted weather response

القيود:

  • لم تستطع التعامل مع تنوع اللغة
  • تطلبت هندسة يدوية مكثفة
  • ضعف في التعميم

نماذج اللغة الإحصائية​

النهج الإحصائي نمذج اللغة كتوزيعات احتمالية:

P(w1,w2,...,wn)=∏i=1nP(wi∣w1,...,wi−1)P(w_1, w_2, ..., w_n) = \prod_{i=1}^{n} P(w_i | w_1, ..., w_{i-1})

نماذج 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)​

قدم بهاداناو وآخرون الانتباه لمعالجة عنق الزجاجة:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
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-الحاضر)​

النموذجالسنةالمعلماتالابتكار الرئيسي
ChatGPT2022~175 مليارالتعلم المعزز من خلال التغذية الراجعة البشرية للمواءمة
GPT-42023~1.8 تريليون*متعدد الوسائط، MoE*
Claude 2/32023-24غير معروفالذكاء الاصطناعي الدستوري
Llama 220237-70 مليارأوزان مفتوحة
Mistral20237 ملياربنية فعالة

*تقديري/غير مؤكد

تصور الجدول الزمني​

لماذا التاريخ مهم​

فهم هذا التطور يساعدنا على:

  1. تقدير القرارات التصميمية في البنى الحديثة
  2. التعرف على الأنماط التي تؤدي إلى الاختراقات
  3. التنبؤ بالاتجاهات المستقبلية بناءً على الاتجاهات
  4. تصحيح وتحسين الأنظمة الحالية

النقاط الرئيسية​

ملخص
  1. الشبكات العصبية المتكررة قدمت نمذجة التسلسل لكنها لم تستطع الموازاة
  2. LSTMs عالجت تلاشي التدرجات لكنها بقيت تسلسلية
  3. الانتباه مكن التركيز على المدخلات ذات الصلة
  4. المحولات أزالت التكرار، مما مكن من التوسع الضخم
  5. الحجم أثبت أنه عنصر رئيسي لظهور القدرات

نظرة إلى الأمام​

في الفصل التالي، سنستعرض المشهد الحالي للنماذج اللغوية الكبيرة، مستكشفين اللاعبين الرئيسيين، نماذجهم، والنقاش المستمر بين النهج المفتوح المصدر والنهج الاحتكاري.