منظور از SWiGLU چیست؟
SWiGLU (Swish‑Gated Linear Unit)
یک تابع فعالسازی پیشرفته است که در مدلهای زبانی بزرگ مانند PaLM، GPT‑NeoX و LLaMA استفاده میشود. این تابع ترکیبی از Swish (یا SiLU) و Gating‑mechanism (مکانیزم گیت) است و عملکرد بهتری نسبت به ReLU یا GELU در مدلهای عمیق ارائه میدهد.
فرمول ریاضی
اگر ورودی را x و وزنهای خطی را W و V در نظر بگیریم، SWiGLU به صورت زیر تعریف میشود:
SWiGLUx=SwishxW⊗xV \text{SWiGLU}(x) = \text{Swish}(xW) \otimes (xV)
که در آن:
Swish(x) = x \cdot \sigma(x)(σ تابع سیگموید است)⊗ضرب عنصر به عنصر (Hadamard product) است.WوVدو ماتریس وزن مجزا هستند که هر کدام بعد خروجی را به نصف کاهش میدهند (معمولاً بعد پنهان را به دو نیم تقسیم میکنند).
در عمل، اگر بعد پنهان d باشد، ابتدا x را با W (ابعاد d × d/2) و با V (ابعاد d × d/2) ضرب میکنیم، سپس خروجی Swish را با خروجی خطی gate میزنیم.
مزایای SWiGLU
- ظرفیت مدلسازی بالاتر: به دلیل وجود گیت غیرخطی، میتواند روابط پیچیدهتری را یاد بگیرد.
- پایداری بهتر: در مقایسه با GELU یا ReLU، ناپایداریهای آموزش (مانند vanishing gradient) کمتر مشاهده میشود.
- کارایی در مدلهای بزرگ: در معماریهای Transformer‑based (مانند PaLM، LLaMA) عملکرد بهتری در دقت و سرعت همگرایی نشان داده است.
مقایسه با توابع دیگر
- ReLU: ساده و سریع، اما مشکل “مرگ نورون” (dead neurons) دارد.
- GELU: نرمتر از ReLU و در مدلهایی مانند BERT و GPT‑3 استفاده میشود.
- Swish/SiLU: مشتقپذیر و نرم، اما فاقد مکانیزم گیت.
- GLU (Gated Linear Unit): از یک گیت سیگمویدی استفاده میکند، اما SWiGLU گیت را با Swish جایگزین میکند که عملکرد بهتری دارد.
کاربرد در مدلهای معروف
- PaLM (Google): از SWiGLU در لایههای feed‑forward استفاده کرده و به دقت ۸۴٫۷٪ در MMLU دست یافته است.
- LLaMA (Meta): در لایههای MLP از SWiGLU بهره میبرد.
- GPT‑NeoX (EleutherAI): نیز از این تابع فعالسازی استفاده میکند.

