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-এর ওপর আলাদাভাবে, কিন্তু একসাথে:
কেন দরকার?
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 নেয়:
| Function | কাজ | ML-এ কোথায় |
|---|---|---|
np.exp | eˣ | sigmoid, softmax |
np.log | ln | cross-entropy loss |
np.sqrt | বর্গমূল | RMSE, normalization |
np.abs | পরম মান | MAE |
np.clip | সীমার মধ্যে রাখা | log(0) এড়াতে, pixel 0–255 |
np.maximum | দুটোর বড়টা (element-wise) | ReLU |
তুলনা আর np.where
(marks >= 40).sum() — True-কে 1, False-কে 0 ধরে যোগ। "কতগুলো শর্ত মানে" গোনার সবচেয়ে সহজ উপায়।
Math intuition: activation function
Neural network-এর প্রতিটা layer-এর পরে একটা activation function থাকে — যেটা network-কে বাঁকা (non-linear) pattern শেখার ক্ষমতা দেয়। সবচেয়ে common তিনটা নিজেই লিখে ফেলি:
ReLU: negative হলে 0, নাহলে নিজেই -> সবচেয়ে জনপ্রিয়, সহজ আর দ্রুত
sigmoid: সবকিছু 0 থেকে 1-এ -> probability (binary classification)
tanh: সবকিছু -1 থেকে 1-এ -> পুরনো RNN-এ
চলো graph-এ দেখি:
(Matplotlib module-এ graph আঁকা বিস্তারিত শিখবো।)
Numerical সমস্যা: inf আর nan
Computer-এ float-এর একটা সীমা আছে:
inf (অসীম) আর nan (Not a Number) একবার ঢুকলে সব হিসাবে ছড়িয়ে পড়ে — training-এ হঠাৎ "loss: nan" দেখার সবচেয়ে common কারণ। Challenge-এ এর একটা সমাধান লিখবে।
Exercise
Exercise
Sigmoid function
Sigmoid যেকোনো সংখ্যাকে 0 আর 1-এর মধ্যে নিয়ে আসে — logistic regression-এর হৃদয়:
sigmoid(x) = 1 / (1 + e^(−x))
sigmoid(x) function লেখো যেটা একটা সংখ্যা বা পুরো array — দুটোতেই কাজ করে। np.exp ব্যবহার করো, loop ছাড়া।
Quiz
Challenge
Challenge
Stable softmax
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 থেকে সবচেয়ে বড়টা বিয়োগ করো (ফলাফল গাণিতিকভাবে একই থাকে)।
বাস্তবে কোথায় ব্যবহার হয়?
একটা ছোট neural network-এর forward pass — score থেকে probability, তারপর loss:
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।