Chapter 07

অ্যাক্টিভেশন ফাংশন

Activation Functions
🎬 কেন দরকার?
Activation function ছাড়া যত layer-ই দিন, পুরো নেটওয়ার্ক এক টুকরো linear function হয়ে যায় — মানে শুধু সরলরেখা আঁকতে পারবে। কিন্তু বাস্তব দুনিয়া তো বাঁকা! সেই বাঁক আনার কাজই activation function-এর।

Activation Function কী?

প্রতিটি নিউরনের আউটপুটে বসানো একটি function — যা non-linearity যোগ করে। এটাই মডেলকে complex pattern শিখতে সাহায্য করে।

জনপ্রিয় Activation Functions

১. Sigmoid

σ(x) = 1 / (1 + e⁻ˣ)

Output 0 থেকে 1-এর মধ্যে। Binary classification-এর শেষ layer-এ ব্যবহৃত। সমস্যা — gradient খুব ছোট হয়ে যায় ("vanishing gradient")।

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

২. Tanh

tanh(x) = (eˣ - e⁻ˣ) / (eˣ + e⁻ˣ)

Output -1 থেকে 1। Sigmoid-এর চেয়ে ভালো (zero-centered), কিন্তু vanishing gradient সমস্যা থেকেই যায়।

৩. ReLU — সবচেয়ে জনপ্রিয়

ReLU(x) = max(0, x)

খুব সরল — negative হলে 0, positive হলে অপরিবর্তিত। দ্রুত compute হয়, vanishing gradient সমস্যা নেই। বর্তমানে hidden layer-এর জন্য default পছন্দ।

def relu(x):
    return np.maximum(0, x)

৪. Leaky ReLU

LeakyReLU(x) = x যদি x > 0, নইলে 0.01x

ReLU-এর "dying ReLU" সমস্যা সমাধান করে — negative side-এ একটু gradient রাখে।

৫. Softmax — multi-class output

softmax(zᵢ) = e^zᵢ / Σ e^zⱼ

Multi-class classification-এর শেষ layer। সব output-এর যোগফল 1 — probability distribution।

def softmax(z):
    e = np.exp(z - np.max(z))
    return e / e.sum()

তুলনা — কোনটা কখন?

Function
Range
কোথায় ব্যবহার
Sigmoid
(0, 1)
Binary output layer
Tanh
(-1, 1)
RNN, পুরনো hidden layers
ReLU
[0, ∞)
Default hidden layers
Leaky ReLU
(-∞, ∞)
Dying ReLU এড়াতে
Softmax
(0, 1) sum=1
Multi-class output layer
GELU
smooth
Transformer (BERT, GPT)

Visualization — সব একসাথে

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 200)

plt.plot(x, 1/(1+np.exp(-x)), label="Sigmoid")
plt.plot(x, np.tanh(x), label="Tanh")
plt.plot(x, np.maximum(0, x), label="ReLU")
plt.plot(x, np.where(x>0, x, 0.01*x), label="Leaky ReLU")
plt.legend(); plt.grid(True); plt.show()

সাধারণ ভুল ধারণা

⚠️ যা এড়িয়ে চলবেন
  • Hidden layer-এ Sigmoid ব্যবহার — vanishing gradient সমস্যা।
  • Output layer-এ ReLU — probability পাওয়া যাবে না।
  • Multi-class output-এ Sigmoid — Softmax ব্যবহার করুন।

অনুশীলন

১. উপরের সব function plot করুন এবং তাদের derivative-ও plot করুন।

২. softmax([1, 2, 3]) হাতে calculate করে verify করুন।

মিনি প্রজেক্ট

🚀 আজকের চ্যালেঞ্জ
নিজের একটি activation function ডিজাইন করুন (যেমন: x * sigmoid(x) — এটার নাম Swish!)। Plot করে দেখুন কেমন দেখতে।

ইন্টারভিউ প্রশ্ন

  1. Activation function কেন non-linear হতে হয়?
  2. Vanishing gradient সমস্যা কী?
  3. ReLU-এর সুবিধা ও অসুবিধা।
  4. Sigmoid ও Softmax-এর পার্থক্য।

সারসংক্ষেপ

✨ এই অধ্যায়ে যা শিখলাম
  • Activation = নেটওয়ার্কে non-linearity আনে।
  • ReLU = hidden layer-এর default। Softmax = multi-class output।
  • পরের অধ্যায়ে দেখব নেটওয়ার্ক কীভাবে input থেকে output বের করে — Forward Propagation।