الشبكات التكرارية ونماذج التسلسل1997متقدم4 دقيقة قراءة

الذاكرة الطويلة قصيرة المدى

Long Short-Term Memory

Hochreiter, S. · Schmidhuber, J. — Neural Computation

المشكلة

تعاني الشبكات التكرارية التقليدية من مشكلة جوهرية أثناء التدريب: إشارة الخطأ تمر بسلسلة عمليات ضرب متتالية خلال الانتشار العكسي عبر الزمن. إذا كان كل عامل ضرب أصغر من 1 ولو بقليل، تتلاشى الإشارة أسّياً حتى تصل إلى الصفر. وإذا كان أكبر من 1، تنفجر. في الحالتين تعجز الشبكة عن ربط أحداث متباعدة زمنياً.

الإسهام

الفكرة المحورية هي دوّار الخطأ الثابت (CEC): خلية ذاكرة تُحدَّث بالجمع لا بالضرب، فتبقى مشتقة التدرج الداخلية تساوي 1.0 تماماً أثناء الانتشار العكسي. تتعلم بوابتا الإدخال والإخراج — عبر نزول التدرج — متى تُدخل معلومات جديدة ومتى تكشفها. في عام 2000 أُضيفت فاكتملت البنية الحديثة المعروفة اليوم.

الأثر

هيمنت LSTM على معالجة التسلسلات لعقدين كاملين، وكانت المحرك وراء أنظمة التعرف على الكلام والترجمة الآلية وتوليد الكلام تجارياً — من النسخ الأولى لـ Siri وGoogle Translate وAlexa — قبل ظهور المحوِّلات. نقطة ضعفها الجوهرية — المعالجة التسلسلية خطوة بخطوة — هي بالتحديد ما دفع الباحثين نحو آلية الانتباه ثم .

تخيّل أن تحاول الاحتفاظ بمعلومة مهمة أثناء معالجة نص طويل — الأمر يشبه السير في عاصفة رملية وأنت تحمل حفنة من الرمل الناعم: مع كل خطوة يتسرب جزء من بين أصابعك، وبعد خمسين خطوة لا يتبقى شيء في يدك. أما LSTM فتتعامل مع الأمر بطريقة مختلفة تماماً: تضع تلك المعلومة داخل حقيبة محكمة الإغلاق بقفل ذكي. تبقى الحقيبة مغلقة بإحكام. إذا ظهرت معلومة جوهرية في الخطوة الخامسة، تفتح بوابة الإدخال الحقيبة وتُدخل المعلومة ثم تُغلقها فوراً. تسافر المعلومة بأمان عبر مئة خطوة من البيانات غير المهمة، إلى أن تقرر بوابة الإخراج أن الوقت قد حان لفتح الحقيبة واستخدام ما بداخلها.

المشكلة: تدرّجات تتلاشى

في الشبكات التكرارية التقليدية، تُحسب عند الخطوة t كالتالي:

ht=tanh(Wht1+xt)h_t = \tanh(W h_{t-1} + x_t)
خطوة RNN التقليدية

عند حساب بالانتشار العكسي من الخطوة T إلى خطوة مبكرة t، تفرض علينا ضرب سلسلة من مصفوفات جاكوبي:

ETht    k=t+1TWdiag(1tanh2())\frac{\partial E_T}{\partial h_t} \;\propto\; \prod_{k=t+1}^{T} W^\top \cdot \operatorname{diag}(1 - \tanh^2(\cdot))
لماذا تتلاشى التدرجات في RNN التقليدية

إذا كانت للمصفوفة W أقل من 1 ولو بقليل، يتلاشى هذا الجداء أسّياً ليقارب الصفر خلال 10–20 خطوة فقط. وإذا كانت أكبر من 1 ينفجر نحو اللانهاية. في كلتا الحالتين تصبح الشبكة عمياء تاريخياً: عاجزة عن تعلّم أي شيء حدث في الماضي البعيد.

افتح في المختبر
اسحب معامل الأوزان — شاهد تدرجات RNN تتلاشى أو تنفجر بينما قناة CEC في LSTM تبقى ثابتة عند 1.
تستيقظ التجربة عند وصولك…

الفكرة المحورية التي طرحها هوشرايتر وشميدهوبر بسيطة وأنيقة: نصمم خلية ذاكرة تكون مشتقتها الداخلية تساوي 1 بالضبط. كيف؟ بدلاً من ضرب الحالة السابقة في مصفوفة أوزان — كما تفعل الشبكات التكرارية العادية — نحدّث Cₜ بشكل جمعي:

Ct=Ct1+C~tC_t = C_{t-1} + \tilde{C}_t
التحديث الجمعي الأساسي (الشكل الأصلي 1997)التحديث الجمعي يعني أن التدرج المنتشر عكسياً يواجه مشتقة تساوي 1 تماماً — فيستطيع العبور عبر 1,000 خطوة دون أن يفقد قوته.

إضافة بوابة النسيان (غيرس وآخرون، 2000)

كانت LSTM الأصلية عام 1997 تفتقر إلى قدرة حيوية: لم يكن بإمكانها مسح ذاكرتها القديمة. تخيّل أنك تعالج تدفقاً مستمراً من النصوص — حالة الخلية تتراكم فيها المعلومات باستمرار دون أن يُحذف منها شيء، فتتشبّع في النهاية وتفقد قدرتها على استيعاب أي جديد. حلّ فيليكس غيرس وشميدهوبر وكامنز هذه المشكلة عام 2000 بتقديم بوابة النسيان (fₜ) — مُعامل ضربي يتحكم في مقدار ما نحتفظ به من حالة الخلية السابقة قبل إضافة المحتوى الجديد:

