مکانیزم توجه

خروجی توجه ضرب نقطه‌ای مقیاس‌شده را برای یک مثال کوچک دستی حساب کنی و نقش پرس‌وجو، کلید، مقدار و ماسک را توضیح بدهی.

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

توجه به‌عنوان جستجوی نرم

در مدل‌های رمزگذار-رمزگشای اولیه، کل جمله‌ی ورودی در یک بردار با طول ثابت فشرده می‌شد و برای جمله‌های بلند گلوگاه بود. توجه (Attention) اجازه می‌دهد در هر قدم، مستقیم به همه‌ی موقعیت‌های ورودی نگاه کنیم.

ایده مثل یک دیکشنری نرم است:

  • پرس‌وجو (Query، qq): دنبال چه می‌گردم؟
  • کلید (Key، kik_i): هر موقعیت چه چیزی عرضه می‌کند؟
  • مقدار (Value، viv_i): محتوایی که از آن موقعیت برداشته می‌شود.

به‌جای انتخاب یک کلید، شباهت qq با همه‌ی کلیدها را حساب می‌کنیم، با softmax به وزن تبدیل می‌کنیم و میانگین وزن‌دار مقدارها را برمی‌داریم:

αi=esi∑jesj,out=∑iαi vi\alpha_i = \frac{e^{s_i}}{\sum_j e^{s_j}}, \qquad \text{out} = \sum_i \alpha_i\,v_i

توجه ضرب نقطه‌ای مقیاس‌شده

در ترنسفورمر، شباهت با ضرب نقطه‌ای حساب می‌شود و همه‌ی پرس‌وجوها با هم به‌صورت ماتریسی پردازش می‌شوند:

Attention⁡(Q,K,V)=softmax⁡ ⁣(QK⊤dk)V\operatorname{Attention}(Q, K, V) = \operatorname{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V

چرا تقسیم بر dk\sqrt{d_k}؟ اگر مؤلفه‌های qq و kk مستقل با میانگین صفر و واریانس ۱ باشند:

Var⁡(q⊤k)=∑i=1dkVar⁡(qiki)=dk\operatorname{Var}(q^\top k) = \sum_{i=1}^{d_k} \operatorname{Var}(q_i k_i) = d_k

یعنی با بزرگ شدن dkd_k امتیازها بزرگ می‌شوند، softmax اشباع می‌شود (تقریباً one-hot) و گرادیانش خیلی کوچک می‌شود. تقسیم بر dk\sqrt{d_k} واریانس امتیاز را به ۱ برمی‌گرداند.

خودتوجهی، ماسک و هزینه

  • خودتوجهی (Self-attention): QQ، KK و VV همگی از همان دنباله ساخته می‌شوند: Q=XWQQ = XW_Q، K=XWKK = XW_K، V=XWVV = XW_V.
  • توجه متقابل (Cross-attention): QQ از یک دنباله و K,VK, V از دنباله‌ی دیگر می‌آیند.
  • ماسک علّی (Causal Mask): برای مدل‌سازی زبان، موقعیت tt نباید آینده را ببیند. پیش از softmax به امتیازهای j>tj > t مقدار −∞-\infty اضافه می‌کنیم تا وزنشان دقیقاً صفر شود.
  • هزینه: ماتریس امتیاز n×nn \times n است؛ در پیاده‌سازی استاندارد که ماتریس امتیاز را کامل می‌سازد، زمان و حافظه O(n2)O(n^2) نسبت به طول دنباله رشد می‌کنند.

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

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