📖 একটি ছোট গল্প
১৯৫৮ সালে Frank Rosenblatt একটি যন্ত্র বানালেন যা ছবি দেখে "ত্রিভুজ" না "বৃত্ত" বলতে পারত — নাম Perceptron। New York Times লিখল: "শীঘ্রই এই যন্ত্র হাঁটতে, কথা বলতে, নিজেকে চিনতে শিখবে।" বাস্তবে সেটা শুধু linear সমস্যা solve করতে পারত — XOR-ও না! কিন্তু সেই একটি neuron-ই আজকের GPT-এর পূর্বপুরুষ।
Artificial Neuron
একটি neuron = weighted sum + activation:
z = w·x + b, a = σ(z)
- x ∈ ℝⁿ — input vector
- w ∈ ℝⁿ — weights (শেখা হয়)
- b — bias (shift)
- σ — activation (non-linearity)
Perceptron Rule
Binary classifier: ŷ = sign(w·x + b)। ভুল হলে update:
w ← w + η (y − ŷ) x
⚠️ সতর্কতা
Perceptron শুধু linearly separable data-তে converge করে। XOR-এর জন্য multi-layer দরকার।
Multi-Layer Perceptron
একাধিক layer stack করলে non-linear function approximate করা যায়:
h⁽¹⁾ = σ(W⁽¹⁾x + b⁽¹⁾), h⁽²⁾ = σ(W⁽²⁾h⁽¹⁾ + b⁽²⁾), ŷ = W⁽³⁾h⁽²⁾ + b⁽³⁾
Universal Approximation Theorem: একটি hidden layer যথেষ্ট neuron সহ যেকোনো continuous function approximate করতে পারে।
Python Implementation
pythonPython · NumPy
import numpy as np
# 2-layer MLP for XOR
X = np.array([[0,0],[0,1],[1,0],[1,1]])
y = np.array([[0],[1],[1],[0]])
np.random.seed(0)
W1 = np.random.randn(2, 4); b1 = np.zeros((1, 4))
W2 = np.random.randn(4, 1); b2 = np.zeros((1, 1))
def sigmoid(z): return 1/(1+np.exp(-z))
for epoch in range(5000):
# forward
h = sigmoid(X @ W1 + b1)
yhat = sigmoid(h @ W2 + b2)
loss = np.mean((yhat - y)**2)
# backward
d2 = (yhat - y) * yhat * (1 - yhat)
d1 = (d2 @ W2.T) * h * (1 - h)
W2 -= 0.5 * h.T @ d2; b2 -= 0.5 * d2.sum(0, keepdims=True)
W1 -= 0.5 * X.T @ d1; b1 -= 0.5 * d1.sum(0, keepdims=True)
print("XOR predictions:", yhat.round(2).ravel())Practice
- উপরের code-এ hidden size 4 → 2 করলে কী হয়?
- Sigmoid এর জায়গায় ReLU বসান। convergence দ্রুত হলো কি?
Summary · সারসংক্ষেপ
- Neuron = σ(w·x + b) — সব deep network-এর atom।
- Single perceptron linear; MLP দিয়ে non-linear function approximate করা যায়।
- Universal Approximation: hidden layer যথেষ্ট হলে প্রায় যেকোনো function শেখা সম্ভব।