Introduction to RNNs

(रीकरेंट न्यूरल नेटवर्क का परिचय)


🔶 1. What is an RNN?

RNN (Recurrent Neural Network) एक ऐसा neural network है जो input के रूप में मिलने वाले sequence data को process करता है, और past inputs की जानकारी को याद रखकर अगले outputs तय करता है।

Simple terms में:
RNNs “memory” रखते हैं और इससे वो time-dependent problems solve कर सकते हैं।


🔁 2. क्यों ज़रूरी है RNN?

Traditional Neural Networks (जैसे MLP या CNN) हर input को independent मानते हैं।

लेकिन sequential data (जैसे भाषा, मौसम का डेटा, stock prices) में ऐसा नहीं होता —
पहले शब्द या डेटा का अगली स्थिति पर प्रभाव होता है।

🧠 RNN इस dependency को capture करने में सक्षम है।


📈 3. Examples of Sequence Tasks:

ApplicationInputOutput
Sentiment AnalysisSentenceSentiment
Machine TranslationSentence in EnglishSentence in Hindi
Speech RecognitionAudio SignalText
Time Series ForecastingPast valuesFuture value

🧱 4. RNN Architecture:

Basic Structure:

x₁ → [RNN Cell] → h₁  
x₂ → [RNN Cell] → h₂
x₃ → [RNN Cell] → h₃
... and so on

हर step पर output ht निर्भर करता है:

जहाँ:


🔁 5. RNN Memory Concept:

RNN में hidden state hth_tht​ एक प्रकार की memory की तरह काम करता है।
हर नए input के साथ यह update होता है — जिससे model को context याद रहता है।


🔄 6. Unrolling an RNN:

RNN को एक loop में चलाया जाता है, लेकिन हम इसे unroll कर सकते हैं:

x1 → [ ] → h1  
x2 → [ ] → h2
x3 → [ ] → h3

→ यह loop-based representation है जिसमें एक ही cell बार-बार चलता है।


🔧 7. PyTorch Code: Basic RNN Example

import torch
import torch.nn as nn

rnn = nn.RNN(input_size=10, hidden_size=20, num_layers=1, batch_first=True)

input = torch.randn(5, 3, 10) # (batch, sequence, input_size)
h0 = torch.zeros(1, 5, 20) # (num_layers, batch, hidden_size)

output, hn = rnn(input, h0)

print(output.shape) # → [5, 3, 20]
print(hn.shape) # → [1, 5, 20]

⚠️ 8. Limitations of Vanilla RNN

ProblemReason
Vanishing GradientLong-term dependencies भूल जाते हैं
Exploding GradientGradient बहुत बढ़ जाता है
Short Memoryकेवल कुछ पिछले steps को याद रख पाता है

👉 इसका समाधान है: LSTM और GRU (अगले topics में आएगा)


📘 Summary:


📝 Practice Questions:

  1. RNN किस प्रकार की समस्याओं को हल करने के लिए उपयुक्त है?
  2. Hidden state का क्या काम होता है RNN में?
  3. RNN को unroll करना क्या होता है?
  4. RNN के कौन-कौन से limitations हैं?
  5. PyTorch में एक simple RNN कैसे implement करते हैं?