هوش مصنوعی

مکانیزم Attention در ترنسفورمر

مکانیزم Attention در ترنسفورمر — راهنمای فارسی از مجموعهٔ «هوش مصنوعی» در وبلاگ آیرا. بازنویسی‌شده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

نوشتهٔ به‌روزرسانی: ۳ دقیقه مطالعه
تصویر مقالهٔ مکانیزم Attention در ترنسفورمر

اگه کمی درگیر هوش مصنوعی شده باشی، حتماً کلمهٔ «Attention» رو شنیدی. توی مقالهٔ معروف «Attention Is All You Need» (2017) گوگل، این ایده معرفی شد و باعث شد معماری ترنسفورمر همهٔ مدل‌های قبلی رو کنار بزنه. ولی دقیقاً Attention چیه و چرا این‌قدر مهمه؟

مشکلی که Attention حلش کرد

قبل از ترنسفورمرها، مدل‌های زبانی از معماری RNN (شبکهٔ عصبی بازگشتی) استفاده می‌کردن. RNN جملات رو کلمه به کلمه می‌خوند و اطلاعات رو توی یه «حالت پنهان» نگه می‌داشت. مشکل اینجا بود: وقتی جمله بلند می‌شد، RNN اطلاعات ابتدای جمله رو «فراموش» می‌کرد.

مثال ساده: جملهٔ «گربه‌ای که دیروز توی کوچه دیدم، امروز دوباره...» برای RNN پردازش دشواری داشت چون تا برسه به «امروز»، اطلاعات «گربه» تضعیف شده بود.

Attention چطور کار می‌کنه؟

ایدهٔ Attention اینه که وقتی داری یه کلمه رو پردازش می‌کنی، نگاهی به تمام کلمات دیگهٔ جمله بندازی و بفهمی هر کدوم چقدر «مرتبط» هستن.

برای هر کلمه سه بردار ساخته می‌شه:

  • Query (Q) — «من دنبال چه اطلاعاتی هستم؟»
  • Key (K) — «من چه اطلاعاتی دارم؟»
  • Value (V) — «اطلاعات واقعی من چیه؟»

نمره‌دهی با ضرب داخلی Q و K حساب می‌شه، بعد Softmax می‌گیره (تبدیل به احتمال)، و در نهایت وزن‌ها رو روی V اعمال می‌کنه. خروجی: یه بردار جدید که حاوی اطلاعات هم‌زمان از همهٔ جمله‌ست، با وزن‌دهی به کلماتی که «مرتبط‌ترن».

Self-Attention و Multi-Head Attention

Self-Attention یعنی هر کلمه به کلمات دیگهٔ همون جمله توجه می‌کنه. توی جملهٔ «بانک رودخانه خشک شد»، کلمهٔ «بانک» باید بفهمه اینجا «کنارهٔ رود» منظوره نه «بانک مالی» — و این رو از طریق توجه به «رودخانه» می‌فهمه.

Multi-Head Attention یعنی چند بار این فرایند موازی اجرا می‌شه با وزن‌های مختلف — هر «سر» (head) روی جنبهٔ متفاوتی از ارتباط‌ها تمرکز می‌کنه. یکی ممکنه روی روابط دستوری تمرکز کنه، دیگری روی معنا، دیگری روی ارجاعات ضمیر.

چرا موازی پردازش می‌شه — مزیت کلیدی

یکی از دلایل موفقیت ترنسفورمر اینه که همهٔ توکن‌ها به طور موازی پردازش می‌شن، نه ترتیبی. برای RNN مجبور بودی صبر کنی کلمهٔ اول پردازش شه، بعد دوم، بعد سوم. با Attention همه با هم — این یعنی می‌شه از GPU های موازی استفاده کرد و سرعت آموزش رو چند ده برابر بیشتر کرد.

Positional Encoding — چون جا مهمه

یه مشکل: وقتی همه رو موازی پردازش می‌کنی، مدل نمی‌دونه «این کلمه اول بود یا آخر؟» اینجا Positional Encoding وارد می‌شه. یه سیگنال ریاضی به هر کلمه اضافه می‌شه که جایگاهش در جمله رو مشخص می‌کنه. مثل یه شمارهٔ ردیف که توی اطلاعات هر توکن جای‌سازی شده.

Attention در مدل‌های بزرگ فعلی

GPT-4، کلاد، Gemini — همه روی معماری ترنسفورمر و Attention ساخته شدن. تفاوت‌هاشون در جزئیات اجراییه:

  • GPT: decoder-only (فقط نیمهٔ تولیدی ترنسفورمر)
  • BERT گوگل: encoder-only (برای درک متن، نه تولید)
  • T5 گوگل: encoder-decoder کامل

پنجرهٔ context که این روزها خیلی ازش حرف می‌شه — «این مدل ۱۰۰K توکن context داره» — مستقیماً به Attention برمی‌گرده: یعنی مدل می‌تونه هم‌زمان به ۱۰۰ هزار توکن «توجه» کنه.

محدودیت‌های Attention

Attention بی‌نقص نیست:

پیچیدگی درجهٔ دو: اگه جمله N توکن داشته باشه، Attention باید N×N ضرب ماتریسی انجام بده. این برای context بسیار بلند (مثلاً ۱ میلیون توکن) خیلی گرونه. راه‌حل‌هایی مثل Sparse Attention، Flash Attention، و Linear Attention دارن این مشکل رو کم می‌کنن.

تفسیرپذیری: هنوز کاملاً نمی‌فهمیم هر «head» دقیقاً چی یاد گرفته. این در پژوهش‌های interpretability AI موضوع داغیه.

فراموشی در پردازش: وقتی مدل چیزی تولید می‌کنه، فقط به محتوای داخل پنجرهٔ context توجه می‌کنه. ارتباط‌های بلندمدت فراتر از این پنجره از دست می‌ره — این مشکلیه که با راهکارهایی مثل RAG یا شناخت پیوسته تا حدی حل می‌شه.

ارتباط با حافظهٔ بلندمدت

یه نکتهٔ مهم اینه که Attention فقط توی پنجرهٔ context جاری کار می‌کنه. وقتی گفتگو تموم می‌شه، همه چیز از بین می‌ره. این یعنی مدل تو رو نمی‌شناسه — سبک نوشتاری‌ات، اهدافت، پروژه‌ای که دیروز داشتی روش کار می‌کردی.

این یکی از دلایلیه که حافظهٔ بلندمدت در هوش مصنوعی موضوع مهمیه و چیزی که آیرا با رویکرد شناخت پیوسته داره روش کار می‌کنه.

همچنین بخوان

#هوش مصنوعی#attention

ادامهٔ مسیر

همهٔ مقاله‌ها ←

بیشتر در «هوش مصنوعی»