الذكاء الاصطناعي

آلية Attention شرح كامل: كيف 'تنتبه' النماذج اللغوية؟

شرح تقني معمّق لآلية Attention، أصلها التاريخي، الرياضيات (Q, K, V)، أنواعها (Self, Cross, Masked, Multi-Head)، وتحسيناتها الحديثة (Flash, Grouped-Query).

فريق مقالات، قسم التقنية ٤ سبتمبر ٢٠٢٦ 5 دقيقة قراءة

Attention هي "روح" معمارية Transformer، والفكرة الأهمّ التي جعلت GPT و Claude و Gemini ممكنة. هذا شرح رياضي معمّق مع أمثلة توضيحية.

المشكلة الأصلية: الترجمة الآلية

عام 2014، فريق Bahdanau في مونتريال يعمل على ترجمة إنجليزي-فرنسي بالشبكات العصبية. المعمارية التقليدية (encoder-decoder RNN):

  1. Encoder يقرأ الجملة الإنجليزية كاملة ويُلخّصها في متّجه ثابت.
  2. Decoder يستخدم هذا المتّجه لتوليد الفرنسية.

المشكلة: متّجه واحد يُلخّص جملة طويلة = فقدان معلومات.

الحلّ: بدل متّجه واحد، اجعل الـ Decoder ينتبه لكل موقع في الجملة الأصلية عند توليد كل كلمة.

هذه أوّل ورقة Attention.

الفكرة الرياضية

Attention تُجيب على السؤال: "ما المزيج المرجّح من الـ Values يُناسبني الآن؟"

الثلاثة مكوّنات: Q, K, V

  • Query (Q): "ما الذي أبحث عنه؟"
  • Key (K): "ما الذي أُمثّله؟ ابحث فيّ."
  • Value (V): "إذا انتُبِه لي، ما القيمة التي أُعطيها؟"

تشبيه مكتبة:

  • تدخل مكتبة، تسأل عن "كتب الفلسفة". هذا Q.
  • كل كتاب له عنوان (K).
  • المكتبي يُقارن Q بكل K.
  • الكتب ذات العناوين المشابهة تحصل على أوزان أعلى.
  • محتوى الكتاب هو V، تستعير مزيجاً منها بأوزانها.

المعادلة الأساسية

Attention(Q, K, V) = softmax(QK^T / √d_k) · V

بالخطوات:

الخطوة 1: Q · K^T

  • ضرب مصفوفة Q بترانسبوز K.
  • النتيجة: مصفوفة "درجات التشابه" (scores) لكل زوج (query, key).

الخطوة 2: القسمة على √d_k

  • d_k = بُعد Key.
  • تُطبَّع الدرجات لمنع softmax من أن يصبح متطرّفاً.

الخطوة 3: softmax

  • تُحوّل الدرجات إلى أوزان مجموعها 1.
  • الوزن العالي = اهتمام أكثر.

الخطوة 4: ضرب في V

  • كل Value يُضرب بوزنه.
  • المجموع = المخرج النهائي.

مثال عددي مبسّط

جملة: "أحمد يأكل تفاحة"

tokens: [أحمد, يأكل, تفاحة]

نُشفّر كل token في متّجه (لنقل بعد 4):

  • أحمد: [1, 0, 1, 0]
  • يأكل: [0, 1, 0, 1]
  • تفاحة: [1, 1, 0, 0]

نحسب Q, K, V (بمصفوفات أوزان مُتعلَّمة، لنفترض عبارة إسقاط بسيطة).

عند حساب Self-Attention لـ"يأكل":

  • Q("يأكل") · K("أحمد") = مثلاً 0.8
  • Q("يأكل") · K("يأكل") = 0.5
  • Q("يأكل") · K("تفاحة") = 0.9

بعد softmax:

  • أحمد: 0.35
  • يأكل: 0.25
  • تفاحة: 0.40

المخرج = 0.35·V(أحمد) + 0.25·V(يأكل) + 0.40·V(تفاحة)

