معماری ترنسفورمر

تعداد پارامترهای یک بلوک ترنسفورمر را تخمین بزنی و تفاوت Post-LN و Pre-LN و جریان داده در رمزگشا را توضیح بدهی.

15 دقیقه مطالعه · 5 سؤال تمرینی · یادگیری ماشین میانی و پیشرفته

توجه چندسَر

یک توجه تنها فقط یک نوع رابطه را در هر موقعیت میانگین می‌گیرد. توجه چندسر (Multi-Head Attention) hh توجه موازی با ابعاد کوچک‌تر اجرا می‌کند تا هر سر بتواند روی نوع متفاوتی از رابطه تمرکز کند:

headi=Attention⁡(XWQ(i),XWK(i),XWV(i))\text{head}_i = \operatorname{Attention}(XW_Q^{(i)}, XW_K^{(i)}, XW_V^{(i)}) MHA⁡(X)=Concat⁡(head1,…,headh) WO\operatorname{MHA}(X) = \operatorname{Concat}(\text{head}_1, \dots, \text{head}_h)\,W_O

معمولاً dk=dv=dmodel/hd_k = d_v = d_{\text{model}}/h. پس روی هم، WQW_Q، WKW_K و WVW_V هرکدام dmodel×dmodeld_{\text{model}} \times d_{\text{model}} هستند و WOW_O هم همین‌طور. بدون بایاس:

#paramsMHA=4 dmodel2\#\text{params}_{\text{MHA}} = 4\,d_{\text{model}}^2

هزینه‌ی محاسبه تقریباً با تک‌سر با بعد کامل برابر است.

بلوک ترنسفورمر: FFN، اتصال باقیمانده و LayerNorm

هر بلوک دو زیرلایه دارد: توجه چندسر و یک شبکه‌ی پیش‌خور موقعیتی (FFN) که روی هر توکن جداگانه اعمال می‌شود:

FFN⁡(x)=W2 ϕ(W1x+b1)+b2,W1∈Rdff×dmodel\operatorname{FFN}(x) = W_2\,\phi(W_1 x + b_1) + b_2, \qquad W_1 \in \mathbb{R}^{d_{\text{ff}} \times d_{\text{model}}}

معمولاً dff=4 dmodeld_{\text{ff}} = 4\,d_{\text{model}} (در مقاله‌ی اصلی 512512 و 20482048).

دور هر زیرلایه اتصال باقیمانده و LayerNorm هست، به دو شکل:

  • Post-LN (ترنسفورمر اصلی):   x←LN⁡(x+Sublayer⁡(x))\;x \leftarrow \operatorname{LN}\big(x + \operatorname{Sublayer}(x)\big)
  • Pre-LN (GPT-2 و بیشتر مدل‌های امروزی):   x←x+Sublayer⁡(LN⁡(x))\;x \leftarrow x + \operatorname{Sublayer}\big(\operatorname{LN}(x)\big)

در Pre-LN مسیر باقیمانده یک مسیر همانی تمیز برای گرادیان است؛ آموزش مدل‌های عمیق پایدارتر است و به گرم‌کردن نرخ یادگیری حساسیت کمتری دارد. Post-LN بدون Warmup دقیق اغلب ناپایدار است.

کدگذاری موقعیت و رمزگذار-رمزگشا

کدگذاری موقعیت: چون توجه به ترتیب حساس نیست، اطلاعات جایگاه اضافه می‌شود:

  • سینوسی (ترنسفورمر اصلی): بردارهای ثابت سینوس و کسینوس با فرکانس‌های مختلف، جمع‌شده با embedding.
  • یادگرفتنی (BERT و GPT-2): یک embedding برای هر جایگاه.
  • نسبی مثل RoPE: موقعیت با چرخاندن qq و kk وارد ضرب نقطه‌ای می‌شود.

رمزگذار-رمزگشا: رمزگذار خودتوجهی دوطرفه دارد. هر لایه‌ی رمزگشا سه زیرلایه دارد:

  1. خودتوجهی ماسک‌دار روی توکن‌های تولیدشده تا این‌جا
  2. توجه متقابل: پرس‌وجو از رمزگشا، کلید و مقدار از خروجی رمزگذار
  3. FFN

در پایان، یک لایه‌ی خطی و softmax توزیع توکن بعدی روی واژگان را می‌دهد.

تمرین‌های این درس را حل کن (رایگان)