Attention روشی برای ترکیب اطلاعات است: یک Query با چند Key مقایسه میشود و از نتیجه مقایسه، وزنهایی برای ترکیب Valueها به دست میآید. واژه «توجه» در اینجا نام یک محاسبه برداری است؛ به معنی توجه انسانی، فهم قطعی یا تأیید درستی منبع نیست. در ادامه، یک مثال دوکلیدی را تا رسیدن به خروجی حساب میکنیم.
Query، Key و Value را از هم جدا کنیم
برای یک جایگاه خروجی، Query تعیین میکند چه ترکیبی از ورودیها با آن سازگارتر است. Keyها در محاسبه سازگاری شرکت میکنند و Valueها اطلاعاتی هستند که با وزنهای حاصل ترکیب میشوند. در مدل واقعی، این بردارها با تبدیلهای آموختهشده ساخته میشوند؛ نام Query را با متن سؤال کاربر و نام Value را با پاسخ آماده پایگاه دانش یکی نگیرید.
رابطه Attention با زمینه را از تفاوت پنجره زمینه و حافظه دستیار جدا ببینید. ممکن است سندی اصلاً وارد زمینه نشده باشد؛ در این حالت بحث وزن توجه آن سند، مسئله نبودن ورودی را حل نمیکند.
مثال عددی با دو کلید
بردار Query را (۱،۰)، کلید اول را (۱،۰) و کلید دوم را (۰،۱) در نظر بگیرید. طول بردار کلید، یعنی dk، برابر ۲ است. Value اول (۱۰،۰) و Value دوم (۰،۱۰) است. این اعداد ساختگیاند و به واژه، مشتری یا مدل خاصی تعلق ندارند.
ابتدا ضرب داخلی Query و هر کلید را حساب میکنیم: برای کلید اول ۱ و برای کلید دوم صفر. در Scaled Dot-Product Attention، هر امتیاز بر ریشه دوم dk تقسیم میشود؛ پس امتیازها تقریباً ۰٫۷۰۷۱ و صفر میشوند. سپس Softmax وزنهای نسبی را میسازد.
| مرحله | کلید اول | کلید دوم |
|---|---|---|
| ضرب داخلی | ۱ | ۰ |
| امتیاز پس از مقیاس | ۰٫۷۰۷۱ | ۰ |
| وزن پس از Softmax | 0.669762 | 0.330238 |
| Value | (۱۰،۰) | (۰،۱۰) |
scores = [1 / sqrt(2), 0]
weights = softmax(scores) # [0.669762, 0.330238]
output = weights[0]*[10, 0] + weights[1]*[0, 10]
# output ≈ [6.697615, 3.302385]سطر آخر شبهکد برداری است؛ در پایتون معمولی باید آرایه عددی یا محاسبه هر مؤلفه را به کار ببرید. مؤلفه اول خروجی از وزن اول ضرب در ۱۰ و مؤلفه دوم از وزن دوم ضرب در ۱۰ به دست آمده است. این خروجی یک بردار ترکیبی است، نه شماره سند برنده یا جمله نهایی مدل.
Self-Attention و Multi-Head چه چیزی را عوض میکنند؟
در Self-Attention، Query و Key و Value از بازنماییهای همان دنباله ساخته میشوند. در توجه میان رمزگشا و رمزگذار، منشأ این بازنماییها یکسان نیست. در نسخه چندسری، چند تبدیل آموختهشده موازی محاسبه میشوند و نتیجهها دوباره ترکیب میشوند. نام چندسری به معنی داشتن چند کارشناس انسانی یا چند پاسخ مستقل نیست.
این مثال فقط یک Query و دو Key دارد. یک لایه واقعی میتواند همزمان برای جایگاههای زیادی محاسبه انجام دهد. در تولید خودبازگشتی، ماسک تعیین میکند کدام جایگاهها مجازند دیده شوند؛ ترکیب اطلاعات نباید از بخش آینده نامجاز استفاده کند. جزئیات معماریها یکسان نیست و نباید تعداد سر یا اندازه لایه یک مقاله را به همه مدلها تعمیم داد.
وزن توجه، شاهد درستی پاسخ نیست
در نمونه بالا میتوان Value اول را عوض کرد، بدون اینکه Query و Keyها تغییر کنند. وزنها همان میمانند اما خروجی عوض میشود. همین تمرین ساده نشان میدهد بزرگبودن وزن بهتنهایی کیفیت یا حقیقت محتوای حملشده را ثابت نمیکند. برای پاسخ متکی به سند، همچنان باید خود ادعا و شاهد منبع بررسی شود.
اگر محصولی نقشه Attention نشان میدهد، بپرسید نقشه متعلق به کدام لایه و کدام سر است و قرار است دقیقاً به چه سؤالی پاسخ دهد. آن را بدون روش ارزیابی، توضیح قطعی علت تصمیم معرفی نکنید. برای کنترل ادعاها در پاسخ، راهنمای بررسی پشتیبانی پاسخ از منبع را بخوانید.
قدم بعدی برای خواننده فنی و خریدار
برای تمرین فنی، همین مثال را با Query برابر (۰،۱) دوباره حساب کنید. وزن بیشتر باید به کلید دوم منتقل شود. برای ارزیابی یک راهکار کسبوکار، بهجای نام معماری، ورودی واقعی، خروجی قابل قبول و روش بازبینی را مشخص کنید. اگر کاربرد شما چت سایت است، مسیر چت سایت اپرا را بررسی کنید و سؤالهای ارزیابی را همراه داشته باشید؛ این متن معرفی معماری داخلی اپرا نیست.
منابع و تاریخ بررسی
این منابع در ۳ نوامبر ۲۰۲۶ بررسی شدهاند. عددهای مثالها آموزشی و ساخته تحریریهاند؛ نتیجه آزمون یک محصول یا مشتری نیستند.
ادامه مسیر یادگیری
Softmax چیست؟ فرمول و محاسبه با مثال عددی — برای بازحساب مرحله نرمالسازی وزنها، محاسبهگر Softmax و محدودیت تفسیر خروجی را بخوانید.