"يأكل" ينتبه لـ"تفاحة" أكثر (المفعول به) وأحمد (الفاعل).

أنواع Attention

1. Self-Attention

Q, K, V من نفس التسلسل.

  • كل token في الجملة ينتبه لكل tokens الجملة (بما فيها نفسه).
  • يُستخدم في Encoder و Decoder.

2. Cross-Attention

Q من تسلسل، K و V من تسلسل آخر.

  • في الترجمة: Q من الجملة الفرنسية الجاري توليدها، K/V من الإنجليزية.
  • في نماذج التوليد الشرطي (text-to-image): Q من الصورة، K/V من النصّ الوصفي.

3. Masked Self-Attention (Causal)

Self-Attention لكن مع قناع يمنع كل token من رؤية الـ tokens بعده.

  • ضروري في نماذج التوليد (GPT, Claude, Llama).
  • عند توقّع الكلمة رقم 5، لا يجوز رؤية الكلمات 6, 7, 8...
  • تقنياً: نضبط scores للمواقع المستقبلية إلى -∞ قبل softmax.

4. Multi-Head Attention

بدل حساب Attention واحد، نحسب h رأساً بالتوازي (h=8, 12, 16,...).

  • كل رأس له مصفوفات Q, K, V الخاصّة.
  • كل رأس يتعلّم نمطاً مختلفاً.
  • نُدمج المخارج (concat) ثمّ نُطبّق إسقاطاً خطّياً.

لماذا؟ رأس واحد قد يركّز على النحو، آخر على الدلالة، ثالث على المسافة، إلخ.

أنماط تتعلّمها Attention

بحوث BERTology كشفت أن الرؤوس تتعلّم أنماطاً مفهومة:

  • رؤوس نحوية: تربط الفاعل بالفعل، الصفة بالموصوف.
  • رؤوس ضمائر: تربط الضمير بمرجعه.
  • رؤوس محلّية: تنتبه للكلمة السابقة/التالية.
  • رؤوس نقطة: تنتبه لعلامات الترقيم.
  • رؤوس CLS/SEP: تنتبه لـ tokens خاصّة (في BERT).

Interpretability، دراسة هذه الأنماط لفهم كيف "يُفكّر" النموذج.

المشاكل والتحسينات

مشكلة التعقيد التربيعي O(n²)

عملية Attention تُنتج مصفوفة n×n. لنصّ 100k token = 10 مليار قيمة = عشرات GB ذاكرة.

التحسينات

1. Flash Attention (2022)

Tri Dao من Stanford. الفكرة:

  • ذاكرة GPU لها مستويات: HBM (بطيء لكن كبير) و SRAM (سريع لكن صغير).
  • Attention التقليدي يقرأ/يكتب من HBM كثيراً، البطيء ليس الحوسبة بل النقل.
  • Flash Attention يُعيد ترتيب الحسابات لتقليل النقل.
  • النتيجة: 2-4× أسرع، بدون تغيير النتائج الرياضية.

تُستخدم اليوم في كل نموذج تدريب/استدلال حديث تقريباً.

2. Multi-Query Attention (MQA)

كل رؤوس Q، لكن K و V مشتركان.

  • تُقلّل الذاكرة أثناء الاستدلال بشكل كبير.
  • خسارة جودة قد تكون ملحوظة.

3. Grouped-Query Attention (GQA)

توسّط بين Multi-Head و MQA.

  • عدّة مجموعات من Q تشترك في K/V.
  • جودة قريبة من Multi-Head، ذاكرة قريبة من MQA.
  • استخدمها Llama 2/3.

4. Sliding Window Attention

كل token ينتبه فقط لـW tokens من حوله (مثلاً W=4096).

  • تعقيد O(n·W) بدل O(n²).
  • تُضحّي بالانتباه للسياق البعيد.
  • Mistral 7B استخدمها.

5. Ring Attention

توزيع Attention عبر أجهزة متعدّدة.

  • يُتيح تسلسلات طويلة جداً (ملايين tokens).
  • Gemini 1.5 يستخدم شيئاً مشابهاً.

