Long Short-Term Memory (LSTM)
شبكة الذاكرة طويلة قصيرة الأمد (LSTM) هي شبكة تكرارية تحمل حالة خليتها المحكومة ببوابات المعلومات عبر تسلسلات طويلة. تتناول البوابات والمعادلات ومقارنتها بـ GRU والشيفرة.
الذاكرة طويلة قصيرة الأمد (LSTM) بنية من الشبكات العصبية المتكررة (RNN) تضيف ذاكرة ذات بوابات، هي حالة الخلية، إلى جانب الحالة المخفية لشبكة RNN بسيطة، ما يمكّنها من نقل المعلومات عبر مئات أو آلاف الخطوات الزمنية. قدّمها سيب هوخرايتر ويورغن شميدهوبر عام 1997 للتغلب على مشكلة تلاشي التدرّج التي تمنع شبكات RNN البسيطة من تعلّم الاعتماديات بعيدة المدى، وذكرت ورقتهما تجاوز الفجوات الزمنية 1,000 خطوة. وفي العقد الثاني من الألفية، شغّلت شبكات LSTM التعرّف على الكلام والترجمة الآلية والتعرّف على الكتابة اليدوية، إلى أن هيمنت المحوّلات على معظم مهام اللغة. وما زالت شائعة في تحليل السلاسل الزمنية وتدفّقات بيانات المستشعرات والنماذج على الجهاز، حيث تكتسب الحالة ثابتة الحجم والكلفة الثابتة لكل خطوة أهمية.
آلية عمل خلية LSTM#
في كل خطوة زمنية t، تقرأ LSTM الإدخال xₜ والحالة المخفية السابقة hₜ₋₁ وتحسب ثلاث بوابات ومرشحاً، لكل منها أوزانها الخاصة. تستخدم البوابات دالة sigmoid، لذا تقع كل قيمة بين 0 و1، ويستخدم المرشح دالة tanh، لذا تقع قيمه بين −1 و1:
- بوابة النسيان: تحدد fₜ = σ(W_f xₜ + U_f hₜ₋₁ + b_f) مقدار ما يُحتفظ به من كل عنصر في حالة الخلية القديمة.
- بوابة الإدخال: تحدد iₜ = σ(W_i xₜ + U_i hₜ₋₁ + b_i) مقدار ما يُكتب من المرشح.
- المرشح: يقترح gₜ = tanh(W_g xₜ + U_g hₜ₋₁ + b_g) محتوى جديداً.
- بوابة الإخراج: تحدد oₜ = σ(W_o xₜ + U_o hₜ₋₁ + b_o) مقدار ما تكشفه الخلية.
ثم تُحدّث الحالتان كما يلي: cₜ = fₜ ⊙ cₜ₋₁ + iₜ ⊙ gₜ وhₜ = oₜ ⊙ tanh(cₜ)، حيث يشير ⊙ إلى الضرب عنصرًا بعنصر. تمثل حالة الخلية الذاكرة طويلة الأمد، بينما تمثل الحالة المخفية الخرج قصير الأمد الذي يغذي الطبقة التالية والخطوة التالية.
تحديث الخلية جمعي. فتدرّج cₜ بالنسبة إلى cₜ₋₁ يساوي fₜ، عنصراً بعنصر، لذا عندما تبقى بوابة النسيان قريبة من 1، تمر إشارة الخطأ عائدة عبر خطوات كثيرة من دون تغيير يُذكر؛ وهذا المسار سمّته الورقة الأصلية «دائرة الخطأ الثابت». لم تتضمن LSTM لعام 1997 بوابة نسيان، ولم يكن بوسع خلاياها سوى التراكم. أضاف فيليكس غيرز وشميدهوبر وفريد كامينز بوابة النسيان عام 2000 كي تتمكن الخلايا من إعادة الضبط، وأصبحت هذه البوابة موجودة في كل LSTM قياسية اليوم. ويُبقي تهيئة انحياز بوابة النسيان على القيمة 1، كما أوصى رافال يوزيفوفيتش وزملاؤه عام 2015، البوابة مفتوحة في بداية التدريب كي تبدأ الشبكة بتذكّر المعلومات.
LSTM في PyTorch#
تشغّل nn.LSTM في PyTorch الخلية على تسلسل كامل وتعيد الحالة المخفية في كل خطوة، إلى جانب الحالتين المخفية والخلية النهائيتين. يصنّف المقطع أدناه مقاطع فيديو قصيرة انطلاقاً من متجهات السمات لكل إطار، مثل السمات التي تستخرجها شبكة عصبية التفافية (CNN) من كل إطار:
import torch
from torch import nn
# 8 video clips, 16 frames each, 512 features per frame: (batch, time, features)
clips = torch.randn(8, 16, 512)
# One LSTM layer with a 128-dim hidden state, and a classifier over 5 actions
lstm = nn.LSTM(input_size=512, hidden_size=128, batch_first=True)
classifier = nn.Linear(128, 5)
# output holds h at every step; h_n and c_n are the final hidden and cell states
output, (h_n, c_n) = lstm(clips)
logits = classifier(h_n[-1])
print(f"output {tuple(output.shape)}, h_n {tuple(h_n.shape)}, c_n {tuple(c_n.shape)}, logits {tuple(logits.shape)}")
# Each weight matrix stacks four blocks of 128 rows: input gate, forget gate, candidate, output gate
print(f"Input weights {tuple(lstm.weight_ih_l0.shape)}, recurrent weights {tuple(lstm.weight_hh_l0.shape)}")يطبع output (8, 16, 128), h_n (1, 8, 128), c_n (1, 8, 128), logits (8, 5) وInput weights (512, 512), recurrent weights (512, 128). تلخّص الحالة المخفية النهائية كل مقطع من 16 إطاراً للمصنّف ذي الفئات الخمس، وتتكون كل مصفوفة أوزان من 4 × 128 = 512 صفاً لأن PyTorch تخزّن كتل البوابات الأربع في مصفوفة واحدة.
LSTM والبنى ذات الصلة#
- شبكة RNN بسيطة: تعيد كتابة حالتها كاملة عبر طبقة tanh واحدة في كل خطوة، لذا تتقلص التدرجات أو تتضخم هندسياً مع طول التسلسل، ويصعب تعلّم الاعتماديات بعيدة المدى.
- GRU: تدمج حالتي الخلية والحالة المخفية وتستخدم بوابتين بدلاً من ثلاث، ما يوفر ثلاث كتل أوزان بدلاً من أربع وثلاثة أرباع معلمات LSTM عند العرض نفسه. ولا يتفوق أي منهما باستمرار عبر المهام.
- Transformer: يعالج جميع المواضع بالتوازي باستخدام الانتباه الذاتي، ما يسرّع التدريب كثيراً على وحدات GPU ويتيح الوصول المباشر إلى السياق البعيد؛ لذلك حلّت المحوّلات محل LSTM في نمذجة اللغة والترجمة. تزداد كلفة الانتباه مع طول السياق، بينما تستهلك LSTM المقدار نفسه من الحوسبة والذاكرة مع كل خطوة جديدة.
- xLSTM: تضيف xLSTM، التي طورتها مجموعة هوخرايتر عام 2024، بوابات أسية وذاكرة مصفوفية تتيح التدريب بالتوازي. نُشر نموذجها اللغوي ذو 7 مليارات معلَمة، xLSTM 7B، في ICML 2025، مع أداء يضاهي نماذج Transformer ذات الحجم المماثل واستدلال أسرع.
التطبيقات#
- التعرّف على الكلام: نقلت Google البحث الصوتي إلى نماذج صوتية قائمة على LSTM دُرّبت باستخدام التصنيف الزمني الترابطي (CTC) عام 2015، واعتمدت أنظمة التعرّف على الجهاز طويلاً على شبكات LSTM مكدّسة.
- الترجمة الآلية: استخدمت خدمة Google Neural Machine Translation، التي أُطلقت عام 2016، ثماني طبقات LSTM متكدّسة في المُرمّز وثماني طبقات في مفكك الترميز.
- التنبؤ بالفيضانات: يستخدم نظام Google للتنبؤ بالفيضانات، الموصوف في مجلة Nature عام 2024، شبكات LSTM للتنبؤ بتدفق الأنهار انطلاقاً من بيانات الطقس، ويتنبأ بالفيضانات الشديدة في أحواض التصريف غير المزوّدة بمقاييس حتى خمسة أيام مسبقاً.
- التعرّف على الأفعال: ترمّز شبكة CNN كل إطار فيديو، وتقرأ LSTM تسلسل سمات الإطارات لتصنيف المقطع، وهي البنية التي يتبعها المقطع أعلاه.
- التنبؤ بالمسارات: تشغّل Social LSTM شبكة LSTM لكل مشاة، وتجمع الحالات المخفية للأشخاص القريبين للتنبؤ بمسارات الحركة وسط الحشود. تعيّن YOLO26 في وضع التتبّع معرّفاً ثابتاً لكل شخص عبر إطارات الفيديو، ما يحوّل عمليات الكشف لكل إطار إلى سجلات مواقع يقرأها نظام التنبؤ.










