CH 26Phase 3 · Probability & Statistics for AI

Maximum Likelihood Estimation

১৫–২৫ মিনিট বাংলা · Math · Python
📖 একটি ছোট গল্প

একটি বাক্স থেকে ১০টি ball-এর ৭টি red, ৩টি blue। বাক্সে red ball-এর proportion p কত হলে এই data সবচেয়ে likely? উত্তর: p = 0.7। এটাই Maximum Likelihood Estimation — "data যা দেখছ, তাকে সবচেয়ে probable করে এমন parameter বের কর।" Linear regression থেকে GPT — সব এই principle-এর variant।

Intuitive Explanation

Data D = {x₁, x₂, ..., xₙ} এবং parameter θ-এর জন্য likelihood:

L(θ) = P(D | θ) = ∏ᵢ P(xᵢ | θ) (i.i.d. assumption)

MLE: এমন θ বের করা যা L(θ) maximize করে।

θMLE = argmaxθ L(θ)

Log-likelihood

Product → sum (numerically stable, derivative easier):

ℓ(θ) = log L(θ) = Σᵢ log P(xᵢ | θ)

Example: Biased Coin

n বার toss, k বার head। Bernoulli(p) likelihood:

L(p) = pk (1−p)n−k
ℓ(p) = k log p + (n−k) log(1−p)

Derivative = 0:

dℓ/dp = k/p − (n−k)/(1−p) = 0 ⟹ pMLE = k/n
💡 ইনসাইট
অর্থাৎ MLE-র উত্তর = empirical frequency — যা intuition-ও বলে।

MLE for Gaussian

Data x₁, ..., xₙ ~ N(μ, σ²)। Log-likelihood maximize করলে:

μMLE = (1/n) Σ xᵢ (sample mean)
σ²MLE = (1/n) Σ (xᵢ − μ)² (biased — n, n−1 নয়)

MLE always optimal নয়: variance estimator-এ biased। Unbiased চাইলে n−1 divisor (Bessel correction)।

MLE = Loss Minimization

Log-likelihood maximize = negative log-likelihood (NLL) minimize। এজন্য আধুনিক ML-এর প্রায় সব loss function আসলে NLL:

  • MSE loss = Gaussian noise-এর NLL: −log N(y; ŷ, σ²) ∝ (y − ŷ)²
  • Cross-entropy loss = Categorical distribution-এর NLL: −Σ yᵢ log ŷᵢ
  • Logistic loss = Bernoulli NLL: −[y log p + (1−y) log(1−p)]
✨ টিপ
প্রতিটি ML model = "training data-কে সবচেয়ে likely করে এমন parameter খোঁজা।" Gradient descent মূলত MLE solve করছে।

MLE vs MAP

θMAP = argmaxθ P(θ | D) = argmaxθ P(D | θ) · P(θ)

MAP = MLE + prior। Prior log-form-এ regularization হয়ে যায়:

  • Gaussian prior on θ → L2 regularization (weight decay)।
  • Laplace prior on θ → L1 regularization (sparsity)।

Python Implementation

pythonPython · NumPy
import numpy as np
from scipy.optimize import minimize

np.random.seed(0)

# 1) MLE for biased coin
n, k = 100, 67
p_mle = k / n
print(f"Coin MLE: p = {p_mle:.4f}")

# 2) MLE for Gaussian (mean, std)
data = np.random.normal(loc=5.0, scale=2.0, size=500)
mu_mle = data.mean()
sigma_mle = np.sqrt(((data - mu_mle)**2).mean())   # /n, not /(n-1)
print(f"\nGaussian MLE: mu={mu_mle:.4f}, sigma={sigma_mle:.4f}")

# 3) Numerical MLE via optimizer (general technique)
def neg_log_likelihood(params, x):
    mu, log_sigma = params
    sigma = np.exp(log_sigma)
    return 0.5 * np.sum(((x - mu) / sigma)**2) + len(x) * np.log(sigma)

res = minimize(neg_log_likelihood, x0=[0.0, 0.0], args=(data,))
mu_opt, log_sigma_opt = res.x
print(f"Optimizer:    mu={mu_opt:.4f}, sigma={np.exp(log_sigma_opt):.4f}")

# 4) Logistic regression via MLE (manual)
X = np.random.randn(200, 2)
y = (X[:, 0] + X[:, 1] > 0).astype(float)

def sigmoid(z): return 1 / (1 + np.exp(-z))

def nll_logistic(w, X, y):
    p = sigmoid(X @ w)
    eps = 1e-12
    return -np.mean(y * np.log(p + eps) + (1 - y) * np.log(1 - p + eps))

res = minimize(nll_logistic, x0=np.zeros(2), args=(X, y))
print(f"\nLogistic regression MLE weights: {res.x}")

AI/ML সংযোগ

  • Linear regression = MLE under Gaussian noise।
  • Logistic regression = MLE under Bernoulli output।
  • Softmax classifier = MLE under Categorical।
  • Neural network training = NLL minimize (MSE বা cross-entropy)।
  • Language models = next-token MLE: maximize Σ log P(wₜ | w<ₜ; θ)
  • VAE = ELBO = MLE-এর tractable lower bound।

Common Mistakes

  • Likelihood এবং probability-কে একই ভাবা — likelihood θ-এর function, integrate করলে 1 হয় না।
  • Log-likelihood ছাড়া raw product use করে numerical underflow।
  • MLE overfits small data-তে — তখন prior (MAP) বা Bayesian inference দরকার।
  • i.i.d. assumption violated হলে (time series, correlated data) MLE biased।

Practice Tasks

  1. Exponential distribution-এর MLE derive করুন: f(x; λ) = λe−λx
  2. Poisson(λ)-এর MLE derive করুন।
  3. Linear regression-এ MSE loss minimize করলে কেন Gaussian likelihood MLE আসে — দেখান।

Assignment

একটি logistic regression scratch থেকে implement করুন — gradient descent দিয়ে NLL minimize করে। Sklearn-এর LogisticRegression-এর সাথে weight ও accuracy compare করুন। তারপর L2 regularization যোগ করুন (Gaussian prior = MAP) এবং দেখান কীভাবে regularization weight magnitude কমায়।

Interview Questions

  1. MLE vs MAP — পার্থক্য এবং কখন কোনটি ব্যবহার করবেন?
  2. Linear regression-এ MSE-এর behind কোন distribution-এর assumption?
  3. Cross-entropy loss-এর সাথে MLE-এর সম্পর্ক?
  4. MLE consistent এবং asymptotically efficient — মানে কী?

Mini Project

"MLE Playground" — user একটি distribution choose করে (Bernoulli, Gaussian, Poisson, Exponential), data generate করে, এবং tool numerical optimizer দিয়ে MLE বের করে। সাথে log-likelihood surface 2D plot করে দেখায়।

Summary · সারসংক্ষেপ

  • MLE = "data দেখে এমন parameter খুঁজি যেটা data-কে সবচেয়ে likely করে।"
  • Log-likelihood = numerically stable, derivative-friendly।
  • MLE = NLL minimize = ML-এর সব loss function-এর origin।
  • MAP = MLE + prior = regularization-এর Bayesian interpretation।
  • Modern AI (linear regression থেকে LLM) সব MLE-এর variant।
✨ পরবর্তী পদক্ষেপ
Phase 3 complete! Chapter 27-এ Phase 4 (Optimization Mathematics) শুরু — Convex Functions দিয়ে।