মূল content-এ যাও

Python for AI/NumPy/Lesson 36

Vectorized Operations

Element-wise হিসাব, universal function (np.exp, np.log, np.sqrt), np.where দিয়ে শর্তভিত্তিক মান — আর এগুলো দিয়ে neural network-এর activation function নিজে লেখা।

সময়
22 মিনিট
Exercise
1
Challenge
1
Quiz
3 প্রশ্ন

সহজ ভাষায়

NumPy-তে প্রায় সব গাণিতিক operation element-wise — প্রতিটা item-এর ওপর আলাদাভাবে, কিন্তু একসাথে:

main.py

কেন দরকার?

Neural network আসলে অনেকগুলো element-wise operation আর matrix গুণ পরপর সাজানো। Activation function (ReLU, sigmoid), loss function (MSE, cross-entropy), normalization — সব এই lesson-এর tool দিয়ে লেখা।

Universal functions (ufunc)

math.sqrt শুধু একটা সংখ্যা নেয়। np.sqrt পুরো array নেয়:

main.py
FunctionকাজML-এ কোথায়
np.expeˣsigmoid, softmax
np.loglncross-entropy loss
np.sqrtবর্গমূলRMSE, normalization
np.absপরম মানMAE
np.clipসীমার মধ্যে রাখাlog(0) এড়াতে, pixel 0–255
np.maximumদুটোর বড়টা (element-wise)ReLU

তুলনা আর np.where

main.py

(marks >= 40).sum() — True-কে 1, False-কে 0 ধরে যোগ। "কতগুলো শর্ত মানে" গোনার সবচেয়ে সহজ উপায়।

Math intuition: activation function

Neural network-এর প্রতিটা layer-এর পরে একটা activation function থাকে — যেটা network-কে বাঁকা (non-linear) pattern শেখার ক্ষমতা দেয়। সবচেয়ে common তিনটা নিজেই লিখে ফেলি:

main.py
ReLU:     negative হলে 0, নাহলে নিজেই       -> সবচেয়ে জনপ্রিয়, সহজ আর দ্রুত
sigmoid:  সবকিছু 0 থেকে 1-এ               -> probability (binary classification)
tanh:     সবকিছু -1 থেকে 1-এ              -> পুরনো RNN-এ

চলো graph-এ দেখি:

main.py

(Matplotlib module-এ graph আঁকা বিস্তারিত শিখবো।)

Numerical সমস্যা: inf আর nan

Computer-এ float-এর একটা সীমা আছে:

main.py

inf (অসীম) আর nan (Not a Number) একবার ঢুকলে সব হিসাবে ছড়িয়ে পড়ে — training-এ হঠাৎ "loss: nan" দেখার সবচেয়ে common কারণ। Challenge-এ এর একটা সমাধান লিখবে।

Exercise

Exercise

Sigmoid function

+20 XP

Sigmoid যেকোনো সংখ্যাকে 0 আর 1-এর মধ্যে নিয়ে আসে — logistic regression-এর হৃদয়:

sigmoid(x) = 1 / (1 + e^(−x))

sigmoid(x) function লেখো যেটা একটা সংখ্যা বা পুরো array — দুটোতেই কাজ করে। np.exp ব্যবহার করো, loop ছাড়া।

solution.py

Quiz

  1. Q1np.array([1, 2, 3]) * np.array([4, 5, 6]) কত?
  2. Q2np.where(x > 0, x, 0) কী করে?
  3. Q3np.log(0) কী দেয়?
0/3 answered

Challenge

Challenge

Stable softmax

+50 XP

Softmax একটা score-এর vector-কে probability-তে রূপান্তর করে (সব 0 থেকে 1, যোগফল 1) — প্রতিটা classification neural network-এর শেষ ধাপ:

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

softmax(x) লেখো (1D array)। সাবধান: np.exp(1000) = inf — বড় score-এ সাধারণ সূত্র nan দেয়। সমাধান: হিসাবের আগে সব score থেকে সবচেয়ে বড়টা বিয়োগ করো (ফলাফল গাণিতিকভাবে একই থাকে)।

solution.py

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

একটা ছোট neural network-এর forward pass — score থেকে probability, তারপর loss:

main.py

Softmax + cross-entropy — প্রায় সব classification model (image classifier থেকে LLM-এর পরের token prediction পর্যন্ত) ঠিক এই হিসাব করে। + 1e-12 আছে যাতে কখনো log(0) না হয়।

Interview প্রশ্ন

  • Beginner: Element-wise operation কী? * আর @-এর পার্থক্য কী?
  • Intermediate: ReLU, sigmoid আর tanh-এর পার্থক্য কী? Hidden layer-এ ReLU কেন বেশি জনপ্রিয়?
  • Advanced: Softmax-এ max বিয়োগ করলে ফলাফল কেন বদলায় না? (গাণিতিক প্রমাণ দাও।) "Vanishing gradient" সমস্যায় sigmoid-এর ভূমিকা কী?

এরপর কী?

এতক্ষণ একই shape-এর দুটো array নিয়ে হিসাব করেছি। কিন্তু একটা matrix-এর প্রতিটা row-তে একটা vector যোগ করতে চাইলে? NumPy-র সবচেয়ে শক্তিশালী (আর বিভ্রান্তিকর) feature — পরের lesson: Broadcasting।