Linear Attention

محاولات جعل Attention خطّي O(n) بدل تربيعي:

  • Performer (2020).
  • Linformer (2020).
  • Nyströmformer (2021).

النتيجة العملية: أداء أقلّ قليلاً من Attention الكامل، ولم تحلّ محلّه تجارياً حتى الآن.

Attention خارج اللغة

الرؤية الحاسوبية (Vision Transformer)

  • تُقسّم الصورة إلى مربّعات صغيرة (patches).
  • كل patch = token.
  • Self-Attention بين patches.
  • يُنافس أو يتفوّق على CNN في تصنيف الصور.

البروتينات (AlphaFold)

  • Attention بين أحماض البروتين الأمينية لتوقّع بنيته ثلاثية الأبعاد.

الفيديو

  • Attention عبر الإطارات الزمنية.

الصوت (Whisper)

  • Attention بين شرائح صوتية زمنية.

الحدود والمستقبل

الحدود الحالية:

  • Attention لا يزال باهظ الذاكرة للنصوص الطويلة.
  • KV Cache ينمو خطّياً، استدلال طويل = ذاكرة كثيرة.

اتّجاهات بحثية:

  • Retentive Networks (RetNet) من Microsoft.
  • Mamba / SSM، بدون Attention.
  • Hybrid، Attention لبعض الطبقات، Mamba لأخرى.

للاستزادة


اقرأ أيضاً:

هل أفادك هذا المقال؟

كن أول من يقيّم

الأسئلة الشائعة

طريقة تحسب 'كم يهتمّ' كل عنصر في مدخل بكل عنصر آخر. عند فهم جملة، الكلمة 'هو' يجب أن تنتبه للفاعل. Attention تُعلّم النموذج هذه العلاقات أوتوماتيكياً من البيانات.
الفكرة الأولى في ورقة Bahdanau et al. 2014 للترجمة الآلية. تطويرها في Luong et al. 2015. ثمّ ورقة 'Attention Is All You Need' 2017 جعلتها المكوّن الأساسي بدل مجرد إضافة.
Self-Attention: كل token في تسلسل واحد ينتبه لبقية الـ tokens في نفس التسلسل. Cross-Attention: tokens في تسلسل ينتبهون لـ tokens في تسلسل آخر (مثل مترجم ينظر لأصل الجملة وهو يكتب الترجمة).
لأننا نحسب علاقة كل token بكل token آخر. لنصّ فيه n token، نحتاج n×n عملية. نصّ 10k token = 100 مليون عملية. نصّ 100k token = 10 مليار، يستنزف ذاكرة GPU بسرعة.
خوارزمية 2022 من Stanford (Tri Dao) تُعيد ترتيب حساب Attention لتقليل نقل البيانات بين ذاكرة GPU الرئيسية والذاكرة السريعة (SRAM). تُسرّع Transformer 2-4× دون تغيير النتائج.
تحسين حديث: بدل أن يكون لكل رأس Attention مجموعته من Keys/Values، يتشاركون. Llama 2 استخدمها. تُقلّل استخدام الذاكرة أثناء الاستدلال بشكل كبير مع الحفاظ على جودة قريبة من Multi-Head الكامل.
Mamba و State Space Models تسعى للحلول بدون Attention. Linear Attention (Performer, Linformer) تُحاول جعله O(n) بدل O(n²). لكن Attention الكلاسيكي لا يزال مهيمناً في الإنتاج التجاري.

مقالات ذات صلة

نشرة مقالات الأسبوعية

اشترك تصلك أحدث المقالات + مختارات نادرة كل أحد. بلا سبام، ألغي الاشتراك بضغطة.

لا نشارك بريدك مع أي طرف ثالث. راجع سياسة الخصوصية.

التعليقات

بريدك لن يظهر ولن يُرسل إليه شيء — يُستخدم فقط لمنع الإزعاج.

لا تعليقات بعد — كن أول من يكتب.