MLP — Multi-Layer Perceptron
এই পাঠে যা শিখবেন
- Multi-Layer Perceptron-এর architecture — input, hidden, output layer
- একই ইনপুটে অনেক neuron — feature learning কীভাবে কাজ করে
- XOR-এর সমাধান — হাতে-কলমে ২ hidden neuron দিয়ে
- PyTorch-এ
nn.Sequentialদিয়ে একটি MLP বানানো
১ · MLP-র গঠন
একটি Multi-Layer Perceptron — তিন ধরনের স্তরের সমষ্টি:
১) Input layer: ডেটা যেমন আছে — পিক্সেল, শব্দ, সংখ্যা।
২) Hidden layer (এক বা একাধিক): ভেতরের গণনা — যেখানে representation শেখা হয়।
৩) Output layer: চূড়ান্ত উত্তর — class probability বা regression value।
প্রতিটি স্তর = একগুচ্ছ neuron। প্রতিটি neuron-এ — পূর্ববর্তী স্তরের প্রতিটি neuron থেকে connection (একে বলে fully connectedFully Connectedএকটি স্তরের প্রতিটি neuron — পরবর্তী স্তরের প্রতিটি neuron-এর সাথে যুক্ত। PyTorch-এ nn.Linear। MLP-র চারিত্রিক বৈশিষ্ট্য।)। প্রতিটি connection-এ একটি ওজন ($w$)।
২ · গাণিতিক রূপ
একটি ২-স্তরের MLP (input + hidden + output)-এর সূত্র:
$$\mathbf{h} = f(\mathbf{W}_1 \mathbf{x} + \mathbf{b}_1)$$ $$\mathbf{y} = g(\mathbf{W}_2 \mathbf{h} + \mathbf{b}_2)$$
যেখানে:
- $\mathbf{x}$ = input ভেক্টর (যেমন size $n$)
- $\mathbf{W}_1$ = প্রথম ওজন matrix (size $h \times n$, $h$ = hidden neuron সংখ্যা)
- $\mathbf{b}_1, \mathbf{b}_2$ = bias ভেক্টর
- $f, g$ = activation function (যেমন ReLU বা sigmoid)
- $\mathbf{h}$ = hidden representation
- $\mathbf{y}$ = চূড়ান্ত আউটপুট
৩ · XOR সমাধান — হাতে-কলমে
২ hidden neuron দিয়ে XOR সমাধান। নির্দিষ্ট ওজন (নিচের mapping):
- $h_1 = \text{step}(x_1 + x_2 - 0.5)$ — OR-এর মতো
- $h_2 = \text{step}(x_1 + x_2 - 1.5)$ — AND-এর মতো
- $y = \text{step}(h_1 - h_2 - 0.5)$ — "OR কিন্তু AND নয়"
| $x_1$ | $x_2$ | $h_1$ | $h_2$ | $y$ |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 | 0 |
মূল trick: Hidden layer XOR-এর data-কে এমন একটি space-এ project করে — যেখানে XOR linearly separable। Output layer সেই নতুন space-এ একটি linear decision। L02-এর "feature transformation" idea-র গাণিতিক বাস্তবায়ন।
৪ · Hidden Layer = Feature Factory
MLP-র সবচেয়ে গুরুত্বপূর্ণ insight: hidden layer-এ প্রতিটি neuron — input-এর একটি learned feature। Manual feature engineering-এর দরকার নেই — network নিজে শেখে।
- Image-এ: hidden neuron edge, corner, texture detect করে।
- Text-এ: hidden neuron syntax pattern, sentiment cue ধরে।
- Tabular-এ: feature interaction (যেমন age × income) auto-শেখে।
৫ · PyTorch-এ MLP — XOR সমাধান
import torch
import torch.nn as nn
# XOR data
X = torch.tensor([[0.,0.],[0.,1.],[1.,0.],[1.,1.]])
y = torch.tensor([[0.],[1.],[1.],[0.]])
# MLP: 2 input -> 4 hidden -> 1 output
model = nn.Sequential(
nn.Linear(2, 4),
nn.ReLU(),
nn.Linear(4, 1),
nn.Sigmoid()
)
loss_fn = nn.BCELoss()
optim = torch.optim.Adam(model.parameters(), lr=0.05)
# Train
for epoch in range(2000):
pred = model(X)
loss = loss_fn(pred, y)
optim.zero_grad()
loss.backward()
optim.step()
if epoch % 400 == 0:
print(f"epoch {epoch}: loss = {loss.item():.4f}")
# Test
with torch.no_grad():
print("\nFinal predictions:")
for xi, target in zip(X, y):
p = model(xi).item()
print(f"{xi.tolist()} -> {p:.3f} (target {target.item()})")
৬ · MLP-র বহুমুখী রূপ
- Classification: output layer-এ softmax — class probability।
- Regression: output layer-এ activation নেই — সরাসরি real number।
- Auto-encoder: input-এর আকারে output — middle hidden layer = compressed representation।
- Embedding model: hidden layer = এক ধরনের "concept space"।
৭ · Depth ও Width-এর সিদ্ধান্ত
- Width বেশি, depth কম: প্রচুর parameter, overfitting risk। Easier training।
- Depth বেশি, width কম: hierarchical feature, সাশ্রয়ী, কিন্তু vanishing gradient সমস্যা।
- Practical rule: দু'টোই ধাপে ধাপে বাড়ান — validation loss দেখে।
- Tabular data: ২-৩ hidden layer যথেষ্ট, প্রতিটিতে ৬৪-২৫৬ neuron।
- আজকের LLM (Transformer): ৯৬+ স্তর, প্রতিটিতে hidden dim ৪০৯৬-১৬৩৮৪।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ একটি MLP-তে hidden neuron কতগুলো রাখবেন কীভাবে ঠিক করবেন? "Rule of thumb" আছে কি, নাকি শুধু trial-and-error?
এটি practical ML-এর সবচেয়ে ঘনঘন আসা প্রশ্ন। Theory কম, heuristic বেশি।
ঐতিহাসিক rule of thumb:
- Hidden = (input + output) / 2 — Heaton-এর ১৯৯৭ সালের textbook।
- Hidden = √(input × output) — geometric mean।
- Hidden = ২/৩ × input + output — broadly cited।
- এসব starting point — final answer না।
সঠিক approach:
- Validation loss-এর ভিত্তিতে: ছোট থেকে বড় size try — যেখানে validation loss সর্বনিম্ন।
- Capacity ও data-র অনুপাত: ১০০০ training sample-এ ১০,০০০ parameter — overfit guarantee।
- Width before depth: প্রথম একটি wide layer try করুন, পরে depth যোগ করুন।
- Bayesian Optimization: Optuna, Ray Tune দিয়ে automatic search।
Modern guidelines:
- Tabular data: ৩২-৫১২ hidden, ২-৪ স্তর।
- Image (small): CNN preferable, MLP-এ ১২৮-৫১২।
- Embedding head: input dim-এর সমান বা ২x।
- Transformer FFN: hidden dim = ৪x model dim (e.g., 4096 → 16384)।
Overfitting indicator:
- Training loss কমছে, validation loss বাড়ছে → too many neurons।
- Both stuck high → too few।
- Gap বড় → regularization (dropout, weight decay) দরকার।
Bangladesh context:
- Limited GPU? — start small (৩২-৬৪)।
- Tabular fintech (bKash) — ১২৮-২৫৬ usually যথেষ্ট।
- Bangla NLP — pretrained embedding (BanglaBERT) + small MLP head।
মূল উপলব্ধি: Magic number নেই। Validation set + grid search + judgment। ML practitioner-এর core skill।
প্র ০২ "একটি hidden layer-ই যথেষ্ট" — Universal Approximation Theorem এই দাবি করে। তাহলে আজকের ১০০+ স্তরের network-এর প্রয়োজন কেন?
DL-এর গাণিতিক ভিত্তি ও practical reality-র মধ্যে দ্বন্দ্ব। দু'টোই সত্য — কিন্তু পৃথক কারণে।
Universal Approximation Theorem (Cybenko ১৯৮৯, Hornik ১৯৯১):
- একটি hidden layer-এ যথেষ্ট neuron থাকলে — যেকোনো continuous function arbitrary precision-এ approximate করা যায়।
- গাণিতিক existence proof — কীভাবে train করবেন তা বলে না।
- "যথেষ্ট neuron" — কখনো কখনো exponentially বেশি।
Practical সীমা — কেন shallow যথেষ্ট না:
- (১) Sample efficiency: Deep network-এ কিছু function exponentially কম sample-এ শেখে। Bengio & Delalleau (২০১১)-র প্রমাণ।
- (২) Hierarchical structure: বাস্তব ডেটার natural hierarchy — image-এ pixel→edge→shape→object। Single layer এই compositional structure পাবে না সহজে।
- (৩) Parameter efficiency: shallow & wide — billions of parameters। Deep & narrow — millions।
- (৪) Generalization: Empirical observation — deeper networks better generalize (when trainable)।
উদাহরণ:
- Parity function ($n$ bit-এর XOR-এর extension): shallow-এ $2^n$ neuron, deep-এ $O(\log n)$।
- ImageNet classification: shallow MLP-এ ৭০%+ accuracy অসম্ভব। ResNet-152-এ ৭৫%+।
- Language modeling: BERT (১২ স্তর) → GPT-3 (৯৬ স্তর) → GPT-4 (১২০+) — প্রতিটি যুগে depth বেড়েছে।
Depth-এর সমস্যা ও সমাধান:
- Vanishing gradient: backprop-এ gradient deep network-এ শূন্য।
- সমাধান:
- ResNet (২০১৫): skip connection — gradient highway।
- Batch normalization — activation distribution stable।
- Better initialization (He, Xavier)।
- Better optimizer (Adam, AdamW)।
Theory ও practice-এর মেলবন্ধন:
- UAT — what is possible (existence)।
- Modern DL — what is efficient (sample, compute, generalization)।
- দু'টো আলাদা প্রশ্ন।
মূল উপলব্ধি: "একটি স্তর যথেষ্ট" — গাণিতিকভাবে সত্য, ব্যবহারিকভাবে useless। Depth = efficiency, not just possibility। Bitter Lesson — যত compute, তত depth, তত performance।
প্র ০৩ "Fully connected" layer অনেক costly। কেন CNN, Transformer ইত্যাদি architecture FC layer-এর বদলে specialized layer ব্যবহার করে?
Architecture design-এর কেন্দ্রীয় প্রশ্ন — যা DL-এর evolution বুঝতে অপরিহার্য।
Fully Connected-এর সমস্যা:
- Parameter explosion: ২২৪×২২৪×৩ ছবি (১৫০,৫২৮ pixel) → ১০২৪ hidden = ১৫০ million parameter — শুধু প্রথম স্তরে।
- No spatial awareness: ছবিতে কোনো pixel কোথায় তা ভুলে যায়।
- No shared structure: "edge detector" feature প্রতিটি location-এ আলাদা শিখতে হয়।
- Translation sensitive: বিড়ালের ছবি ১০ pixel সরালে — সম্পূর্ণ ভিন্ন input।
CNN-এর সমাধান (image-এ):
- Local connectivity: প্রতিটি neuron শুধু কাছের patch দেখে।
- Weight sharing: একই kernel পুরো image-এ slide। Parameter কমে drastically।
- Translation equivariance: বিড়াল যেখানেই থাকুক — same feature।
- Inductive bias: "image-এ neighboring pixel-গুলো related" — explicitly এনকোডেড।
RNN/LSTM-এর সমাধান (sequence-এ):
- Temporal weight sharing: একই weight প্রতিটি timestep-এ।
- Recurrent state: memory of past।
- Variable length input: FC-এ যা অসম্ভব।
Transformer (Attention)-এর সমাধান:
- Content-based connection: token-গুলো বিষয়ভিত্তিক attend করে।
- Long-range dependencies: RNN-এর বিপরীতে।
- Parallelizable: RNN sequential, transformer parallel। GPU-ফ্রেন্ডলি।
FC কোথায় এখনো ব্যবহার:
- CNN-এর শেষ স্তর — feature → class score।
- Transformer-এর FFN block — প্রতিটি attention block-এর পর।
- Embedding layers।
- Tabular data — যেখানে spatial/temporal structure নেই।
Inductive bias-এর সাধারণ নিয়ম:
- ডেটার structure-এর সাথে architecture match করুন।
- Image → CNN, Sequence → RNN/Transformer, Graph → GNN।
- সঠিক bias = কম data, কম compute, ভাল generalization।
আজকের trend (২০২৩-পরে):
- Vision Transformer (ViT) — image-এও Transformer। Inductive bias কমিয়ে data বাড়িয়ে।
- "Attention is all you need" — প্রায় সব domain-এ।
- Specialized layer → general architecture + scale।
মূল উপলব্ধি: FC powerful কিন্তু wasteful। Specialized layer = task-specific efficiency। Architecture engineering — DL-এর creative core।
প্র ০৪ একটি MLP train-এর পর কি বুঝবেন কোন hidden neuron কী "শিখেছে"? Interpretability কেন কঠিন এবং কেন গুরুত্বপূর্ণ?
DL-এর সবচেয়ে গভীর challenge — সব ML-এর "black box" সমস্যা।
Interpretability-র সমস্যা:
- Distributed representation: একটি concept (যেমন "বিড়াল") অনেক neuron-এ ছড়ানো — কোনো একক "বিড়াল neuron" নেই।
- Polysemanticity: একটি neuron অনেক কিছু represent করে — context-নির্ভর।
- Non-linearity: শুধু weight দেখে কিছু বোঝা যায় না — interaction matters।
- Scale: GPT-3-এ ১৭৫ billion parameter। মানুষের পক্ষে inspect করা অসম্ভব।
Interpretation techniques:
- Activation maximization: কোন input এই neuron সবচেয়ে বেশি fire করায় — visualize।
- Saliency maps: output gradient relative to input — কোন pixel important।
- SHAP, LIME: local approximation দিয়ে decision explain।
- Probing: এই neuron-এর activation দিয়ে কি specific property predict করা যায়?
- Mechanistic interpretability (Anthropic, ২০২৩+): circuit level — neurons-এর মধ্যে কীভাবে computation ঘটছে।
চমৎকার আবিষ্কার:
- CNN early layers — edge, texture detector।
- CNN middle layers — eye, fur, wheel detector।
- CNN late layers — full object detector।
- BERT — early layers syntax, middle semantics, late task-specific।
- GPT — induction heads, early ML circuits (Anthropic)।
কেন interpretability গুরুত্বপূর্ণ:
- Trust: medical AI, judicial AI — decision কেন বুঝা চাই।
- Debug: মডেল ভুল করছে — কেন? Bias, spurious feature, data leakage?
- Compliance: EU AI Act, GDPR — "right to explanation"।
- Safety: AI alignment — model-এর intention বুঝা।
- Science: মডেল-এর pattern থেকে নতুন domain knowledge।
Trade-off:
- Simple model (linear) → interpretable, কিন্তু কম accurate।
- Deep model → accurate, কম interpretable।
- "Glass box" methods (decision tree, SHAP) — middle ground।
Bangladesh perspective:
- Loan default prediction — explainable হওয়া আইনি প্রয়োজন।
- Medical AI (TB detection, X-ray) — ডাক্তারের validation দরকার।
- Recommendation — bias audit।
মূল উপলব্ধি: Interpretability শুধু technical না — নৈতিক ও বৈজ্ঞানিক দায়িত্ব। আজকের সবচেয়ে active research area। DL-এর "black box"-এর ভেতরে আলো জ্বালানো — পরবর্তী দশকের মূল চ্যালেঞ্জ।
অনুশীলন
-
হিসাব: একটি MLP-তে input=10, hidden=20, output=3। মোট ওজন (bias সহ) কতটি?
- Input → Hidden: $10 \times 20 = 200$ ওজন + $20$ bias = $220$।
- Hidden → Output: $20 \times 3 = 60$ ওজন + $3$ bias = $63$।
- মোট: $283$ parameter।
-
PyTorch: উপরের XOR কোডে hidden neuron সংখ্যা ২ করুন। কী হবে?
২ hidden neuron-এ ও XOR সমাধান হবে — কিন্তু training কম stable। কখনো converge করতে বেশি epoch লাগে। অনেক initialization-এ stuck হয়। ৪+ neuron robust।
-
চিন্তা: Bengali handwritten digit recognition (0-9) — একটি MLP design করুন। Input/hidden/output dimension কত?
- Input: 28×28 = 784 (flattened)
- Hidden 1: 256 + ReLU
- Hidden 2: 128 + ReLU
- Output: 10 + softmax
- Loss: CrossEntropy
- Total parameters ≈ 234K — modest। MNIST-এ ৯৭%+ achievable।
- আরও ভাল: CNN — যা পরের module।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ০৪ · Activation function — ReLU, sigmoid পরবর্তী পাঠ MLP-এর hidden layer-এর non-linearity যেখান থেকে আসে।
- পাঠ ০২ · XOR সমস্যা আগের পাঠ যা MLP-র জন্ম দিয়েছে।
- পাঠ ০৫ · Universal approximation সম্পর্কিত MLP কেন universal — গাণিতিক প্রমাণ।
- সব AI Courses দেখুন ABCL TECH Python, ML, DL, NLP, CV, GenAI, RL, MLOps — সব AI কোর্স একসাথে।