Chapter 29
RNN
RNN
🎬 স্মৃতিময় নেটওয়ার্ক
Recurrent Neural Network (RNN) sequence-এর জন্য তৈরি — text, time series, speech। প্রতিটি timestep-এ আগের hidden state ও বর্তমান ইনপুট নিয়ে নতুন state তৈরি করে।
মূল সমীকরণ
h_t = tanh(W_xh · x_t + W_hh · h_{t-1} + b_h)
y_t = W_hy · h_t + b_yএকই weight প্রতিটি timestep-এ — parameter sharing। ফলে variable-length input handle করা যায়।
Unrolled View
x1 → [RNN] → h1 → [RNN] → h2 → [RNN] → h3 → ...
↑ ↑ ↑
same W same W same Wসমস্যা — Vanishing & Exploding Gradient
দীর্ঘ sequence-এ BPTT-তে gradient হয় বহুগুণ ছোট হয়ে যায় (vanishing) — দূরের context ভুলে যায়; বা বিস্ফোরিত হয় (exploding) — training অস্থির। সমাধান: LSTM/GRU, gradient clipping, proper initialization (Xavier/He)।
PyTorch দিয়ে সরল RNN
import torch, torch.nn as nn
class RNNClassifier(nn.Module):
def __init__(self, vocab, emb=64, hid=128, n_class=2):
super().__init__()
self.emb = nn.Embedding(vocab, emb, padding_idx=0)
self.rnn = nn.RNN(emb, hid, batch_first=True)
self.fc = nn.Linear(hid, n_class)
def forward(self, x):
x = self.emb(x)
out, h = self.rnn(x)
return self.fc(h.squeeze(0))Keras উদাহরণ
from tensorflow.keras import layers, models
m = models.Sequential([
layers.Embedding(10000, 64, mask_zero=True),
layers.SimpleRNN(128),
layers.Dense(1, activation="sigmoid"),
])Bi-directional RNN
সামনে ও পিছনে দুদিক থেকে পড়ে — context উভয়দিক থেকে। POS tagging, NER-এ দারুণ।
layers.Bidirectional(layers.SimpleRNN(128))Sequence Task-এর ধরন
Pattern
উদাহরণ
আউটপুট
One → Many
Image captioning
Sequence
Many → One
Sentiment
Single
Many → Many (sync)
POS tagging
Same length
Many → Many (async)
Translation
Diff length
🔑 কখন RNN?
আজকাল Transformer প্রভাবশালী, তবু ছোট ডেটা, on-device, বা streaming task-এ RNN/LSTM এখনও কার্যকর।
অনুশীলন
১. IMDB sentiment-এ SimpleRNN train করে accuracy দেখুন।
২. Bi-RNN বনাম uni-RNN তুলনা করুন।
৩. Gradient clipping চালু/বন্ধ করে training stability দেখুন।
সারসংক্ষেপ
✨ এই অধ্যায়ে যা শিখলাম
- RNN sequence-এর জন্য — hidden state বহন করে।
- Vanishing gradient → LSTM/GRU দরকার।
- Bi-RNN context উভয়দিক থেকে পায়।