الفصل 1: أهداف التدريب المسبق
المقدمة
التدريب المسبق هو عملية تدريب نموذج لغوي على كميات كبيرة من بيانات النصوص غير المعلّمة. الفكرة الرئيسية هي أن التنبؤ بالنص نفسه يوفر إشارة تعلم غنية.
التنبؤ بالكلمة التالية (نموذج لغوي سببي)
الفكرة الأساسية
بالنظر إلى تسلسل من الكلمات، التنبؤ بالكلمة التالية:
التنفيذ
import torch
import torch.nn.functional as F
def causal_lm_loss(logits, targets):
"""
Compute causal language modeling loss.
logits: (batch, seq_len, vocab_size)
targets: (batch, seq_len)
"""
# Shift: predict next token from each position
shift_logits = logits[..., :-1, :].contiguous()
shift_targets = targets[..., 1:].contiguous()
# Cross-entropy loss
loss = F.cross_entropy(
shift_logits.view(-1, shift_logits.size(-1)),
shift_targets.view(-1),
ignore_index=-100 # Padding token
)
return loss
مستخدم من قبل
- سلسلة GPT (OpenAI)
- LLaMA (Meta)
- Mistral
نمذجة اللغة المقنعة (MLM)
نهج BERT
إخفاء الكلمات عشوائيًا وتنبؤها:
def create_mlm_data(input_ids, tokenizer, mask_prob=0.15):
"""Create masked language modeling training data."""
labels = input_ids.clone()
# Create random mask
probability_matrix = torch.full(labels.shape, mask_prob)
masked_indices = torch.bernoulli(probability_matrix).bool()
# Don't mask special tokens
special_tokens_mask = [
tokenizer.get_special_tokens_mask(val)
for val in labels.tolist()
]
masked_indices &= ~torch.tensor(special_tokens_mask).bool()
# Replace with [MASK] token
input_ids[masked_indices] = tokenizer.mask_token_id
# Only compute loss on masked tokens
labels[~masked_indices] = -100
return input_ids, labels
مستخدم من قبل
- BERT
- RoBERTa
- النماذج الحديثة للمشفرات
سببي مقابل ثنائي الاتجاه
| الجانب | سببي (GPT) | ثنائي الاتجاه (BERT) |
|---|---|---|
| السياق | يسار فقط | كلا الاتجاهين |
| الأفضل لـ | التوليد | الفهم |
| التدريب | توليدي ذاتي | مقنع |
النقاط الرئيسية
ملخص
- التنبؤ بالكلمة التالية يمكّن التوليد التوليدي الذاتي
- نمذجة اللغة المقنعة توفر فهم السياق ثنائي الاتجاه
- النماذج السببية تهيمن على النماذج اللغوية الكبيرة الحديثة لقدرتها على التوليد