🧠 مکانیزم توجه در هوش مصنوعی دقیقاً چیست؟
در هر مدل خودرگرسیو، مانند مدلهای زبان بزرگی که روزانه از آنها استفاده میکنیم، کلید تولید متن منسجم، درک متنی است که پیش از آن آمده است. اما همه کلمات گذشته برای پیشبینی کلمه بعدی به یک اندازه اهمیت ندارند. اینجاست که مکانیزم توجه (Attention Mechanism) وارد عمل میشود. این یک تکنیک درخشان است که به مدل اجازه میدهد تا به طور انتخابی روی مرتبطترین بخشهای ورودی تمرکز کند و اهمیت آنها را به صورت پویا برای وظیفه مورد نظر بسنجد.
بیایید برای روشن شدن موضوع، یک مثال کلاسیک را بررسی کنیم:
«حیوان از خیابان عبور نکرد زیرا آن خیلی خسته بود.»
ضمیر «آن» به چه چیزی اشاره دارد؟ حیوان یا خیابان؟ برای یک انسان، پاسخ واضح است. مکانیزم توجه به یک مدل هوش مصنوعی کمک میکند تا با ایجاد یک پیوند قویتر بین «آن» و «حیوان» نسبت به «آن» و «خیابان»، به همین نتیجه برسد. این توانایی در درک روابط بین کلمات، برای دریافت معنای متنی در وظایف پیچیده پردازش زبان طبیعی (NLP) اساسی است.
⚙️ اجزای اصلی: توجه چگونه کار میکند؟
درحالیکه امروزه انواع مختلفی از مکانیزم توجه وجود دارد، همه آنها یک پایه مشترک دارند که بر سه جزء کلیدی استوار است. این فرآیند را میتوان مانند یک سیستم جستجو در داخل مدل در نظر گرفت. ما این موضوع را از دیدگاه یک رمزگشا (decoder) بررسی میکنیم که متن جدید را قدم به قدم تولید میکند.
- پرسوجو (Query یا Q): این یک بردار است که توکن (یا کلمه) فعلی را که مدل روی آن کار میکند، نشان میدهد. این «سؤالی» است که پرسیده میشود، مانند: «در حال حاضر چه متنی برای من مرتبط است؟»
- کلید (Key یا K): اینها بردارهایی هستند که تمام توکنهای قبلی در متن را نمایندگی میکنند. آنها مانند «برچسبهایی» برای اطلاعات موجود عمل میکنند. پرسوجو با تمام کلیدها مقایسه میشود تا موارد منطبق را پیدا کند.
- مقدار (Value یا V): این بردارها نیز توکنهای قبلی را نمایندگی میکنند، اما حاوی اطلاعات یا محتوای واقعی آن توکنها هستند. پس از اینکه مقایسه پرسوجو و کلید، امتیازات توجه را به دست آورد، از این امتیازات برای ایجاد یک مجموع وزنی از بردارهای مقدار استفاده میشود.
نتیجه، یک بردار آگاه از متن است که به طور انتخابی مرتبطترین اطلاعات را از گذشته استخراج کرده تا به پیشبینی آینده کمک کند. یک بهینهسازی هوشمندانه در اینجا کشینگ کلید-مقدار (KV Caching) است، که در آن بردارهای کلید و مقدار برای توکنهای گذشته ذخیره میشوند تا نیازی به محاسبه مجدد آنها در هر بار تولید توکن جدید نباشد. این کار سرعت استنتاج را به شدت افزایش میدهد.
🚀 تکامل مکانیزمهای توجه
ایده اصلی ثابت است، اما پیادهسازی آن برای کارآمدتر شدن، به ویژه با بزرگتر شدن پنجرههای متنی، تکامل یافته است. تفاوت اصلی بین تکنیکها در نحوه ایجاد تعادل بین عملکرد و هزینه محاسباتی نهفته است.
۱. توجه چندسر (Multi-Head Attention – MHA)
این روش، نسخه اصلی و پیشگامانهای است که در مقاله «توجه تمام آن چیزی است که نیاز دارید» معرفی شد. در MHA، فرآیند توجه به صورت موازی در چندین «سر» اجرا میشود. هر سر مجموعه بردارهای پرسوجو، کلید و مقدار خود را دارد که به آن اجازه میدهد انواع مختلفی از روابط را به طور همزمان یاد بگیرد. خروجیهای نهایی از همه سرها با هم ترکیب میشوند. اشکال بزرگ آن چیست؟ پیچیدگی آن درجه دوم (quadratic) است. با افزایش طول توالی (n)، محاسبات و حافظه مورد نیاز با n² رشد میکند، زیرا هر پرسوجو باید با هر کلید مقایسه شود. اگرچه کشینگ کلید-مقدار در هنگام استنتاج کمک میکند، اما اندازه خود کش به صورت خطی رشد میکند و برای متون بسیار طولانی به یک گلوگاه تبدیل میشود. (استفاده شده در: BERT, T5)
۲. توجه چندپرسوجو (Multi-Query Attention – MQA)
MQA مستقیماً مشکل حافظه MHA را هدف قرار میدهد. این روش همچنان از چندین سر پرسوجو استفاده میکند (تا به مسئله از زوایای مختلف نگاه کند)، اما همه آنها را مجبور میکند تا از یک مجموعه واحد از بردارهای کلید و مقدار به صورت اشتراکی استفاده کنند. این کار به شدت پهنای باند حافظه مورد نیاز و اندازه کش کلید-مقدار را کاهش میدهد و استنتاج را برای مدلهای زبان بزرگ با متون طولانی بسیار سریعتر و کارآمدتر میکند. بردارهای کلید و مقدار فقط یک بار برای هر توکن محاسبه میشوند، نه برای هر سر. (استفاده شده در: PaLM, Falcon)
۳. توجه پرسوجوی گروهبندیشده (Grouped-Query Attention – GQA)
GQA یک مصالحه هوشمندانه بین عملکرد MHA و کارایی MQA است. به جای یک مجموعه کلید-مقدار مشترک برای همه سرها، GQA سرهای پرسوجو را به چندین گروه تقسیم میکند. هر گروه مجموعه بردارهای کلید و مقدار خود را به اشتراک میگذارد. این روش تعادل ایجاد میکند و سربار محاسباتی و حافظه را در مقایسه با MHA کاهش میدهد در حالی که اغلب کیفیت بهتری نسبت به MQA که رویکرد تهاجمیتری دارد، ارائه میدهد. میتوان MHA و MQA را به عنوان موارد خاصی از GQA در نظر گرفت: اگر تعداد گروهها برابر با تعداد سرها باشد، MHA است؛ اگر فقط یک گروه وجود داشته باشد، MQA است. (استفاده شده در: Llama 2, Llama 3, Mistral)
۴. توجه نهان چندسر (Multi-Head Latent Attention – MHLA)
یک نوآوری جدیدتر که برای دستیابی به عملکرد سطح MHA با کارایی حتی بیشتر طراحی شده است. ایده اصلی MHLA که در مدلهایی مانند DeepSeek استفاده میشود، فشردهسازی است. به جای ذخیره کامل بردارهای بزرگ کلید و مقدار در کش، این روش آنها را به یک «فضای نهان» بسیار کوچکتر و با ابعاد کمتر، پروژه میکند. این بردار نهان فشردهشده چیزی است که کش میشود و به طور چشمگیری مصرف حافظه را کاهش میدهد. هنگامی که برای محاسبه نیاز باشد، یک ماتریس بازپروژه (up-projection) آنها را بازیابی میکند. این ترفند هوشمندانه، استنتاج را برای مدلهای بسیار بزرگ بدون افت قابل توجه عملکرد، به شدت تسریع میکند. MHLA میتواند در حین آموزش مانند MHA عمل کند و در حین استنتاج برای حداکثر سرعت به یک پارادایم شبیهتر به MQA تغییر وضعیت دهد. (استفاده شده در: DeepSeek-V2)
💡 نتیجهگیری: مسیر پیش رو
سیر تکاملی از MHA به MHLA یک روند واضح را نشان میدهد: ساختن مکانیزمهای توجه سریعتر، با مصرف حافظه بهینهتر و مقیاسپذیرتر برای توالیهای طولانیتر. تحقیقات با روشهای هیجانانگیز دیگری مانند توجه پراکنده (sparse attention) و توجه تقویتشده با حافظه (memory-augmented attention) ادامه دارد. این نوآوری مستمر برای پیش بردن مرزهای دستاوردهای هوش مصنوعی حیاتی است.
منبع: بر اساس تحلیلی از مکانیزمهای توجه در مدلهای زبان بزرگ مدرن.