مکانیزم توجه
خروجی توجه ضرب نقطهای مقیاسشده را برای یک مثال کوچک دستی حساب کنی و نقش پرسوجو، کلید، مقدار و ماسک را توضیح بدهی.
14 دقیقه مطالعه · 5 سؤال تمرینی · یادگیری ماشین میانی و پیشرفته
توجه بهعنوان جستجوی نرم
در مدلهای رمزگذار-رمزگشای اولیه، کل جملهی ورودی در یک بردار با طول ثابت فشرده میشد و برای جملههای بلند گلوگاه بود. توجه (Attention) اجازه میدهد در هر قدم، مستقیم به همهی موقعیتهای ورودی نگاه کنیم.
ایده مثل یک دیکشنری نرم است:
- پرسوجو (Query، ): دنبال چه میگردم؟
- کلید (Key، ): هر موقعیت چه چیزی عرضه میکند؟
- مقدار (Value، ): محتوایی که از آن موقعیت برداشته میشود.
بهجای انتخاب یک کلید، شباهت با همهی کلیدها را حساب میکنیم، با softmax به وزن تبدیل میکنیم و میانگین وزندار مقدارها را برمیداریم:
توجه ضرب نقطهای مقیاسشده
در ترنسفورمر، شباهت با ضرب نقطهای حساب میشود و همهی پرسوجوها با هم بهصورت ماتریسی پردازش میشوند:
چرا تقسیم بر ؟ اگر مؤلفههای و مستقل با میانگین صفر و واریانس ۱ باشند:
یعنی با بزرگ شدن امتیازها بزرگ میشوند، softmax اشباع میشود (تقریباً one-hot) و گرادیانش خیلی کوچک میشود. تقسیم بر واریانس امتیاز را به ۱ برمیگرداند.
خودتوجهی، ماسک و هزینه
- خودتوجهی (Self-attention): ، و همگی از همان دنباله ساخته میشوند: ، ، .
- توجه متقابل (Cross-attention): از یک دنباله و از دنبالهی دیگر میآیند.
- ماسک علّی (Causal Mask): برای مدلسازی زبان، موقعیت نباید آینده را ببیند. پیش از softmax به امتیازهای مقدار اضافه میکنیم تا وزنشان دقیقاً صفر شود.
- هزینه: ماتریس امتیاز است؛ در پیادهسازی استاندارد که ماتریس امتیاز را کامل میسازد، زمان و حافظه نسبت به طول دنباله رشد میکنند.
نکتهی مهم: خودتوجهی بدون ماسک به ترتیب حساس نیست. اگر ورودیها را جابهجا کنیم، خروجیها هم به همان شکل جابهجا میشوند (هموردایی جایگشتی). اطلاعات موقعیت باید جدا اضافه شود.