Chapter 03

ডিপ লার্নিং-এর গণিত

Mathematics for Deep Learning
🎬 ভয় পাবেন না!
গণিত শুনলেই অনেকে পালিয়ে যায়। কিন্তু Deep Learning-এ আপনাকে ম্যাথমেটিশিয়ান হতে হবে না — শুধু চারটি জিনিস বুঝলেই চলবে: Linear Algebra, Calculus (derivative), Probability, এবং Optimization-এর ধারণা। আমরা এগুলো বাংলায়, উদাহরণসহ শিখব।

চারটি স্তম্ভ — এক নজরে

Linear Algebra

Vector, Matrix — নিউরাল নেটওয়ার্কের ভাষা।

Calculus

Derivative — মডেল কীভাবে শেখে তার চাবি।

Probability

অনিশ্চয়তা পরিমাপ — classification-এর ভিত্তি।

Optimization

Loss কমানোর গণিত — Gradient Descent।

১. Linear Algebra — সংখ্যার ঘর

Scalar, Vector, Matrix, Tensor

একটি সংখ্যা — যেমন 5 — হলো Scalar। কয়েকটি সংখ্যা একসাথে — [3, 1, 4] — হলো Vector। একটি টেবিলের মতো সংখ্যা — হলো Matrix। আর তিন বা তার বেশি মাত্রায় সংখ্যার সাজানো রূপ — হলো Tensor (PyTorch/TensorFlow নাম এখানেই)।

import numpy as np

scalar = 5
vector = np.array([1, 2, 3])           # shape: (3,)
matrix = np.array([[1, 2], [3, 4]])    # shape: (2, 2)
tensor = np.random.rand(3, 4, 5)       # shape: (3, 4, 5) — যেমন RGB ছবি

Vector Dot Product — নিউরনের মূল কাজ

একটি নিউরন আসলে কী করে? প্রতিটি input-কে তার weight দিয়ে গুণ করে, সব যোগ করে, একটি সংখ্যা বের করে। এটাই dot product।

output = w₁x₁ + w₂x₂ + w₃x₃ + b
x = np.array([2, 3, 4])      # input
w = np.array([0.5, 0.2, 0.1]) # weights
b = 1.0                       # bias

output = np.dot(w, x) + b     # 1 + 1.6 + 0.6 + 0.4 = 2.6

Matrix Multiplication — পুরো layer-এর কাজ

একসাথে ১০০টি নিউরন কাজ করলে সেটা matrix multiplication। DL-এর প্রতিটা layer-এ এটাই হয়।

X = np.random.rand(32, 784)   # 32টি ছবি, প্রতিটায় 784 pixel
W = np.random.rand(784, 128)  # 128 নিউরনের weight matrix
b = np.random.rand(128)

output = X @ W + b            # shape: (32, 128)

২. Calculus — শেখার চাবি

Derivative কী?

Derivative হলো — কোনো একটি পরিবর্তনের সাথে আরেকটি কত দ্রুত পরিবর্তন হয়। যেমন গাড়ির speed হলো দূরত্বের derivative সময়ের সাপেক্ষে।

f(x) = x² → f'(x) = 2x

DL-এ derivative-ই বলে দেয় — "weight একটু বাড়ালে loss বাড়বে না কমবে?" এটার ভিত্তিতেই মডেল নিজেকে ঠিক করে।

Partial Derivative

যখন একটি function-এর একাধিক variable থাকে, প্রতিটির আলাদা derivative বের করতে হয়। DL-এ লক্ষ লক্ষ weight থাকে — প্রতিটির জন্য partial derivative লাগে।

f(x, y) = x²y + 3y → ∂f/∂x = 2xy, ∂f/∂y = x² + 3

Chain Rule — Backpropagation-এর প্রাণ

Chain rule বলে — যদি y নির্ভর করে u-এর উপর, আর u নির্ভর করে x-এর উপর, তাহলে y-এর derivative বের করতে দুটোকে গুণ করতে হবে।

dy/dx = (dy/du) × (du/dx)
🔑 কেন গুরুত্বপূর্ণ?
Deep Learning-এ অনেকগুলো layer থাকে — শেষ layer-এর ভুল থেকে শুরু করে প্রথম layer পর্যন্ত derivative হিসাব করতে হয়। সেটা সম্ভব হয় chain rule-এর কারণে। এটাই backpropagation।

