الذاكرة الطويلة قصيرة المدى
Long Short-Term Memory (LSTM)
البوابات وخلية الذاكرة: كيف تحافظ LSTM على المعلومات عبر تسلسلات طويلة.
المعادلات
$$\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 مقابل المحوّلات
| LSTM | GRU | Transformer | |
|---|---|---|---|
| البوابات | 3 + خلية ذاكرة | 2 | لا يوجد (انتباه) |
| المعالجة | تسلسلية | تسلسلية | متوازية |
| الاعتماديات البعيدة | جيدة | جيدة | ممتازة (وصول مباشر) |
| الاستخدام الحالي | سلاسل زمنية، أنظمة خفيفة | مشابه | اللغة والرؤية والصوت |
ما تزال LSTM خياراً عملياً في بعض السلاسل الزمنية والأجهزة محدودة الموارد.
مصطلحات الدرس
- GRU Gated Recurrent Unit
- وحدة تكرارية ببوابتين (التحديث وإعادة الضبط) أبسط من LSTM وأداؤها مقارب في مهام كثيرة.
- بوابة النسيان Forget Gate
- بوابة تحدد أي أجزاء من خلية الذاكرة السابقة يُحتفظ بها وأيها يُحذف.
- خلية الذاكرة Cell State
- متجه في LSTM يحمل المعلومات عبر الخطوات الزمنية ويُحدَّث بعمليات جمع وضرب تتحكم فيها البوابات.
الملخص
LSTM التي اقترحها Hochreiter وSchmidhuber عام 1997 تضيف إلى الشبكة التكرارية خلية ذاكرة وثلاث بوابات (النسيان والإدخال والإخراج) تتحكم في ما يُحذف من الذاكرة وما يُضاف إليها وما يُخرج منها. التحديث الجمعي لخلية الذاكرة يسمح بتدفق التدرج عبر خطوات كثيرة دون تلاشٍ سريع. GRU بديل أبسط ببوابتين، وكلاهما حلت محلهما المحوّلات في كثير من مهام اللغة.
أسئلة مراجعة
-
ما وظيفة كل بوابة من بوابات LSTM الثلاث؟
النسيان تحدد ما يُحذف من الذاكرة، والإدخال ما يُضاف إليها، والإخراج ما يظهر في الحالة المخفية.
-
لماذا تخفف LSTM مشكلة تلاشي التدرج؟
لأن خلية الذاكرة تُحدَّث بالجمع والضرب في بوابة النسيان، فيمكن للتدرج أن يمر عبر خطوات كثيرة دون ضرب متكرر في مصفوفة الأوزان نفسها.
المصادر والمراجع
إكمال الدرس
أكملت كل دروس المسار! يمكنك الآن طلب شهادة إكمال المسار.
اطلب الشهادة