التعلم العميق متقدم · Advanced 15 دقيقة

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

Long Short-Term Memory (LSTM)

البوابات وخلية الذاكرة: كيف تحافظ LSTM على المعلومات عبر تسلسلات طويلة.

تقدّمك في المسار0%

المعادلات

$$\mathbf{f}_t = \sigma(W_f[\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_f) \quad \text{(النسيان)}$$

$$\mathbf{i}_t = \sigma(W_i[\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_i) \quad \text{(الإدخال)}$$

$$\tilde{\mathbf{c}}_t = \tanh(W_c[\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_c) \quad \text{(المرشح)}$$

$$\mathbf{c}_t = \mathbf{f}_t \odot \mathbf{c}_{t-1} + \mathbf{i}_t \odot \tilde{\mathbf{c}}_t$$

$$\mathbf{o}_t = \sigma(W_o[\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_o), \qquad \mathbf{h}_t = \mathbf{o}_t \odot \tanh(\mathbf{c}_t)$$

الحدس

خلية الذاكرة \(\mathbf{c}_t\) كحزام نقل: تمر المعلومات عبره مع تعديلات صغيرة. بوابة النسيان تمسح ما لم يعد مهماً، وبوابة الإدخال تكتب معلومات جديدة، وبوابة الإخراج تحدد ما يُعرض للخطوة التالية وللطبقات العليا.

في PyTorch

import torch, torch.nn as nn
lstm = nn.LSTM(input_size=64, hidden_size=128, num_layers=2,
               batch_first=True, bidirectional=True, dropout=0.2)
x = torch.randn(8, 50, 64)            # (batch, seq_len, features)
out, (h_n, c_n) = lstm(x)
print(out.shape)                      # (8, 50, 256) بسبب الاتجاهين

bidirectional=True يقرأ التسلسل في الاتجاهين، وهذا مفيد عندما يكون التسلسل كاملاً متاحاً (مثل وسم الكلمات) وليس للتوليد خطوة بخطوة.

LSTM مقابل GRU مقابل المحوّلات

LSTMGRUTransformer
البوابات3 + خلية ذاكرة2لا يوجد (انتباه)
المعالجةتسلسليةتسلسليةمتوازية
الاعتماديات البعيدةجيدةجيدةممتازة (وصول مباشر)
الاستخدام الحاليسلاسل زمنية، أنظمة خفيفةمشابهاللغة والرؤية والصوت

ما تزال LSTM خياراً عملياً في بعض السلاسل الزمنية والأجهزة محدودة الموارد.

مصطلحات الدرس

GRU Gated Recurrent Unit
وحدة تكرارية ببوابتين (التحديث وإعادة الضبط) أبسط من LSTM وأداؤها مقارب في مهام كثيرة.
بوابة النسيان Forget Gate
بوابة تحدد أي أجزاء من خلية الذاكرة السابقة يُحتفظ بها وأيها يُحذف.
خلية الذاكرة Cell State
متجه في LSTM يحمل المعلومات عبر الخطوات الزمنية ويُحدَّث بعمليات جمع وضرب تتحكم فيها البوابات.

الملخص

LSTM التي اقترحها Hochreiter وSchmidhuber عام 1997 تضيف إلى الشبكة التكرارية خلية ذاكرة وثلاث بوابات (النسيان والإدخال والإخراج) تتحكم في ما يُحذف من الذاكرة وما يُضاف إليها وما يُخرج منها. التحديث الجمعي لخلية الذاكرة يسمح بتدفق التدرج عبر خطوات كثيرة دون تلاشٍ سريع. GRU بديل أبسط ببوابتين، وكلاهما حلت محلهما المحوّلات في كثير من مهام اللغة.

أسئلة مراجعة

  1. ما وظيفة كل بوابة من بوابات LSTM الثلاث؟

    النسيان تحدد ما يُحذف من الذاكرة، والإدخال ما يُضاف إليها، والإخراج ما يظهر في الحالة المخفية.

  2. لماذا تخفف LSTM مشكلة تلاشي التدرج؟

    لأن خلية الذاكرة تُحدَّث بالجمع والضرب في بوابة النسيان، فيمكن للتدرج أن يمر عبر خطوات كثيرة دون ضرب متكرر في مصفوفة الأوزان نفسها.

المصادر والمراجع

  1. Hochreiter & Schmidhuber (1997) Long Short-Term Memory — Neural Computation
  2. Olah (2015) Understanding LSTM Networks
  3. Cho et al. (2014) Learning Phrase Representations using RNN Encoder-Decoder (GRU) — arXiv

إكمال الدرس