মূল content-এ যাও

Mathematics for AI/Functions ও Graph/Lesson 04

Σ notation: সূত্র পড়তে শেখা

Σ আর Π চিহ্ন, index আর subscript, ML paper-এর সূত্র পড়া — আর যেকোনো সূত্রকে loop ছাড়া এক লাইনের NumPy code-এ অনুবাদ করা।

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

সহজ ভাষায়

Σ (গ্রিক অক্ষর sigma) মানে "সব যোগ করো":

∑i=1nxi=x1+x2+⋯+xn\sum_{i=1}^{n} x_i = x_1 + x_2 + \dots + x_n

পড়ো: "ii = 1 থেকে nn পর্যন্ত, প্রতিটা xix_i যোগ করো।"

  • নিচে i=1i = 1 — কোথা থেকে শুরু
  • উপরে nn — কোথায় শেষ
  • ডানে xix_i — প্রতিটা ধাপে কী যোগ হবে

এটা আসলে একটা loop:

main.py

কেন দরকার?

ML-এর documentation, paper, এমনকি scikit-learn-এর help page — সূত্রে ভরা। Σ পড়তে না পারলে মনে হয় একটা অচেনা ভাষা। আসলে প্রতিটা সূত্র একটা ছোট program — আর এই lesson-এর পর তুমি সেগুলো সরাসরি NumPy code-এ লিখতে পারবে।

পরিচিত সূত্র, নতুন চোখে

তুমি এগুলো আগেই code-এ লিখেছো — এবার সূত্রে দেখো:

গড় (mean):

xˉ=μ=1n∑i=1nxi\bar{x} = \mu = \frac{1}{n} \sum_{i=1}^{n} x_i

MSE:

MSE=1n∑i=1n(yi−y^i)2\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} \left( y_i - \hat{y}_i \right)^2

Dot product (দুটো vector):

w⋅x=∑j=1dwjxj\mathbf{w} \cdot \mathbf{x} = \sum_{j=1}^{d} w_j x_j
main.py

প্যাটার্নটা দেখো: Σ-এর ভেতরের অংশ পুরো array-এর ওপর হিসাব করো, তারপর .sum()। আর সামনে 1n\frac{1}{n} থাকলে .mean()।

সূত্র → code: অনুবাদের নিয়ম

সূত্রেমানেNumPy
xix_ix-এর i-তম মানx[i] (কিন্তু সাধারণত পুরো x একবারে)
∑i\sum_iসব i-এর জন্য যোগ.sum()
1n∑i\frac{1}{n}\sum_iগড়.mean()
∏i\prod_iসব i-এর জন্য গুণ.prod() (কিন্তু log নিয়ে যোগ নিরাপদ!)
max⁡i\max_iসবচেয়ে বড়.max()
arg⁡max⁡i\arg\max_iসবচেয়ে বড়টা কোন i-তে.argmax()
XijX_{ij}i-তম row, j-তম columnX[i, j]
∑jXij\sum_j X_{ij}প্রতিটা row-এর যোগX.sum(axis=1)

দুটো index: double sum

Data matrix XX-এ nnটা sample (row), ddটা feature (column):

∑i=1n∑j=1dXij\sum_{i=1}^{n} \sum_{j=1}^{d} X_{ij}
main.py

ভেতরের Σ (jj ধরে) মানে প্রতিটা row-এর ভেতরে যোগ — axis=1। NumPy module-এর axis এখানে এসে অর্থবহ হলো।

একটা real সূত্র পড়া: softmax

Classification network-এর শেষ ধাপ:

softmax(z)k=ezk∑j=1Kezj\text{softmax}(\mathbf{z})_k = \frac{e^{z_k}}{\sum_{j=1}^{K} e^{z_j}}

ধাপে ধাপে পড়ো:

  1. z\mathbf{z} — score-এর vector, KKটা class
  2. উপরে: kk-তম class-এর score-এর ee-ঘাত
  3. নিচে: সব class-এর ee-ঘাতের যোগফল
  4. তাই সব output যোগ করলে 1 — একটা probability distribution
main.py

চার লাইন সূত্র, দুই লাইন code।

Exercise

Exercise

সূত্র থেকে variance

+20 XP

Variance-এর সূত্র (পুরো population-এর):

σ² = (1/n) · Σ (xᵢ − μ)², যেখানে μ = (1/n) · Σ xᵢ

variance(x) function লেখো এই সূত্র হুবহু অনুসরণ করে — NumPy দিয়ে, loop ছাড়া, আর np.var ব্যবহার না করে। একটা float return করবে।

solution.py

Quiz

  1. Q1Σ (i = 1 থেকে 4) i² কত?
  2. Q2ML paper-এ xᵢ⁽ʲ⁾ বা x_ij সাধারণত কী বোঝায়?
  3. Q3Σ চিহ্নওয়ালা সূত্র NumPy-তে লেখার সবচেয়ে ভালো উপায়?
0/3 answered

Challenge

Challenge

R² score

+50 XP

Regression model কতটা ভালো — R² (coefficient of determination):

R² = 1 − Σ (yᵢ − ŷᵢ)² ÷ Σ (yᵢ − ȳ)²

  • উপরের অংশ: model-এর ভুল
  • নিচের অংশ: শুধু গড় বললে কত ভুল হতো
  • R² = 1 মানে নিখুঁত; 0 মানে model গড়ের চেয়ে ভালো না; negative মানে গড়ের চেয়েও খারাপ!

r2_score(y, y_pred) লেখো — loop ছাড়া, float return করবে।

solution.py

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

একটা সূত্রের তিনটা রূপ — loop, vectorized, library — একই উত্তর, কিন্তু গতি আলাদা:

main.py

Paper-এ সূত্রটা যেভাবে লেখা, NumPy-তে প্রায় সেভাবেই লেখা যায় — আর সেটাই সবচেয়ে দ্রুত। Research paper পড়ে নিজে implement করা AI engineer-এর একটা মূল্যবান skill।

Interview প্রশ্ন

  • Beginner: ∑i=1nxi\sum_{i=1}^{n} x_i কী বোঝায়? NumPy-তে কীভাবে লিখবে?
  • Intermediate: R² কী মাপে? R² negative হওয়া কীভাবে সম্ভব?
  • Advanced: Variance-এর সূত্রে কখনো 1n\frac{1}{n}, কখনো 1n−1\frac{1}{n-1} — পার্থক্য কী আর কখন কোনটা? (Population বনাম sample — Bessel's correction। NumPy-তে ddof।)

এরপর কী?

🎉 Functions ও Graph module শেষ — function, line, exponent, log আর Σ। এখন তুমি ML-এর সূত্রের বর্ণমালা পড়তে পারো।

পরের module: Vectors — সংখ্যার একটা তালিকা আসলে দিক আর দূরত্ব। "দুটো শব্দ বা দুটো document কতটা একই রকম?" — embedding আর RAG-এর একদম ভিত্তি।