الـ LSTM والـ GRU
شبكات الـ RNN البسيطة بتنسى الماضي البعيد. والـ LSTM (الذاكرة طويلة-قصيرة الأمد) والـ GRU بيحلّوا مشكلة الـ vanishing gradient بـ gates بتتحكم في إيه يتحفظ وإيه يتكتب وإيه يطلع — فبيدّوا memory بتمتد مئات الخطوات.
طريق سريع للـ memory
الـ LSTM بتفصل بين الـ memory القصيرة المدى (الـ hidden state ht) والطويلة المدى (الـ cell state (حالة الخلية) ct). والـ cell state بتعدّي بأقل تعديل — طريق سريع للـ gradient بيتخطّى التلاشي.
التحكم في مرور المعلومات
- الـ forget gate ft — إيه اللي يتشال من الـ cell state القديمة
- الـ input gate it — قد إيه من الـ memory المرشّحة الجديدة يتكتب
- الـ output gate ot — إيه اللي يطلع من الـ cell state كـ ht
- كل الـ gates: output sigmoid في (0,1) — 0 = اقفل، 1 = عدّي كله
تحديث جمعي للخلية
تحديث الـ cell state جمعي: الـ memory القديمة متقاسة بالـ forget gate، وزائد الـ memory المرشّحة الجديدة متقاسة بالـ input gate. تحديث جمعي = طرق سريعة للـ gradient.
الـ constant error carousel
- gradient الـ loss بالنسبة لـ ct−1 بيتضرب في الـ forget gate ft بس
- الشبكة بتتعلّم ft ≈ 1 للمحتوى المحفوظ — والـ gradient بيعدّي من غير تغيير
- مفيش سلسلة tanh على الزمن على مسار الخلية
- بيسمح بالتعلّم على مئات الخطوات — مستحيل على الـ simple RNN
الـ GRU: gateين بس
الـ GRU (الوحدة التكرارية ذات البوابة) بتدمج الـ cell state والـ hidden state في vector واحد وبتبدّل التلات gates بتوع الـ LSTM بـ gateين: الـ reset gate rt والـ update gate zt.
الاختيار بينهم
- الـ GRU فيها parameters أقل — تدريب أسرع وبيانات أقل
- الـ LSTM ممكن تكسب في مهام الـ memory البعيدة جدًا
- أداء قريب تجريبيًا في أغلب معايير الـ NLP والـ time series
- الاتنين بيغلبوا الـ simple RNN جامد — والاختيار hyperparameter
سياق اللي فات واللي جاي
- مسار أمامي (شمال ← يمين) + مسار عكسي (يمين ← شمال)
- دمج الـ hidden stateين في كل مكان: ht = [&overrightarrow;ht ; &overleftarrow;ht]
- كل مكان بيشوف السياق كله — أساسي للـ named entity recognition والترجمة
- قيد: محتاجة الـ sequence كلها — مينفعش streaming فوري
رص الـ layers
- output الـ layer رقم l بيدخل input للـ layer رقم l+1 في نفس الـ time step
- 2–4 layers هو المعتاد — والتعميق أكتر نادرًا ما بيفيد
- الـ dropout بين الـ layers (مش على الوصلات التكرارية) للـ regularization
- الـ deep BiLSTM كانت أحسن أداء لحد ما الـ transformers ظهرت (2017)
اتعلّمت إيه
الـ LSTM بتحل مشكلة الـ vanishing gradient بـ cell state وتلات gates. والـ GRU بتبسّطها لـ gateين بأداء قريب. والشبكات اللي في الاتجاهين بتزوّد سياق اللي جاي. ارص 2–4 layers عشان representations أغنى. والـ transformers (الوحدة 9) خدت مكان الـ recurrence بالـ self-attention المتوازي.