الوحدات والتضمينات
من النصّ إلى معرّفات الرموز إلى المتجهات، ولماذا تكون طبقة التضمين جدول بحث لا ضرب مصفوفات.
نموذج اللغة يجري حساباً، والنص ليس حساباً. وكل ما في هذا الدرس عن التحويل، الذي يحدث في مرحلتين يسهل الخلط بينهما: يصير النص أعداداً صحيحة، ثم تصير الأعداد متجهات.
المرحلة الأولى: من النص إلى معرّفات الوحدات
يحتفظ المقطِّع بمفردات ثابتة ويقسم النص إلى قطع مسحوبة منها، لكلٍّ منها معرّف صحيح. والقطع وحدات فرعية لا كلمات.
والسبب هو التغطية. فالمفردات على مستوى الكلمة يجب أن تقرّر سلفاً أي الكلمات موجود؛ وأي شيء آخر يصل وقت الاستدلال مجهولاً بلا تمثيل إطلاقاً. أما المفردات الفرعية فتهجّي السلاسل غير المألوفة من شظايا مألوفة، فلا يكون شيء خارج المفردات أبداً. والكلمات النادرة أو المخترعة تكلّف ببساطة وحدات أكثر.
الوحدات ليست كلمات، والفرق يعضّ. فقد يقع حدّ الوحدة في منتصف كلمة، وعلامات الترقيم والمسافات السابقة تكون عادةً جزءاً من وحدة، وقد تُقطَّع الكلمة نفسها تقطيعاً مختلفاً بحسب ما يسبقها. وأي استدلال عن سلوك نموذج على مستوى الوحدة يجب أن يعمل بهذه الحبيبية.
المرحلة الثانية: من المعرّفات إلى المتجهات
المعرّف تسمية لا كمية - فالوحدة 5000 ليست «أكثر» من الوحدة 12. وإطعام المعرّفات لشبكة مباشرةً سيؤكّد ترتيباً غير موجود. بل يفهرس كل معرّف صفاً من مصفوفة تضمين:
حيث حجم المفردات و بُعد التضمين. فيصير المعرّف الصفَ . ويقولها راشكا مباشرة: طبقة التضمين في جوهرها عملية استرجاع تجلب صفوفاً من مصفوفة أوزان التضمين عبر معرّف وحدة، فيعيد المعرّف 3 الصفَ ذا الدليل 3.
وهذه الصفوف بارامترات مُتعلَّمة، تُضبط بالنزول التدرّجي نفسه الذي يدرّب كل شيء آخر.
كم عددها؟ عند شكل GPT-2 small، بمفردات من 50,257 وحدة و، يضمّ تضمين الوحدات وحده 38,597,376 منها. ويضع الشكل أدناه هذا الجدول بجانب بقية النموذج، أي 124,439,808 بارامتراً في المجموع، تشكّل التضمينات منها، الوحدات والمواضع معاً، 31.6٪. انتقل بين الإعدادات المسبقة حتى GPT-2 XL فتهبط حصّتها إلى 5.3٪، لأن الكتل تنمو مع بينما لا ينمو التضمين إلا مع .
تفاعلي: أين تسكن المعاملات
الانحيازات محسوبة، وتطبيعان لكل كتلة وتطبيع نهائي، وطبقة الخرج مربوطة بتضمين الرموز.
- عرض الرأس d_head
- 64
- الانتباه، كتلة واحدة
- 2,362,368
- الشبكة الأمامية، كتلة واحدة
- 4,722,432
- كتلة كاملة
- 7,087,872
- حصة التضمينات
- 31.6%
- مجموع المعاملات
- 124,439,808
يعمل كلٌّ من الرؤوس الـ12 في 64 بُعدًا، وتكلّف مجتمعةً ما يكلّفه رأس واحد بعرض 768 تمامًا: حرّك مؤشر الرؤوس فلا يتغيّر أي عدد، لأن التقسيم إلى رؤوس إعادةُ تشكيل للإسقاطات الأربعة نفسها. وتحمل الشبكة الأمامية 2.00 ضعف الانتباه المجاور لها في كل كتلة. أما التضمينات، وهي جدول بحث لا حساب، فتبلغ هنا 31.6% من المجموع؛ تنقّل بين الإعدادات المسبقة وراقب هذه الحصة تتراجع كلما طغت الكتل، التي تنمو مع مربع العرض. ولا تضيف طبقة الخرج شيئًا لأنها تعيد استعمال تضمين الرموز.
الاسترجاع والجداء الأحادي متطابقان
تستحق المكافأة أن تُرى مرة، لأنها تفسّر لماذا يكون الاسترجاع عمليةً مشروعة قابلة للاشتقاق لا اختصاراً.
اكتب المعرّف متجهَ صفّ أحادياً - كله أصفار إلا 1 في الموضع . عندئذ
لأن كل صف آخر يُضرب في صفر ويُطرَح جانباً.
يعمل في متصفحك. تُنزّل عملية التشغيل الأولى بيئة بايثون (~10 ميغابايت)، ثم تُخزّن مؤقتًا.
النتيجة نفسها، لكن الجداء يجري عملية ضرب للاحتفاظ بـ عدداً. والاسترجاع يتخطّى الهدر. وتظلّ التدرّجات تتدفّق: فالصف المنتقى وحده يتلقّى تدرّجاً.
والصورة أدناه تُجري الجداء بالطريق الطويل وتعدّ وهي تمضي، فعمليّات الضرب العشرون مقيسة لا منقولة. وكلّ صفّ إلّا واحدًا يُضرب في صفر، على مرأى منك، والجواب هو الصفّ الذي كان الاسترجاع سيُرجعه.
وزرّ المقياس هو موضع هبوط الحجّة. فعند شكل GPT-2 يكون الجداء نفسه 38,597,376 عمليّة ضرب لحفظ 768 عددًا، أي 50,257 ضعف العمل لجواب متطابق. والتدرّج لا يبلغ في الحالتين إلّا الصفّ المختار، فلا شيء يُفقَد بتخطّي الباقي.
والقراءة الأخيرة تخصّ القسم التالي. فخلط المتتالية لا يغيّر أيّ متّجه البتّة: فالصفوف تسافر مع رموزها، ولا يتغيّر إلّا أيّ موضع يحمل أيّها. وتلك الفجوة بعينها هي ما يجب أن يوفّره إشارة الموضع.
تفاعلي: صفٌّ واحد، وطريقان
كلّ صفّ آخر يُضرب في صفر ويُرمى.
- الصفّ المُرجَع
- [12, 13, 14, 15]
- عمليّات الضرب، في الجداء
- 20
- عمليّات الضرب، في البحث
- 0
- الأعداد المحفوظة
- 4
- المتّجهات التي غيّرها الخلط
- 0
يُرجع الطريقان الصفّ نفسه، ولهذا كان البحث عمليّة قابلة للاشتقاق مشروعة لا اختصارًا يلتفّ حولها. وإنّما يختلف الحساب: فالجداء يُجري 20 من عمليّات الضرب ليحفظ 4 من الأعداد، أي 5 ضعف العمل للجواب نفسه. اضغط شكل GPT-2 فيصير 38,597,376 عمليّة ضرب مقابل 768 عددًا. والبحث لا يُجري منها شيئًا، والتدرّج لا يبلغ في الحالتين إلّا الصفّ المختار. والقراءة الأخيرة هي الشقّ الآخر من الدرس: فخلط المتتالية يغيّر 0 من المتّجهات. فالصفوف تسافر مع رموزها، فترى الحسابات التالية المجموعة المتعدّدة نفسها من المتّجهات أيًّا كان الترتيب، وعلى الموضع أن يُضاف قصدًا لا أن يُرجى.
ما لا تحمله التضمينات
يقول التضمين ما هي الوحدة، ولا يقول شيئاً عن موضعها. فوروداً الوحدة نفسها في أي مكان من متتالية ينتجان متجهين متطابقين.
ويهمّ هذا لأن الانتباه غير المقنَّع، في الدرس التالي، متغايرٌ مكافئ للتبديل: فاخلط ترتيب الوحدات تختلط المخرجات معها بلا تغيير. وحده، لا تستطيع الآلية التمييز بين «القط جلس على البساط» والكلمات نفسها معادةَ الترتيب. فيجب حقن الموضع عن عمد - بإضافته إلى التضمينات - لا أن يكون ضمنياً في المتتالية، ونموذج لا هذه الإشارة عنده ولا قناع سببي سيقرأ كيساً من الوحدات.
تالياً: يُظهر الانتباه والانتباه الذاتي كيف تستخدم الوحدة هذه المتجهات لجمع السياق من بقية المتتالية.
المراجع والقراءات الإضافية
- Sebastian Raschka, Build a Large Language Model (From Scratch), Manning, 2025· مكتبة مراجع Kudos AI
تُذكر الأعمال المحمية بحقوق النشر للمرجعية فقط ولا تُستضاف هنا؛ يرجى الرجوع إلى الناشر للوصول إليها.
افتح المسار كاملًا
هذا الدرس الأول مجاني. سجّل لتخوض اختبار الإتقان وتكسب نقاط الخبرة وتفتح جميع الوحدات، مع مزيد من الأمثلة التفاعلية القابلة للتشغيل.