چیتشیت
مقایسهی BERT، GPT و T5
BERT, GPT and T5 Compared
فقط-انکودر، فقط-دیکودر و انکودر-دیکودر در کنار هم. اهداف، ماسکها، بلوکها، رمزگشایی و زمان انتخاب هر کدام.
فهرست مطالب
سه خانواده در کنار هم
مقایسه| عامل | BERT | GPT | T5 / BART |
|---|---|---|---|
| پشته | فقط انکودر | فقط دیکودر | انکودر و دیکودر |
| اتنشن | دوطرفه، بدون ماسک | ماسک مثلثی علّی | انکودر دوطرفه، دیکودر علّی |
| کراساتنشن | ندارد | ندارد | Q از دیکودر، K/V از انکودر |
| هدف | MLM روی 15٪ از توکنها | توکن بعدی، انتقال به اندازهی یک واحد | تخریب بخشهای متن یا حذف نویز |
| پیشبینی میکند | $P(x_{\text{masked}} \mid x_{\text{unmasked}})$ | $P(x_t \mid x_{<t})$ | اسپنهای هدف یا توالی تمیز |
| تولید متن | خیر | بله، توکن به توکن | بله، از خروجی انکودر |
| بهترین کاربرد | طبقهبندی، بازیابی، NER | چت، کد، استدلال | ترجمه، گفتار به متن |
| نمونهها | BERT، DeBERTa، ModernBERT | GPT، Llama، Qwen | T5، BART، Whisper |
سیمکشی بلوکها
معمارییک گذر رو به جلو انکودر-دیکودر
گامبهگام- امبدینگتوکنها بردار میشوند. RoPE یا سیگنال موقعیت سینوسی را اضافه کنید.
- انکودرهر بلوک خوداتنشن پیشنرمالسازی و سپس FFN پیشنرمالسازی را اجرا میکند، هرکدام با یک اتصال باقیمانده.
- خروجی انکودرانکودر یک بار به ازای هر ورودی اجرا میشود. آن را برای ورودیهای طولانی کَش کنید.
- خوداتنشن دیکودرماسکشده، تا موقعیت
iتنها موقعیتهای تاiرا ببیند. - کراساتنشن دیکودرتنها جایی که اطلاعات انکودر وارد دیکودر میشود.
- FFN دیکودرسپس یک LN نهایی پیش از تصویر خروجی.
- بررسیمبدأ 6 توکنی و هدف 5 توکنی خروجی با شکل
(5, vocab)میدهند.
وظایف در کد درس
کار و کد| وظیفه | کد |
|---|---|
| ماسکگذاری 80/10/10 در BERT | create_mlm_batch(tokens, vocab_size) |
| ماسکگذاری کل کلمات | whole_word_mlm(tokens, spans, vocab_size) |
| ماسک علّی GPT | causal_mask(n) |
| تابع زیان (loss) توکن بعدی | cross_entropy_shifted(logits, target_ids) |
| تخریب بخشهای متن در T5 | corrupt_spans(tokens, mask_rate=0.15) |
| بازسازی نسخهی اصلی | round_trip(source, target) |
| یک بلوک انکودر | encoder_block(x, p) |
| یک بلوک دیکودر | decoder_block(x, enc_out, p) |
بارگذاری هر خانواده
کدpython
tok = AutoTokenizer.from_pretrained("answerdotai/ModernBERT-base")
model = AutoModel.from_pretrained("answerdotai/ModernBERT-base")
out = model(**inputs).last_hidden_state # (1, N, 768)، فقط امبدینگها
model = AutoModelForCausalLM.from_pretrained("<model>")
out = model.generate(**inputs, max_new_tokens=64,
temperature=0.7, top_p=0.9, do_sample=True) # نمونهگیری پاسخ
model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-base")
inputs = tok("translate English to French: <text>", return_tensors="pt") # نام وظیفه در ورودی
out = model.generate(**inputs, max_new_tokens=32)
print(tok.decode(out[0], skip_special_tokens=True))
اهداف پیشآموزش
مفهومها- MLM
- انتخاب 15٪ از توکنها. 80٪ تبدیل به
[MASK]میشوند، 10٪ تصادفی، 10٪ دستنخورده. - برچسبها
- توکن اصلی در موقعیتهای انتخابی. -100 در تمام موقعیتهای دیگر.
- NSP
- پیشبینی اینکه آیا جملهی B پس از A میآید. RoBERTa نشان داد که آسیبزننده است. انکودرهای مدرن آن را رد میکنند.
- مدل زبانی علّی
- ورودی
[t1, t2, t3]، اهداف[t2, t3, t4]. جمع $-\log P$ روی موقعیتها. - ماسک علّی
- اگر $j \le i$ باشد $M_{ij} = 0$، در غیر این صورت $-\infty$. قبل از سافتمکس اضافه شود.
- تخریب بخشهای متن
- اسپنهایی با میانگین طول 3، مجموعاً 15٪، هرکدام جایگزین با
<extra_id_0>،<extra_id_1>. - هدف T5
- فقط اسپنهای تخریبشده، هرکدام پس از نشانهی نگهبان (sentinel) خود.
- BART
- پنج تابع نویز. دیکودر کل توالی اصلی را بازسازی میکند.
استراتژیهای رمزگشایی
دستورها| دستور | کارکرد |
|---|---|
sample_greedy(probs) | Argmax در هر گام. تکمیل کد، وظایف قطعی |
sample_temperature(logits, t, rng) | تقسیم لاجیتها بر T. مقدار بالاتر T تنوع بیشتری میدهد |
sample_top_k(logits, k, rng) | نمونهگیری فقط از k توکن برتر |
sample_top_p(logits, p, rng) | کوچکترین مجموعهای با احتمال تجمعی حداقل p |
sample_min_p(logits, min_p, rng) | نگهداشتن توکنها با شرط p >= min_p * max_p |
Beam search | عرض 4 تا 5 برای ترجمه و خلاصهسازی |
Speculative decoding | مدل پیشنویس N توکن پیشنهاد میدهد. مدل بزرگ تأیید میکند |
بلوک: 2017 در برابر 2026
مقایسه| مؤلفه | بلوک 2017 | بلوک 2026 |
|---|---|---|
| نرمالسازی | LayerNorm، پسنرمالسازی | RMSNorm، پیشنرمالسازی |
| فعالسازی FFN | ReLU | SwiGLU |
| بسط FFN | 4 برابر | 2.6 برابر (سه ماتریس) |
| موقعیت | سینوسی مطلق | RoPE |
| اتنشن | MHA کامل | GQA (یا MLA) |
| جملات بایاس | بله | خیر |
پیشفرضها در کد
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
mask_prob | 0.15 | نرخ انتخاب BERT |
IGNORE_INDEX | -100 | برچسب در موقعیتهای انتخابنشده |
mask_rate | 0.15 | سهم توکنها در اسپنهای T5 |
mean_span | 3.0 | میانگین طول اسپن در T5 |
mask_token | <mask> | توکن ماسک و پرکننده در BART |
`layer_norm` eps | 1e-5 | میانگین را کم میکند |
`rms_norm` eps | 1e-6 | بدون تفریق میانگین |
temperature | 1.0 | softmax، top-k، top-p، min-p |
زمان استفاده از هر خانواده
نکتهها- از BERT برای طبقهبندی، امبدینگها، NER، NLI و بازرتبهبندهای RAG استفاده کنید. 5 تا 10 برابر سریعتر از دیکودرها به ازای هر توکن اجرا میشود.
- از BERT برای تولید متن استفاده نکنید. انکودر نمیتواند توکنها را به صورت خودبازگشتی تولید کند.
- از GPT برای تولید متن، چت، کد و استدلال استفاده کنید. فقط-دیکودر تمیزترین مقیاسپذیری را دارد.
- از min-p + دمای 0.7 به عنوان پیشفرض مدلهای با وزن باز استفاده کنید.
- زمانی از T5 یا BART استفاده کنید که ورودی یک توالی مبدأ مشخص باشد: ترجمه، گفتار، وظایف ساختاریافته.
- با انکودر-دیکودر از جستجوی پرتو استفاده کنید. توزیع خروجی باریکتر از چت است.
- خلاصهسازی و استخراج داده با هر دو ساختار انکودر-دیکودر یا فقط-دیکودر کار میکنند.
عیبیابی
عیبیابیمدل بدون
[MASK]در فاینتیون شکست میخورد- علت
- آموزشدیده روی 100٪
[MASK] - راهحل
- استفاده از قانون 80/10/10
مدل با نگاه کردن به جواب تقلب میکند
- علت
- نبود ماسک علّی
- راهحل
- افزودن مثلث
-infقبل از سافتمکس
وزنهای آینده دقیقاً صفر نیستند
- علت
- سافتمکس هرگز صفر مطلق خروجی نمیدهد
- راهحل
- قرار دادن
-infدر امتیازهای آینده
محو شدن گرادیانها در پشتهی عمیق
- علت
- عدم وجود اتصالات باقیمانده
- راهحل
- استفاده از
x + sublayer(x)
انفجار اکتیویشنها پس از 12 لایه
- علت
- پسنرمالسازی
- راهحل
- تغییر به پیشنرمالسازی
اسپن تخریبشده بازسازی نمیشود
- علت
- خطای یکی اضافه/کم (off-by-one) در ثبت موقعیت اسپنها
- راهحل
- اجرای بررسی بازگشتپذیری (round-trip)
رمزگشایی کُند روی ورودیهای طولانی
- علت
- انکودر در هر گام دوباره اجرا میشود
- راهحل
- کَش کردن خروجی انکودر
پرسشها
پرسش و پاسخ- چرا BERT میتواند از کانتکست راست استفاده کند؟
- انکودر ماسک علّی ندارد.
- چرا آموزش GPT موازی است؟
- یک گذر N تابع زیان توکن بعدی را میدهد. استنتاج سریال باقی میماند.
- چند پارامتر در یک بلوک وجود دارد؟
- اتنشن MHA برابر با
4 · d²است. بلوک FFN از نوع SwiGLU حدود3rd²است. - چرا پیشآموزش T5 ارزانتر از BART است؟
- T5 فقط اسپنها را رمزگشایی میکند. BART کل توالی را رمزگشایی میکند.
- آیا مدلهای امبدینگ همان BERT هستند؟
- بله. همان انکودر، با تابع زیان تقابلی.