هوش مصنوعی و فناوری

توجه (Attention) واقعاً چیست؟ نگاهی درون مغز مدل‌های زبانی

مدل‌های زبانی بزرگ روی مکانیزمی به نام «توجه» ساخته شده‌اند. این مقاله توضیح می‌دهد توجه دقیقاً چه می‌کند، چرا با چیزی که در کلاس درس به ما گفته شده فرق دارد، و چرا همین یک ایده، انقلاب ده سال اخیر هوش مصنوعی را ممکن کرد.

به قلم admin·۶ خرداد ۱۴۰۵·5 min read

وقتی از ChatGPT یا Claude می‌پرسیم «مغز اینها چطور کار می‌کند؟»، اغلب جواب می‌گیریم: «شبکه‌ی عصبی بزرگ». این جواب درست است ولی تقریباً هیچ‌چیز توضیح نمی‌دهد. مثل این است که از یک پزشک بپرسید بدن انسان چطور کار می‌کند و او بگوید «از سلول». درست، اما توضیحی نیست.

اگر بخواهیم یک سطح عمیق‌تر برویم، باید درباره‌ی ایده‌ای به نام «توجه» یا Attention صحبت کنیم. این ایده در مقاله‌ی مشهور «Attention Is All You Need» در سال ۲۰۱۷ منتشر شد و معماری‌ای را معرفی کرد به نام Transformer. تقریباً تمام مدل‌های زبانی بزرگ امروز—از GPT تا Claude تا Gemini—روی همین معماری ساخته شده‌اند. این مقاله می‌گوید توجه دقیقاً چه می‌کند، چرا کار می‌کند، و چرا همین یک ایده در یک دهه دنیای هوش مصنوعی را زیر و رو کرد.

مسئله‌ای که توجه حل کرد

تصور کنید جمله‌ی «دیروز در پارک، علی به دوستش گفت که او خسته است» را به یک ماشین می‌دهیم و می‌خواهیم بفهمد «او» به چه کسی اشاره می‌کند. علی یا دوستش؟ برای انسان این سؤال شاید بدیهی به‌نظر برسد، اما توجه کنید چه کاری در ذهنتان انجام دادید: شما به کل جمله نگاه کردید، رابطه‌ی بین کلمات را وزن دادید، و تصمیم گرفتید کدام نام احتمالاً به «او» اشاره می‌کند.

قبل از Transformerها، شبکه‌های عصبی این کار را سخت می‌فهمیدند. مدل‌های رایج آن دوران (به اسم RNN و LSTM) جمله را کلمه به کلمه، از چپ به راست (یا برعکس)، پردازش می‌کردند. مثل کسی که جمله را دانه‌دانه از سوراخ کلید نگاه می‌کند و فقط کلمه‌ی جلوی چشمش را در آنِ واحد می‌بیند. وقتی به «او» می‌رسیدند، «علی» را تقریباً فراموش کرده بودند.

توجه این محدودیت را حذف کرد. ایده‌ی محوری ساده است: «اجازه بده هر کلمه، در همان لحظه، به همه‌ی کلمات دیگر نگاه کند و خودش تصمیم بگیرد کدام‌ها مهم‌اند.»

توجه چطور کار می‌کند؟ سه نقش به اسم Query، Key و Value

حالا برویم سراغ ساز و کار واقعی. توجه روی سه نقش بنا شده که از دنیای پایگاه داده وام گرفته شده‌اند: Query (پرسش)، Key (کلید) و Value (مقدار). برای هر کلمه‌ی ورودی، مدل سه بردار متفاوت می‌سازد—سه «نمایش عددی» از همان کلمه.

  • Query: «من به چه چیز نیاز دارم؟» — این بردار از طرف کلمه‌ای می‌آید که در حال جست‌وجوست
  • Key: «من چه چیز ارائه می‌دهم؟» — این بردار از طرف هر کلمه‌ای می‌آید که ممکن است مرتبط باشد
  • Value: «اگر مهم بودم، اطلاعات من این است» — این بردار محتوای واقعی است که منتقل می‌شود

حالا فرض کنید کلمه‌ی «او» در جمله‌ی بالا، Query خودش را به سراغ همه‌ی Keyها می‌فرستد. مدل با یک عمل ریاضی ساده—ضرب داخلی بین Query و هر Key—یک عدد می‌سازد که می‌گوید این جفت چقدر به هم مرتبط‌اند. به این عدد می‌گویند امتیاز توجه.

بعد این امتیازها از یک تابع به نام Softmax عبور می‌کنند که آن‌ها را به وزن‌های احتمالی تبدیل می‌کند: مجموعشان یک می‌شود، و کلمه‌ای که شبیه‌ترین Key را داشته بیشترین وزن را می‌گیرد. در نهایت مدل Valueهای همه‌ی کلمات را با همین وزن‌ها جمع می‌کند. نتیجه؟ یک بردار جدید برای «او» که حالا اطلاعات «علی» را بیشتر از بقیه در خودش دارد—چون امتیاز توجهش به «علی» بالاتر بود.

چرا این عمل ساده انقلابی است؟

تمام جذابیت توجه در یک ویژگی پنهان است: همه‌ی این محاسبات می‌توانند به‌صورت موازی انجام شوند. در RNN، چون کلمه‌ها دانه‌دانه از پنجره عبور می‌کردند، باید منتظر می‌ماندیم محاسبه‌ی کلمه‌ی n تمام شود تا محاسبه‌ی n+1 شروع شود. در توجه، می‌توانیم Queryها، Keyها و Valueهای همه‌ی کلمات را یک‌جا، در یک تنسور بزرگ، با یک ضرب ماتریسی محاسبه کنیم.

