التعلم العميق متوسط · Intermediate 12 دقيقة

الشبكات العصبية التكرارية

Recurrent Neural Networks (RNN)

معالجة التسلسلات بحالة مخفية تنتقل عبر الزمن، وحدود الذاكرة القصيرة.

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

المعادلات

في كل خطوة زمنية \(t\):

$$\mathbf{h}_t = \tanh\left(W_{xh}\mathbf{x}_t + W_{hh}\mathbf{h}_{t-1} + \mathbf{b}_h\right), \qquad \mathbf{y}_t = W_{hy}\mathbf{h}_t + \mathbf{b}_y$$

الأوزان \(W_{xh}, W_{hh}, W_{hy}\) نفسها في كل خطوة.

أنماط المسائل

النمطمثال
متعدد ← واحدتصنيف مشاعر جملة
واحد ← متعددتوليد نص من بداية
متعدد ← متعدد (متزامن)وسم أجزاء الكلام
متعدد ← متعدد (مشفر-مفكك)الترجمة الآلية

مثال في PyTorch

import torch, torch.nn as nn

class SeqClassifier(nn.Module):
    def __init__(self, vocab=5000, emb=64, hidden=128, n_classes=2):
        super().__init__()
        self.emb = nn.Embedding(vocab, emb)
        self.rnn = nn.RNN(emb, hidden, batch_first=True)
        self.fc = nn.Linear(hidden, n_classes)
    def forward(self, tokens):                # (batch, seq_len)
        out, h_n = self.rnn(self.emb(tokens)) # h_n: (1, batch, hidden)
        return self.fc(h_n[-1])

print(SeqClassifier()(torch.randint(0, 5000, (8, 20))).shape)   # (8, 2)

مشكلة الذاكرة القصيرة

في BPTT يتضمن تدرج الخطوات البعيدة حاصل ضرب متكرر يشمل \(W_{hh}\). إذا كانت قيمه الذاتية أصغر من 1 يتلاشى التدرج، وإذا كانت أكبر ينفجر (Bengio et al., 1994). الحلول:

  • قص التدرج للانفجار.
  • معماريات ببوابات مثل LSTM وGRU للتلاشي.
  • آلية الانتباه والمحوّلات التي تصل مباشرة إلى أي موقع في التسلسل.

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

الانتشار الخلفي عبر الزمن Backpropagation Through Time
تطبيق الانتشار الخلفي على الشبكة التكرارية بعد «فردها» عبر خطوات التسلسل.
الحالة المخفية Hidden State
متجه يلخص المعلومات المستخلصة من عناصر التسلسل السابقة.
الشبكة التكرارية Recurrent Neural Network
شبكة تعالج التسلسلات بتمرير حالة مخفية من خطوة زمنية إلى التالية مع مشاركة الأوزان عبر الزمن.

الملخص

الشبكة التكرارية (RNN) تعالج التسلسل عنصراً بعد عنصر، محدّثة حالة مخفية تلخص ما سبق باستخدام الأوزان نفسها في كل خطوة زمنية. تُدرَّب بالانتشار الخلفي عبر الزمن (BPTT)، وتعاني من تلاشي التدرج أو انفجاره مع التسلسلات الطويلة، ما يحد من قدرتها على تذكر الاعتماديات البعيدة. هذا ما عالجته LSTM وGRU لاحقاً، ثم المحوّلات.

أسئلة مراجعة

  1. لماذا تعاني RNN البسيطة مع التسلسلات الطويلة؟

    لأن التدرج يُضرب مراراً في المصفوفة نفسها عبر الخطوات فيتلاشى أو ينفجر، فيصعب تعلم الاعتماديات البعيدة.

  2. اذكر ثلاثة أنماط لمسائل التسلسل.

    واحد إلى متعدد (توليد وصف صورة)، ومتعدد إلى واحد (تصنيف المشاعر)، ومتعدد إلى متعدد (الترجمة أو وسم الكلمات).

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

  1. Goodfellow et al. — Deep Learning, Ch. 10: Sequence Modeling
  2. Bengio, Simard & Frasconi (1994) Learning long-term dependencies with gradient descent is difficult — IEEE Trans. Neural Networks
  3. Dive into Deep Learning — Recurrent Neural Networks

إكمال الدرس