Hook — গণিত কেন ভয় পাবে না
অনেকে ভাবে ML মানে কঠিন গণিত — calculus, linear algebra, probability সব একসাথে। সত্যি কথা — তোমাকে PhD level math জানতে হবে না। দরকার শুধু intuition — কেন এই formula, কী ঘটছে ভেতরে।
এই অধ্যায়ে আমরা ৩টি স্তম্ভ ছুঁয়ে যাব — Linear Algebra, Calculus আর Probability।
১. Linear Algebra — Vector ও Matrix
Vector হলো সংখ্যার একটি তালিকা — যেমন একজন student এর [marks, hours, attendance] = [85, 6, 90]। প্রতিটি data point আসলে high-dimensional space এর একটি vector।
Matrix হলো vector এর collection — অর্থাৎ একটি table। ML এ পুরো dataset একটি matrix X, যেখানে প্রতি row একটি sample, প্রতি column একটি feature।
Dot Product — দুটি vector কতটা মিলে
Neural network এর প্রতিটি neuron এর কাজ আসলে একটি dot product — input vector আর weight vector এর।
২. Calculus — পরিবর্তনের গণিত
Derivative হলো — একটি function কতটা দ্রুত বদলাচ্ছে। f(x) = x² হলে, df/dx = 2x — মানে x যত বাড়ে, slope তত বাড়ে।
ML এ loss function এর derivative দেখে আমরা বুঝি — কোন দিকে parameter বদলালে loss কমবে। এটাই Gradient Descent এর মূল।
Partial Derivative
একাধিক variable থাকলে এক একটির derivative আলাদা করে নেওয়া হয় — সেটাই partial derivative। Loss L(w, b) এর জন্য ∂L/∂w আর ∂L/∂b আলাদা।
Chain Rule — Backpropagation এর হৃদয়
Neural network এ এক layer এর output পরের layer এর input। Chain rule দিয়ে আমরা শেষ থেকে শুরু পর্যন্ত gradient flow করাই।
৩. Probability — অনিশ্চয়তার ভাষা
ML কখনো 100% নিশ্চিত হতে পারে না — সবসময় probability দেয়। “এই email 92% chance এ spam।”
Conditional Probability ও Bayes Theorem
Naive Bayes classifier পুরোপুরি এই formula এর উপর দাঁড়িয়ে আছে। Spam detection, medical diagnosis — সব জায়গায় এটি।
Distribution
- Normal/Gaussian — bell curve, natural data এ।
- Bernoulli — yes/no event।
- Binomial — n বার এর মধ্যে k বার success।
Code — NumPy দিয়ে math
import numpy as np
# Vector
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print("Dot product:", np.dot(a, b)) # 32
print("Norm of a:", np.linalg.norm(a)) # length
# Matrix
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print("Matrix multiply:\n", A @ B)
print("Inverse of A:\n", np.linalg.inv(A))
print("Eigenvalues:", np.linalg.eigvals(A))# Numerical derivative of f(x) = x^2 at x = 3
def f(x): return x ** 2
h = 1e-5
x = 3
derivative = (f(x + h) - f(x)) / h
print("df/dx at x=3:", derivative) # ~6.0import numpy as np
# 1000 coin tosses
tosses = np.random.choice(["H", "T"], size=1000)
p_head = np.mean(tosses == "H")
print("P(Head):", p_head)
# Gaussian distribution
samples = np.random.normal(loc=0, scale=1, size=10000)
print("Mean:", samples.mean(), "Std:", samples.std())Common Mistakes
গণিত মুখস্থ করার জিনিস না — intuition তৈরি করার জিনিস।
- Matrix multiplication এ A·B ≠ B·A — order important।
- Derivative শূন্য মানে minimum না — saddle point ও হতে পারে।
- Independent ≠ Mutually exclusive — দুটি আলাদা জিনিস।
- Probability কে percentage এর সাথে গুলিয়ে ফেলা।
Practice Tasks
- Task 1: হাতে কাগজে [2,3] আর [4,1] এর dot product বের করো, তারপর NumPy দিয়ে মিলিয়ে দেখো।
- Task 2: f(x) = 3x² + 2x এর derivative লিখো, x=5 এ মান বের করো।
- Task 3: একটি dice ২ বার ছুড়লে sum = 7 এর probability বের করো।
Mini Project — Gradient Descent by Hand
f(w) = (w − 4)² function এর জন্য gradient descent লেখো। w = 0 থেকে শুরু করে learning rate 0.1 দিয়ে ২০ step চালাও। প্রতিটি step এর w ও loss print করো — দেখো কীভাবে w → 4 এ পৌঁছায়।
Matplotlib দিয়ে loss vs step graph আঁকো — convergence curve টা দেখতে অসাধারণ লাগবে।
Summary
Linear Algebra = data এর ভাষা, Calculus = শেখার ভাষা, Probability = অনিশ্চয়তার ভাষা।
- Vector, matrix, dot product — data representation।
- Derivative, gradient, chain rule — optimization।
- Probability, Bayes — uncertainty modeling।