Ct=ftCt1+itC~tC_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t
تحديث حالة الخلية الحديث (مع بوابة النسيان)عندما fₜ → 0 تُمسح الذاكرة القديمة بالكامل؛ وعندما fₜ → 1 تُحفظ كما هي. هذا يتيح للشبكة إعادة تهيئة ذاكرتها عند حدود الجمل أو تغيُّر الموضوع.

خلية LSTM الحديثة الكاملة

ft=σ(Wf[ht1,xt]+bf)it=σ(Wi[ht1,xt]+bi)C~t=tanh(Wc[ht1,xt]+bc)Ct=ftCt1+itC~tot=σ(Wo[ht1,xt]+bo)ht=ottanh(Ct)\begin{aligned} f_t &= \sigma(W_f [h_{t-1}, x_t] + b_f) \\ i_t &= \sigma(W_i [h_{t-1}, x_t] + b_i) \\ \tilde{C}_t &= \tanh(W_c [h_{t-1}, x_t] + b_c) \\ C_t &= f_t \odot C_{t-1} + i_t \odot \tilde{C}_t \\ o_t &= \sigma(W_o [h_{t-1}, x_t] + b_o) \\ h_t &= o_t \odot \tanh(C_t) \end{aligned}
معادلات LSTM القياسية (ما بعد 2000)أربعة تحويلات خطية متوازية، تُدرَّب جميعها بالانتشار العكسي عبر الزمن (BPTT).
افتح في المختبر
انقر على أي مكوّن لفهم دوره ومعادلته وعلاقته بالمكونات الأخرى.
تستيقظ التجربة عند وصولك…

شاهد البوابات أثناء العمل

افتح في المختبر
تابع تمريرة أمامية واحدة خطوة بخطوة — شاهد كيف تحدد كل بوابة ما يُكتب وما يُحفظ وما يُكشف في كل مرحلة.
تستيقظ التجربة عند وصولك…

الفكرة نفسها في الكود

خطوة LSTM واحدة مع بوابة النسيانpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def lstm_step(x_t, h_prev, C_prev, params):
    """
    x_t:    متجه المُدخل الحالي
    h_prev: الحالة الخفية السابقة
    C_prev: حالة الخلية السابقة (الذاكرة المحمية)
    """
    combined = np.concatenate([h_prev, x_t])

    # 1. بوابة النسيان — كم نُبقي من الذاكرة القديمة؟
    f_t = sigmoid(params['W_f'] @ combined + params['b_f'])

    # 2. بوابة الإدخال — كم نكتب من المُرشَّح الجديد؟
    i_t = sigmoid(params['W_i'] @ combined + params['b_i'])

    # 3. القيمة المُرشَّحة — ماذا نريد أن نكتب؟
    C_tilde = np.tanh(params['W_c'] @ combined + params['b_c'])

    # 4. تحديث الخلية — الورقة البحثية كلها في سطر واحد
    C_t = f_t * C_prev + i_t * C_tilde     # جمعي ← التدرج يبقى عند 1

    # 5. بوابة الإخراج — كم نكشف الآن؟
    o_t = sigmoid(params['W_o'] @ combined + params['b_o'])

    # 6. الحالة الخفية
    h_t = o_t * np.tanh(C_t)

    return h_t, C_t

المسار التاريخي

  1. 1997

    ولادة LSTM

    قدّم هوشرايتر وشميدهوبر دوّار الخطأ الثابت مع بوابتَي الإدخال والإخراج، وحلّا بذلك مشكلة تلاشي التدرجات لأول مرة في بنية تكرارية قابلة للتطبيق العملي.

  2. 2000

    بوابة النسيان

    أضاف غيرس وشميدهوبر وكامنز بوابة النسيان، فأصبحت LSTM قادرة على مسح ذاكرتها عند حدود التسلسلات. بذلك اكتملت الخلية الحديثة بشكلها المعروف اليوم.

  3. 2006

    LSTM + دالة CTC

    دمج أليكس غريفز LSTM مع تصنيف CTC، فأصبح بالإمكان التعرف على الكلام دون الحاجة لتجزئته يدوياً — وهو الأساس الذي بُنيت عليه المساعدات الصوتية الحديثة.

  4. 2014

    Seq2Seq والترجمة الآلية

    استخدم سوتسكيفر وفريقه طبقات متعددة من LSTM في بنية مُرمِّز-فاكّ ترميز، فأحدثوا نقلة نوعية في الترجمة الآلية لدى جوجل. أصبحت LSTM العمود الفقري لتطبيقات معالجة اللغة الطبيعية التجارية.

  5. 2015

    آلية الانتباه فوق LSTM

    أضاف باهداناو وفريقه آلية محاذاة ديناميكية فوق الحالات الخفية لـ LSTM — وكانت هذه الخطوة الوسيطة الحاسمة التي ألهمت لاحقاً آلية الانتباه الذاتي في المحوِّلات.

  6. 2017

    المحوِّلات تحل محل التكرارية

    أثبتت ورقة «Attention Is All You Need» أن الانتباه الذاتي وحده — بدون أي تكرارية — يضاهي LSTM ثم يتفوق عليها في الترجمة، مع قابلية كاملة للتوازي. بذلك انتهت حقبة LSTM.

المرجعHochreiter, S., Schmidhuber, J.. Long Short-Term Memory. Neural Computation 9(8), 1997.

مصطلحات هذه الورقة