من أهم المسائل في معالجة اللغة الطبيعية (Natural Language Processing - NLP) الترجمة الآلية، وهي المهمة الأساسية اللي تشتغل عليها أدوات مثل Google Translate. بهالقسم بنركّز على الترجمة الآلية، أو بصورة أعم على أي مهمة تسلسل إلى تسلسل، واللي يسمّونها بعد تحويل الجملة.
مع RNNs، ننفّذ التسلسل إلى التسلسل بشبكتين متكررتين: تضغط الأولى، وهي المشفّر، تسلسل الإدخال إلى حالة مخفية؛ وتفرد الثانية، وهي مفكّ الترميز، هالحالة إلى ناتج مترجم. لكن بهالطريقة مشكلتان:
- صعب على الحالة الأخيرة في شبكة المشفّر إنها تتذكر بداية الجملة، ولذلك تنخفض جودة النموذج مع الجمل الطويلة.
- كل كلمات التسلسل تأخذ التأثير نفسه على النتيجة. لكن بالواقع، بعض كلمات الإدخال غالبًا تأثّر على المخرجات المتسلسلة أكثر من غيرها.
تعطينا آليات الانتباه (Attention Mechanisms) طريقة نوزّن بها أثر سياق كل متجه إدخال على كل تنبؤ تطلعه RNN. ننفّذها بإنشاء وصلات مختصرة بين الحالات الوسيطة في RNN المدخلة وRNN المخرجة. وبكذا، لما نولّد رمز المخرج yt، نحسب حساب كل حالات الإدخال المخفية hi، بمعاملات أوزان مختلفة αt,i.
وصف الشكل: صورة تبيّن نموذج مشفّر/مفكّ ترميز معه طبقة انتباه إضافية
نموذج المشفّر ومفكّ الترميز مع آلية الانتباه الإضافية في Bahdanau et al., 2015، منقول عن هالتدوينة
تمثّل مصفوفة الانتباه {αi,j} مقدار مساهمة كلمات معيّنة من الإدخال في توليد كلمة محددة في تسلسل المخرج. وتحت مثال لهالمصفوفة:
وصف الشكل: صورة تبيّن محاذاة نموذج RNNsearch-50، مأخوذة من Bahdanau - arviz.org
الشكل من Bahdanau et al., 2015 (Fig.3)
آليات الانتباه صارت أساسًا مهمًا لأنظمة NLP الحديثة، مع إن أفضل بنية تعتمد على المهمة والبيانات وقيود التشغيل. لكن إضافة الانتباه ترفع عدد معاملات النموذج كثير، وهذا سبّب مشاكل في توسيع RNNs. ومن أهم القيود إن طبيعة RNNs المتكررة تصعّب جمع أمثلة التدريب في دفعات وتنفيذها بالتوازي. لازم تعالج RNN كل عنصر من التسلسل بالترتيب، ولذلك مب سهل نوازيها.

