মূল content-এ যাও

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 হলো এর মসৃণ বিকল্প:

a=g(z),z=w⋅x+ba = g(z), \qquad z = w \cdot x + b

প্রতিটা neuron আগে zz (weighted sum) হিসাব করে, তারপর gg দিয়ে বাঁকায়।

main.py

কেন দরকার?

দুটো কারণে, দ্বিতীয়টা বেশি গুরুত্বপূর্ণ:

  1. মসৃণ — derivative (ঢাল) আছে, তাই gradient descent দিয়ে শেখা যায়
  2. Non-linear — activation ছাড়া যত layer-ই জোড়া লাগাও, পুরো network একটা সরলরেখা (linear function)-ই থাকে। Challenge-এ এটা নিজে প্রমাণ করবে।

প্রধান activation-গুলো

Functionসূত্রপরিসরকোথায়
Sigmoid11+e−z\frac{1}{1+e^{-z}}0 থেকে 1Binary output (probability)
Tanhtanh⁡(z)\tanh(z)−1 থেকে 1পুরনো RNN
ReLUmax⁡(0,z)\max(0, z)0 থেকে ∞Hidden layer-এর default
Leaky ReLUzz বা αz\alpha z−∞ থেকে ∞ReLU-র "মৃত neuron" সমস্যা এড়াতে
Softmaxezk∑jezj\frac{e^{z_k}}{\sum_j e^{z_j}}probability vectorMulti-class output

Derivative কেন গুরুত্বপূর্ণ

Training-এর সময় প্রতিটা layer-এর derivative গুণ হয় (backpropagation — এই module-এর শেষ lesson)। তাই activation-এর derivative কেমন, সেটা ঠিক করে network শিখতে পারবে কিনা:

main.py

Sigmoid-এর derivative কখনো 0.25-এর বেশি না, আর বড় ∣z∣|z|-এ প্রায় 0। ২০টা layer-এ গুণ করলে প্রায় শূন্য — প্রথম দিকের layer-গুলো প্রায় কিছুই শেখে না। একে বলে vanishing gradient। ReLU-র derivative positive দিকে সবসময় 1 — তাই ২০১০-এর দশকে ReLU আসার পর গভীর network train করা হঠাৎ সম্ভব হয়ে গেল।

Activation ছাড়া network = একটা line

দুটো layer, মাঝে activation নেই:

y=(xW1+b1)W2+b2=x(W1W2)⏟W+(b1W2+b2)⏟by = (x W_1 + b_1) W_2 + b_2 = x \underbrace{(W_1 W_2)}_{W} + \underbrace{(b_1 W_2 + b_2)}_{b}

দুই layer মিলে একটাই linear layer! ১০০টা layer হলেও একই — সব গুণফল মিলে একটা matrix। Activation (non-linearity) না থাকলে "deep" network আসলে একটা সাধারণ linear regression। Challenge-এ code দিয়ে এটা প্রমাণ করবে।

Exercise

Exercise

Activation function লেখো

+20 XP

তিনটা function লেখো — সবগুলো NumPy array নেবে, একই shape-এর array দেবে, loop ছাড়া:

  • relu(z) — negative হলে 0, নাহলে z
  • leaky_relu(z, alpha=0.01) — negative হলে alpha·z, নাহলে z
  • sigmoid_grad(z) — sigmoid-এর derivative: σ(z)·(1 − σ(z)), যেখানে σ(z) = 1 / (1 + e^(−z))
solution.py

Quiz

  1. Q1Hidden layer-এ সবচেয়ে বেশি ব্যবহৃত activation কোনটা?
  2. Q2Sigmoid-এর derivative-এর সর্বোচ্চ মান 0.25। ২০টা sigmoid layer-এর gradient গুণ করলে কী হয়?
  3. Q3Binary classification-এর শেষ layer-এ কোন activation?
0/3 answered

Challenge

Challenge

প্রমাণ: activation ছাড়া network একটা line

+50 XP

দুটো 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) আর কাজ করে না।

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

আধুনিক LLM-গুলো ReLU-র আরও মসৃণ রূপ ব্যবহার করে — GELU (GPT, BERT) আর SiLU/Swish (Llama-র মতো model):

main.py

তিনটাই দেখতে প্রায় একই — 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।