الترتيب مهم
معظم النماذج التي بنيناها حتى الآن تعامل كل مدخل باعتباره متجهًا مستقلًا بحجم ثابت. نُغذّي صورةً إلى شبكة تلافيفية فتُعيد تنبؤًا — دون أي معرفة بالصور السابقة. لكن ثمة فئة واسعة ومهمة من البيانات ذات طابع تسلسلي بطبيعتها: معنى الكلمة يعتمد على ما سبقها، وقيمة قراءة المستشعر تعتمد على القراءات السابقة، والنغمة الموسيقية لا تُفهم إلا في سياق النغمات التي جاءت قبلها.
البيانات التسلسلية تشمل اللغة الطبيعية، والسلاسل الزمنية (أسعار الأسهم، إشارات EEG، الطقس)، والإشارات الصوتية، والفيديو (إطارات مرتّبة زمنيًا)، وتسلسلات الحمض النووي، وسجلات الأحداث. السمة المحوّرية هي أن الموضع مهم — خلط العناصر يُفسد المعنى. على النماذج التي تعالج التسلسلات أن تلتقط الارتباطات التي تمتد على مسافات تعسفية عبر الزمن أو الموضع.
لماذا تعجز الشبكات التلقائية عن معالجة التسلسلات؟
تأخذ الشبكة الكاملة الاتصال (Fully Connected) متجه إدخال بحجم ثابت وتُنتج مخرجًا بحجم ثابت. لمعالجة تسلسل بطول T، أبسط مقاربة هي دمج جميع مدخلات T في متجه واحد كبير وتمريره عبر شبكة تلقائية. هذا يفشل لسببين: أولًا، التسلسلات متفاوتة الطول — الجمل لا تحتوي على نفس عدد الكلمات، والسلاسل الزمنية لها مدد مختلفة. المدخل ذو الحجم الثابت لا يستوعب تسلسلات متغيرة الطول دون اقتطاع مُفقِد للمعلومات أو حشو.
ثانيًا، والأهم جوهريًا، لا تستطيع الشبكة التلقائية التي ترى المدخل المتسلسل دفعةً واحدة مشاركة المعاملات عبر الخطوات الزمنية. الأوزان المُطبَّقة على الموضع 1 مستقلة تمامًا عن تلك المُطبَّقة على الموضع 5. هذا يعني أن الشبكة يجب أن تتعلم من جديد نفس المفهوم (مثل "هذا النمط اللغوي يدل على النفي") في كل موضع على حدة، مما يُبدّد القدرة ويُخفق في التعميم على مواضع لم تُرَ أثناء التدريب. مشاركة المعاملات عبر الزمن هي الفكرة المحورية وراء الشبكات التكرارية.
حلٌّ بديل شائع هو استخدام نافذة منزلقة: أخذ آخر k خطوات زمنية كمدخل لشبكة تلقائية. هذا يتعامل مع التسلسلات المتغيرة الطول (بتحريك النافذة) ويفرض شكلًا من مشاركة المعاملات (نفس الشبكة تُعالج كل نافذة). لكنه يُثبّت طول السياق k — أي ارتباط يمتد لأكثر من k خطوة يصبح غير مرئي. فهم اللغة كثيرًا ما يستلزم سياقًا يعود مئات المواضع. كما تُهمل النوافذ المعلومات المتعلقة بالموضع الدقيق لكل خطوة بالنسبة لبداية التسلسل.
الوصلات التكرارية: حمل حالة مخفية
الحل هو منح الشبكة حالة مخفية ht تعمل كذاكرة. في كل خطوة زمنية t، تقرأ الشبكة المدخل الحالي xt، تجمعه مع الحالة المخفية السابقة ht−1، وتُنتج حالة مخفية جديدة ht. هذه الحالة المخفية ملخّص مضغوط لكل ما رأته الشبكة من الموضع 1 حتى الموضع t. لأن نفس مصفوفات الأوزان تُستخدم في كل خطوة زمنية، تُشارك الشبكة المعاملات عبر جميع المواضع تلقائيًا.
المخرج في كل خطوة يُحسب من الحالة المخفية: yt = Wy ht + by. بحسب المهمة، قد تُنتج الشبكة مخرجًا في كل خطوة (الترجمة التسلسلية)، أو عند الخطوة الأخيرة فحسب (تصنيف النص)، أو في خطوات مختارة (التعرف على الكيانات المسماة).
بصريًا، الشبكة التكرارية شبكةٌ ذات حلقة: تغذّي الحالة المخفية نفسَها في الشبكة عند الخطوة التالية. عندما نُفكّك هذه الحلقة — نرسم كل خطوة زمنية كنسخة منفصلة من الشبكة مترابطة في سلسلة — نرى شبكة عميقة جدًا: عمق في البُعد الزمني بدلًا من عمق الطبقات. التفكيك يوضّح كيف يجب أن تتدفق التدرجات للخلف عبر جميع خطوات T لتدريب الشبكة على الارتباطات الطويلة المدى.
التكشّف عبر الزمن
التكشّف يُعيد كتابة التكرار كرسم بياني حسابي لادوري. كل خطوة زمنية t تحصل على نسختها الخاصة من الحالة المخفية ht، والمدخل xt، وتُنتج مخرجها yt. مصفوفات الأوزان Wh و Wx و Wy مُشتركة (مربوطة) عبر جميع النسخ — وهذا ما يُطبّق مشاركة المعاملات.
بمجرد التكشّف، ينطبق الانتشار الخلفي المعياري. الخسارة الكلية هي مجموع خسارات كل خطوة: L = Σt Lt. تتراكم تدرجات L بالنسبة للأوزان المشتركة من كل خطوة زمنية. يُسمى هذا الخوارزم الانتشار الخلفي عبر الزمن (BPTT).
من الناحية العملية، BPTT الكامل عبر تسلسلات طويلة جدًا مكلف حسابيًا وغير مستقر عدديًا. BPTT المبتور يحد من انتشار التدرج إلى عدد ثابت من الخطوات للخلف (مثلًا 20–100 خطوة)، بتقسيم التسلسل الطويل إلى أجزاء. لا تتجاوز التدرجات حدود الأجزاء، مما يُقيّد القدرة على تعلم الارتباطات بعيدة المدى جدًا لكنه يجعل التدريب قابلًا للإجراء.
مشكلة التدرج المتلاشي
التدرج المتدفق للخلف عبر k خطوة زمنية ينطوي على جداء k من مصفوفات جاكوبي مرتبطة بمصفوفة الأوزان التكرارية Wh. عندما يكون نصف القطر الطيفي لـ Wh (أكبر قيمة فردية لها) أقل من 1، يتقلص هذا الجداء أسيًا مع k. عندما يكون أكبر من 1، ينفجر الجداء أسيًا. كلا السيناريوين يُدمّر تعلّم الارتباطات بعيدة المدى.
التدرجات المتلاشية تعني أن إشارة التدرج من خسارة في الخطوة T تكاد لا تصل إلى الخطوة T−50. الشبكة تنسى الماضي البعيد فعليًا — لا تستطيع تعلّم أن كلمة في الموضع 1 من الجملة تُحدّد معنى العبارة في الموضع 50. هذه ليست مسألة دقة عددية؛ بل مشكلة بنيوية جوهرية في معمارية الشبكة التكرارية البسيطة.
حين يكون نصف القطر الطيفي لمصفوفة الأوزان التكرارية أكبر من 1، تنمو التدرجات أسيًا مع طول التسلسل، مما يُسبب تحديثات هائلة للمعاملات — مشكلة "انفجار التدرجات". على عكس التدرجات المتلاشية، هذه يمكن اكتشافها (خسائر NaN، قيم معاملات تتباعد إلى اللانهاية) ولها حل بسيط: قطع التدرج يُحدّد معيار التدرج قبل خطوة التحديث. إذا تجاوز ‖∇L‖ عتبة θ، نُعيد قياسه: ∇L ← θ · ∇L / ‖∇L‖. قطع التدرج شبه شامل في تدريب الشبكات التكرارية.
شُخّصت مشكلة التدرج المتلاشي من قِبل Bengio et al. (1994) و Hochreiter (1991)، وقد دفعت إلى تطوير شبكات الذاكرة طويلة-قصيرة الأمد (LSTM) التي تحلّها بآلية بوابات. قبل هيمنة LSTM، كان الممارسون يتحايلون على المشكلة بتهيئة الأوزان الحذرة (مصفوفات متعامدة أو هوية لـ Wh)، وقطع التدرج، وأطوال تسلسلات قصيرة جدًا. هذه تظل حيلًا مفيدة حتى مع المعماريات الحديثة.
ما الذي تستطيع الشبكات التكرارية البسيطة نمذجته؟
رغم قيد التدرج المتلاشي، تستطيع الشبكات التكرارية البسيطة تعلّم الارتباطات قصيرة المدى بكفاءة. كثيرٌ من المهام العملية لا تستلزم ذاكرة تمتد مئات الخطوات: تصنيف مشاعر جملة قصيرة، والتنبؤ بالإطار التالي في الفيديو، والتنبؤ بالسلاسل الزمنية على المدى القصير. في هذه المهام، تظل الشبكة التكرارية الفانيلا جيدة الضبط منافسةً.
تُطوّر الحالة المخفية لشبكة تكرارية مدرّبة بنية قابلة للتفسير. في نماذج اللغة على مستوى الأحرف، تتعلم وحدات خفية فردية تتبّع سمات مثل "الآن داخل اقتباس"، أو "عمق المسافة البادئة في الشيفرة"، أو "عدد الأقواس المفتوحة". هذه الذاكرة الناشئة — دون برمجة صريحة — تكشف أن قاعدة التحديث التكرارية البسيطة قادرة على استخلاص بنية تسلسلية غنية بشكل مثير للدهشة من البيانات.
المعمارية الموصوفة هنا — حيث تُغذّي الحالة المخفية الخطوة المخفية التالية — تُسمى شبكة إيلمان (Elman, 1990). المتغير المرتبط بها، شبكة جوردان، يُغذّي المخرج yt بدلًا من ht. شبكات إيلمان أكثر شيوعًا بكثير في الممارسة الحديثة لأن الحالة المخفية تمثيل أغنى من المخرج، ولأنها أسهل في التدريب للمهام ذات فضاء المخرجات الصغير (مثل التصنيف الثنائي عند الخطوة الأخيرة).
معماريات التسلسل إلى التسلسل
مهام مختلفة تستلزم طوبولوجيات مدخل–مخرج مختلفة. الشبكة التكرارية من واحد إلى كثير تأخذ مدخلًا متجهيًا واحدًا (مثل صورة) وتُنتج تسلسل مخرجات (مثل وصف) — مُستخدَمة في وصف الصور. من كثير إلى واحد تقرأ تسلسلًا وتُنتج مخرجًا واحدًا (مثل تصنيف المشاعر) — الحالة المخفية الأخيرة تُرمّز التسلسل كله. من كثير إلى كثير تُنتج مخرجًا في كل خطوة — مُستخدَمة في نمذجة اللغة والإشارة على المستوى الجزئي والترجمة الفورية.
للمهام التي يختلف فيها طولا المدخل والمخرج (الترجمة، التلخيص)، تُعدّ بنية المشفّر–فك التشفير معيارًا. تقرأ الشبكة التكرارية المشفّرة التسلسل الكامل وتضغطه في متجه سياق بحجم ثابت (الحالة المخفية الأخيرة). ثم يُولّد فك التشفير التسلسل المخرج مشروطًا بهذا المتجه. نقطة الاختناق هي ضرورة ضغط كامل معنى المدخل في متجه واحد — قيد يحلّه آلية الانتباه (المُقدَّمة في الدرس 9.1) بالسماح لفك التشفير باستعلام جميع الحالات المخفية للمشفّر مباشرةً.
- البيانات التسلسلية (النص، السلاسل الزمنية، الصوت، الفيديو) تستلزم نماذج تحترم الترتيب وتلتقط الارتباطات بعيدة المدى. تفشل الشبكات التلقائية لأنها تتطلب مدخلات ذات حجم ثابت ولا تستطيع مشاركة المعاملات عبر الخطوات الزمنية.
- تحتفظ الشبكات التكرارية بحالة مخفية ht تُحدَّث في كل خطوة: ht = tanh(Whht−1 + Wxxt + b). نفس مصفوفات الأوزان مُشتركة عبر جميع الخطوات الزمنية لالتقاط نفس الأنماط بصرف النظر عن الموضع.
- تكشّف الشبكة التكرارية يحوّل التكرار إلى رسم بياني لادوري مما يُمكّن الانتشار الخلفي المعياري. BPTT يتراكم التدرجات من جميع الخطوات؛ BPTT المبتور يحد هذا إلى عدد ثابت من الخطوات للكفاءة.
- التدرجات المتلاشية تنشأ لأن جداءات التدرج عبر تسلسلات طويلة تتقلص أسيًا عندما يكون نصف القطر الطيفي لـ Wh < 1. التدرجات المنفجرة (نصف القطر الطيفي > 1) تُعالَج بقطع التدرج. التدرجات المتلاشية تستدعي معماريات LSTM وGRU المُغطاة في الدرس التالي.
- مهام مختلفة تستخدم طوبولوجيات تكرارية مختلفة: من واحد إلى كثير (وصف الصور)، من كثير إلى واحد (التصنيف)، من كثير إلى كثير (التعليم والنمذجة اللغوية). مهام التسلسل إلى التسلسل تستخدم بنية مشفّر–فك تشفير.