Deep Learning/Neural Network-এর ভিত্তি/Lesson 02
Activation functions
Step-এর বদলে মসৃণ function কেন — sigmoid, tanh, ReLU, Leaky ReLU আর তাদের derivative; আর সবচেয়ে গুরুত্বপূর্ণ প্রমাণ — activation ছাড়া যত layer-ই দাও, পুরো network একটা সরলরেখাই থাকে।
- সময়
- 22 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
Perceptron-এর শেষে step function — হঠাৎ 0 থেকে 1 লাফ। সমস্যা: weight সামান্য বদলালে output প্রায় কখনো বদলায় না, তাই "কোন দিকে সরলে ভালো হবে" বোঝার উপায় নেই। Activation function হলো এর মসৃণ বিকল্প:
প্রতিটা neuron আগে (weighted sum) হিসাব করে, তারপর দিয়ে বাঁকায়।
কেন দরকার?
দুটো কারণে, দ্বিতীয়টা বেশি গুরুত্বপূর্ণ:
- মসৃণ — derivative (ঢাল) আছে, তাই gradient descent দিয়ে শেখা যায়
- Non-linear — activation ছাড়া যত layer-ই জোড়া লাগাও, পুরো network একটা সরলরেখা (linear function)-ই থাকে। Challenge-এ এটা নিজে প্রমাণ করবে।
প্রধান activation-গুলো
| Function | সূত্র | পরিসর | কোথায় |
|---|---|---|---|
| Sigmoid | 0 থেকে 1 | Binary output (probability) | |
| Tanh | −1 থেকে 1 | পুরনো RNN | |
| ReLU | 0 থেকে ∞ | Hidden layer-এর default | |
| Leaky ReLU | বা | −∞ থেকে ∞ | ReLU-র "মৃত neuron" সমস্যা এড়াতে |
| Softmax | probability vector | Multi-class output |
Derivative কেন গুরুত্বপূর্ণ
Training-এর সময় প্রতিটা layer-এর derivative গুণ হয় (backpropagation — এই module-এর শেষ lesson)। তাই activation-এর derivative কেমন, সেটা ঠিক করে network শিখতে পারবে কিনা:
Sigmoid-এর derivative কখনো 0.25-এর বেশি না, আর বড় -এ প্রায় 0। ২০টা layer-এ গুণ করলে প্রায় শূন্য — প্রথম দিকের layer-গুলো প্রায় কিছুই শেখে না। একে বলে vanishing gradient। ReLU-র derivative positive দিকে সবসময় 1 — তাই ২০১০-এর দশকে ReLU আসার পর গভীর network train করা হঠাৎ সম্ভব হয়ে গেল।
Activation ছাড়া network = একটা line
দুটো layer, মাঝে activation নেই:
দুই layer মিলে একটাই linear layer! ১০০টা layer হলেও একই — সব গুণফল মিলে একটা matrix। Activation (non-linearity) না থাকলে "deep" network আসলে একটা সাধারণ linear regression। Challenge-এ code দিয়ে এটা প্রমাণ করবে।
Exercise
Exercise
Activation function লেখো
তিনটা function লেখো — সবগুলো NumPy array নেবে, একই shape-এর array দেবে, loop ছাড়া:
relu(z)— negative হলে 0, নাহলে zleaky_relu(z, alpha=0.01)— negative হলে alpha·z, নাহলে zsigmoid_grad(z)— sigmoid-এর derivative: σ(z)·(1 − σ(z)), যেখানে σ(z) = 1 / (1 + e^(−z))
Quiz
Challenge
Challenge
প্রমাণ: activation ছাড়া network একটা line
দুটো linear layer, মাঝে কোনো activation নেই:
h = x · W1 + b1, y = h · W2 + b2
collapse(W1, b1, W2, b2) লেখো যেটা একটাই (W, b) return করে, যাতে x · W + b হুবহু একই output দেয়। (সূত্র নিজে বের করো — h-এর মান y-এর সমীকরণে বসাও।)
তারপর test দেখাবে যে মাঝে ReLU দিলে এমন কোনো একক (W, b) আর কাজ করে না।
বাস্তবে কোথায় ব্যবহার হয়?
আধুনিক LLM-গুলো ReLU-র আরও মসৃণ রূপ ব্যবহার করে — GELU (GPT, BERT) আর SiLU/Swish (Llama-র মতো model):
তিনটাই দেখতে প্রায় একই — positive দিকে প্রায় সরলরেখা, negative দিকে প্রায় 0 — কিন্তু 0-এর কাছে মসৃণ। Activation বাছাইয়ের এই সূক্ষ্ম পার্থক্য বড় model-এ সামান্য কিন্তু মাপা যায় এমন উন্নতি দেয়।
Interview প্রশ্ন
- Beginner: Activation function কেন দরকার?
- Intermediate: Vanishing gradient কী? ReLU কীভাবে সাহায্য করে?
- Advanced: "Dying ReLU" সমস্যা কী? Leaky ReLU বা GELU কীভাবে এটা সামলায়?
এরপর কী?
Neuron আর activation হাতে। এবার অনেকগুলো neuron মিলিয়ে layer, আর অনেকগুলো layer মিলিয়ে network — input থেকে output পর্যন্ত data কীভাবে যায়। পরের lesson: Forward propagation।