৩. Probability — অনিশ্চয়তা পরিমাপ

Image classifier যখন বলে — "এটা ৯২% সম্ভাবনায় বিড়াল", সেটা probability। DL-এ output প্রায়ই একটি probability distribution।

Softmax — multi-class output

Softmax কয়েকটি সংখ্যাকে এমন সংখ্যায় বদলে দেয় যেগুলো ০ থেকে ১-এর মধ্যে এবং সব মিলিয়ে যোগফল ১।

def softmax(z):
    exp_z = np.exp(z - np.max(z))   # stability
    return exp_z / exp_z.sum()

print(softmax(np.array([2.0, 1.0, 0.1])))
# [0.659, 0.242, 0.099]

Cross-Entropy Loss

Classification-এ এটাই সবচেয়ে ব্যবহৃত loss function। যত predicted probability সঠিক class থেকে দূরে, তত loss বেশি।

Loss = -Σ y_true × log(y_pred)

৪. Optimization — Loss কমানোর গণিত

কল্পনা করুন আপনি একটি পাহাড়ের চূড়ায় দাঁড়িয়ে — চোখ বন্ধ। আপনি জানেন না নিচে কোথায় উপত্যকা। প্রতিটি পদক্ষেপে আপনি অনুভব করেন — কোন দিকে নামলে দ্রুত নিচে যাওয়া যাবে। এটাই Gradient Descent

w_new = w_old - α × (∂Loss/∂w)

এখানে α হলো learning rate — প্রতি পদক্ষেপ কতটা বড় হবে।

# একটি ছোট্ট উদাহরণ: f(w) = (w - 3)² কে minimize করা
w = 0.0
lr = 0.1

for step in range(50):
    grad = 2 * (w - 3)
    w = w - lr * grad

print(w)   # প্রায় 3.0 — সঠিক উত্তর

সাধারণ ভুল ধারণা

⚠️ যা সত্যি নয়
  • "DL শিখতে PhD লেভেলের গণিত লাগে" — না, এই অধ্যায়ের intuition-ই যথেষ্ট।
  • "Derivative মানেই জটিল" — না, এটা শুধু "পরিবর্তনের হার"।
  • "Matrix multiplication মুখস্থ করতে হবে" — না, NumPy আপনার হয়ে করবে।
  • "Gradient Descent সবসময় optimal solution খুঁজে দেয়" — না, local minima-তে আটকে যেতে পারে।

অনুশীলন

১. কাগজে হাতে: f(x) = 3x² + 2x + 5 এর derivative বের করুন।

২. NumPy দিয়ে দুটি 4×4 random matrix বানিয়ে তাদের গুণফল বের করুন।

৩. softmax([1, 2, 3, 4]) হাতে calculate করে NumPy answer-এর সাথে মিলান।

৪. উপরের Gradient Descent কোডে lr পরিবর্তন করুন (0.01, 0.5, 1.5) — কী হয় observe করুন।

মিনি প্রজেক্ট

🚀 আজকের চ্যালেঞ্জ
Gradient Descent দিয়ে f(w₁, w₂) = (w₁ - 2)² + (w₂ + 1)² minimize করুন। শুরু করুন w₁=0, w₂=0 থেকে, learning rate 0.1, 100 steps চালান। আশা করছি শেষে w₁ ≈ 2, w₂ ≈ -1

ইন্টারভিউ প্রশ্ন

  1. Vector ও Matrix-এর মধ্যে পার্থক্য কী?
  2. Chain rule কেন backpropagation-এ গুরুত্বপূর্ণ?
  3. Softmax কী এবং কোথায় ব্যবহৃত হয়?
  4. Learning rate বেশি হলে কী সমস্যা হয়?
  5. Gradient কী এবং এটা কী নির্দেশ করে?

সারসংক্ষেপ

✨ এই অধ্যায়ে যা শিখলাম
  • Scalar, Vector, Matrix, Tensor — DL-এর building block।
  • Dot product = নিউরনের কাজ; Matrix multiplication = layer-এর কাজ।
  • Derivative = পরিবর্তনের হার; Chain rule = backpropagation-এর ভিত্তি।
  • Softmax + Cross-Entropy = classification-এর জুড়ি।
  • Gradient Descent = loss কমানোর algorithm।
  • পরের অধ্যায়ে শিখব — ডেটা কীভাবে preprocess করতে হয়।