این ویژگی به‌نظر یک جزئیات مهندسی می‌آید اما واقعاً نیست. این همان چیزی است که اجازه داد ما مدل‌هایی با میلیاردها پارامتر روی کارت‌های گرافیک آموزش دهیم. RNN روی همین سخت‌افزار، در همان زمان، فقط می‌توانست مدل‌های کوچک بسازد. توجه پلی شد بین «الگوریتم خوب» و «سخت‌افزار مدرن».

توجه چندسر (Multi-Head Attention)

یک کلمه می‌تواند به چند کلمه‌ی دیگر، با چند دلیل متفاوت، توجه کند. مثلاً در جمله‌ی «من کتاب آبی را که خریدم به مریم دادم»، کلمه‌ی «دادم» باید همزمان بداند چه چیز داده شد (کتاب)، به چه رنگی (آبی)، و به چه کسی (مریم). این سه نوع رابطه، سه «نگاه» متفاوت‌اند به همان جمله.

ترانسفورمرها این مسئله را با چیزی به اسم Multi-Head Attention حل کردند: به‌جای اینکه یک مجموعه Query/Key/Value داشته باشیم، چندین مجموعه‌ی موازی داریم—هر کدام به اصطلاح یک «سر» توجه. هر سر می‌تواند روی الگوی متفاوتی تمرکز کند: یکی روی روابط دستوری، یکی روی روابط معنایی، یکی روی فاصله‌ی فیزیکی کلمات. در نهایت خروجی همه‌ی سرها با هم ترکیب می‌شود.

جالب اینکه وقتی پژوهشگران داخل مدل‌های آموزش‌دیده را بررسی کردند، دیدند سرها واقعاً تخصص پیدا می‌کنند: بعضی روی فعل و فاعل تمرکز می‌کنند، بعضی روی نقل قول‌ها، بعضی روی موجودیت‌های نام‌برده. این تخصص یاد گرفته شده، نه برنامه‌ریزی شده.

از یک لایه تا یک شبکه

یک «لایه‌ی توجه» به‌تنهایی فقط یک قدم پردازشی است. ترانسفورمرها این لایه‌ها را روی هم تلنبار می‌کنند—GPT-2 دوازده لایه داشت، GPT-3 نود و شش لایه، مدل‌های امروزی صد لایه و بیشتر. هر لایه ورودی لایه‌ی قبل را می‌گیرد و یک «نمایش بهبودیافته» از همان متن می‌سازد.

چیزی که در پایین این تلنبار اتفاق می‌افتد، با چیزی که در بالا اتفاق می‌افتد متفاوت است. لایه‌های پایین معمولاً ویژگی‌های سطحی‌تر را می‌گیرند (نوع کلمه، نقش دستوری). لایه‌های بالاتر معنای انتزاعی‌تر را می‌سازند (احساس کلی جمله، نیت گوینده). در نزدیکی خروجی، مدل نمایشی دارد که برای پیش‌بینی کلمه‌ی بعدی کافی است.

توجه همه چیزی است که نیاز داری.عنوان مقاله‌ی Vaswani و همکاران، ۲۰۱۷

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

توجه با همه‌ی قدرتش، یک ضعف ساختاری دارد: محاسبه‌اش با مربع طول دنباله رشد می‌کند. اگر تعداد کلمات ورودی را دو برابر کنید، محاسبه‌ی توجه چهار برابر می‌شود. این یعنی برای متن‌های خیلی طولانی، توجه گران می‌شود. بخشی از تحقیقات داغ امروز هوش مصنوعی—روی چیزهایی به اسم Sparse Attention، Sliding Window، Mamba، State Space Models—دقیقاً برای دور زدن همین محدودیت است.

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

چرا این مهم است؟

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

دلیل عمیق‌تر این است: توجه نمونه‌ای از یک پدیده‌ی شگفت‌انگیز در علم محاسبات است—اینکه ایده‌های ساده وقتی در مقیاس بزرگ پیاده‌سازی شوند، رفتارهایی نشان می‌دهند که هیچ‌کس انتظارش را نداشت. هیچ‌کس در ۲۰۱۷ پیش‌بینی نمی‌کرد که همین مکانیزم در ۲۰۲۵ بتواند مقاله بنویسد، کد بزند، و در آزمون‌های ریاضیات سطح المپیاد رقابت کند. این درس برای ما باقی می‌ماند: درک بنیادهای ساده اغلب بیشتر از پیگیری آخرین مدل، به فهم آینده کمک می‌کند.

اگر شما از کسانی هستید که می‌خواهید این فهم بنیادی را در کنار استفاده‌ی روزانه از ابزارها رشد دهید، اپلیکیشن Infercia دقیقاً همین مسیر را برای شما هموار می‌کند: نه فقط استفاده، بلکه درک، نه فقط مصرف، بلکه ساختن. رشد از همین درک‌های کوچک شروع می‌شود.

برچسب‌ها

  • ترنسفورمر
  • Attention
  • مدل زبانی بزرگ
  • یادگیری عمیق
  • شبکه عصبی

این مقاله بخشی از «مجله‌ی اینفرسیا» است — جایی برای فهم عمیق‌تر علم و فناوری، نوشته شده برای خواننده‌ی کنجکاو.