أدى استخدام آليات الانتباه مع هالقيد إلى ظهور نماذج المحوّل (Transformer). ومنها عائلات المشفّرات مثل BERT، ونماذج مفكّ الترميز التوليدية، وبنى المشفّر ومفكّ الترميز.
من الأفكار الأساسية وراء المحوّلات إننا نتجاوز الطبيعة المتسلسلة لـ RNNs ونبني نموذجًا يقدر يتدرّب بالتوازي. ونحقق هالشي بفكرتين:
- ترميز الموضع
- استخدام آلية الانتباه الذاتي لالتقاط الأنماط بدل RNNs أو CNNs، ولذلك اسم الورقة اللي قدّمت المحوّلات هو Attention is all you need
ترميز/تضمين الموضع
فكرة ترميز الموضع كذا:
- مع RNNs، يمثّل عدد الخطوات الموضع النسبي للرموز، فما نحتاج نمثّله صراحةً.
- لكن إذا انتقلنا إلى الانتباه، نحتاج نعرف المواضع النسبية للرموز داخل التسلسل.
- عشان نحصل على ترميز الموضع، نضيف إلى تسلسل الرموز تسلسلًا لمواضعها؛ يعني سلسلة الأرقام 0,1، ...
- بعدها ندمج موضع الرمز مع متجه تضمينه. ولتحويل الموضع، وهو عدد صحيح، إلى متجه نقدر نستخدم أكثر من طريقة:
- تضمين قابل للتدريب، ويشبه تضمين الرمز. وهذا هو الأسلوب اللي بنستخدمه هنا. نطبّق طبقات التضمين على الرموز وعلى مواضعها، فتطلع متجهات تضمين بالأبعاد نفسها، ثم نجمعها.
- دالة ثابتة لترميز الموضع، مثل المقترح في الورقة الأصلية.
وصف الشكل: حُذف الأصل لأن حقوق إعادة استخدامه غير موثّقة.
النتيجة من تضمين الموضع تمثّل الرمز الأصلي وموضعه داخل التسلسل مع بعض.
الانتباه الذاتي متعدد الرؤوس
بعدها نحتاج نلتقط الأنماط داخل التسلسل. تستخدم المحوّلات الانتباه الذاتي؛ وهو انتباه نطبّقه على التسلسل نفسه بوصفه مدخلًا ومخرجًا. يخلّينا الانتباه الذاتي نحسب السياق داخل الجملة، ونشوف وش الكلمات المرتبطة ببعض. مثلًا، نقدر نعرف الكلمات اللي ترجع لها إحالة مثل it، ونراعي السياق بعد:
وصف الشكل: حُذف الأصل لأن حقوق إعادة استخدامه غير موثّقة.
الصورة من مدونة Google
في المحوّلات نستخدم الانتباه متعدد الرؤوس عشان تلتقط الشبكة أنواعًا مختلفة من العلاقات؛ مثل علاقات الكلمات طويلة المدى وقصيرة المدى، والإحالة المرجعية وغيرها.
في دفتر TensorFlow تفاصيل أكثر عن تنفيذ طبقات المحوّل.
انتباه المشفّر ومفكّ الترميز
نستخدم الانتباه في المحوّلات بمكانين:
- لالتقاط الأنماط داخل نص الإدخال باستخدام الانتباه الذاتي.
- لترجمة التسلسل؛ وهذي هي طبقة الانتباه بين المشفّر ومفكّ الترميز.
انتباه المشفّر ومفكّ الترميز قريب مرة من آلية الانتباه المستخدمة مع RNNs، مثل ما شرحنا ببداية القسم. والرسم المتحرك هذا يوضّح دوره.
وصف الشكل: رسم متحرك يبيّن كيف تتم عمليات التقييم في نماذج المحوّلات.
بما إن كل موضع في الإدخال يرتبط بكل موضع في المخرج بشكل مستقل، تقدر المحوّلات تنفّذ العمل بالتوازي أفضل من RNNs. وهالشي يسمح بنماذج لغة أكبر وأقدر على التعبير. ويقدر كل رأس انتباه يتعلّم علاقة مختلفة بين الكلمات، وهذا يحسّن مهام معالجة اللغة الطبيعية.
BERT
BERT (Bidirectional Encoder Representations from Transformers) شبكة محوّلات كبيرة متعددة الطبقات؛ فيها 12 طبقة في BERT-base و 24 طبقة في BERT-large. ندرّب النموذج مسبقًا على متن كبير من البيانات النصية (WikiPedia + الكتب) بهدف ذاتي الإشراف يعتمد على توقّع الكلمات المحجوبة في الجملة. وخلال التدريب المسبق يكتسب النموذج فهمًا لغويًا واسعًا، وبعدها نستفيد منه مع مجموعات بيانات ثانية بالضبط الدقيق. هالعملية اسمها التعلم بالنقل.
وصف الشكل: صورة من https://jalammar.github.io/illustrated-bert/
مصدر الصورة
كمّلوا التعلّم في الدفترين هذولا:
الخلاصة
تعلّمتوا بهالدرس عن المحوّلات وآليات الانتباه، ومنها بُنى المشفّر مثل BERT، وبُنى مفكّ الترميز التوليدية، وبُنى المشفّر ومفكّ الترميز. توفر مكتبة Transformers وHugging Face Hub نقاط تحقق ومسارات لمهام كثيرة، لكن دعم الإطار والترخيص والمدخلات يختلف من نموذج للثاني؛ راجعوا بطاقة النموذج والتوثيق الحالي قبل التدريب أو الاستدلال.
🚀 التحدي
المراجعة والتعلّم الذاتي