Phân Bố Xác Suất (Probability Distributions)¶
Phân bố xác suất mô tả cách các kết quả ngẫu nhiên phân bố trên các giá trị khả dĩ. File này liệt kê các phân bố rời rạc và liên tục chính: Bernoulli, nhị thức, Poisson, Gauss, mũ, beta, và nhiều hơn nữa — kèm công thức, trực giác, và ứng dụng ML (hàm mất mát, tiên nghiệm, mô hình nhiễu) cho mỗi loại.
-
Trong Chương 4 chúng ta đã giới thiệu biến ngẫu nhiên, PMF, PDF, và CDF. Ở đây chúng ta liệt kê các phân bố xác suất quan trọng nhất bạn sẽ gặp trong ML và thống kê, kèm trực giác, công thức, kỳ vọng và phương sai cho mỗi loại.
-
Tóm tắt nhanh ba hàm cốt lõi (xem Chương 4 để biết định nghĩa đầy đủ):
- PMF \(P(X = x)\): cho xác suất của mỗi kết quả rời rạc. Các cột trong biểu đồ cột.
- PDF \(f(x)\): cho mật độ tại mỗi điểm đối với biến liên tục. Diện tích dưới đường cong giữa hai điểm là xác suất.
- CDF \(F(x) = P(X \le x)\): xác suất tích lũy đến \(x\). Luôn đi từ 0 đến 1 và không bao giờ giảm.
-
Giá đỡ (support) của một phân bố là tập các giá trị mà PMF hoặc PDF dương. Với một xúc xắc, giá đỡ là \(\{1,2,3,4,5,6\}\). Với phân bố chuẩn, giá đỡ là tất cả các số thực \((-\infty, \infty)\).
-
Các phân bố chia rõ ràng thành hai họ: rời rạc (kết quả đếm được, dùng PMF) và liên tục (kết quả không đếm được, dùng PDF).
-
Phân bố Bernoulli: phân bố đơn giản nhất. Một phép thử duy nhất với hai kết quả: thành công (1) với xác suất \(p\) và thất bại (0) với xác suất \(1-p\).
-
Kỳ vọng: \(E[X] = p\). Phương sai: \(\text{Var}(X) = p(1-p)\).
-
Mọi lần tung đồng xu, mọi phân lớp nhị phân, mọi kết quả nhị phân đều là phép thử Bernoulli. Trong ML, đầu ra của hàm sigmoid chính xác là tham số \(p\) của phân bố Bernoulli.
-
Phân bố nhị thức (Binomial): đếm số lần thành công trong \(n\) phép thử Bernoulli độc lập, mỗi phép thử có cùng xác suất \(p\).
-
Hệ số nhị thức \(\binom{n}{k}\) từ file 01 đếm số cách sắp xếp \(k\) lần thành công trong \(n\) phép thử.
-
Kỳ vọng: \(E[X] = np\). Phương sai: \(\text{Var}(X) = np(1-p)\).
-
Ví dụ: tung một đồng xu thiên lệch (\(p = 0.7\)) tám lần. Xác suất có đúng 6 mặt ngửa là \(\binom{8}{6}(0.7)^6(0.3)^2 = 28 \times 0.1176 \times 0.09 \approx 0.296\).
-
Phân bố Poisson: đếm số sự kiện trong một khoảng thời gian hoặc không gian cố định, với tốc độ trung bình \(\lambda\) đã biết. Hữu ích khi các sự kiện hiếm và độc lập.
-
Kỳ vọng: \(E[X] = \lambda\). Phương sai: \(\text{Var}(X) = \lambda\). Kỳ vọng bằng phương sai, là một tính chất đặc trưng.
-
Ví dụ: email mỗi giờ (\(\lambda = 5\)), lỗi chính tả mỗi trang, yêu cầu máy chủ mỗi giây. Trong ML, hồi quy Poisson mô hình hóa dữ liệu đếm mà mô hình tuyến tính sẽ dự đoán số âm.
-
Khi \(n \to \infty\) và \(p \to 0\) với \(np = \lambda\) được giữ cố định, Binomial\((n,p)\) hội tụ về Poisson\((\lambda)\). Đây là lý do Poisson hoạt động tốt cho các sự kiện hiếm trong quần thể lớn.
-
Phân bố hình học (Geometric): đếm số phép thử cho đến lần thành công đầu tiên. "Tôi tung bao nhiêu đồng xu trước khi được mặt ngửa đầu tiên?"
-
Kỳ vọng: \(E[X] = 1/p\). Phương sai: \(\text{Var}(X) = (1-p)/p^2\).
-
Phân bố hình học không nhớ (memoryless): xác suất phải chờ thêm \(k\) phép thử để thành công không phụ thuộc vào số phép thử đã chờ. Điều này làm nó đặc biệt trong các phân bố rời rạc.
-
Phân bố nhị thức âm (Negative Binomial): tổng quát hóa phân bố hình học bằng cách đếm số phép thử cho đến lần thành công thứ \(r\) (phân bố hình học là trường hợp đặc biệt \(r=1\)).
-
Kỳ vọng: \(E[X] = r/p\). Phương sai: \(\text{Var}(X) = r(1-p)/p^2\).
-
Nhị thức âm cũng được dùng trong thực tế để mô hình hóa dữ liệu đếm quá phân tán (overdispersed, khi phương sai vượt quá kỳ vọng), điều mà Poisson không xử lý được.
-
Bây giờ ta chuyển sang các phân bố liên tục.
-
Phân bố đều (Uniform): tất cả các giá trị trong một khoảng \([a, b]\) có khả năng như nhau. PDF là một hình chữ nhật phẳng.
-
Kỳ vọng: \(E[X] = \frac{a+b}{2}\). Phương sai: \(\text{Var}(X) = \frac{(b-a)^2}{12}\).
-
Các bộ sinh số ngẫu nhiên tạo ra các mẫu Uniform(0,1) làm điểm khởi đầu. Các phân bố khác được tạo ra bằng cách biến đổi các mẫu đều này.
-
Phân bố chuẩn (Normal/Gaussian): phân bố quan trọng nhất trong thống kê. Nó xuất hiện một cách tự nhiên từ Định lý Giới hạn Trung tâm (xem Chương 4): trung bình của nhiều biến ngẫu nhiên độc lập có xu hướng tiến tới phân bố chuẩn bất kể phân bố gốc.
-
Kỳ vọng: \(E[X] = \mu\). Phương sai: \(\text{Var}(X) = \sigma^2\).
-
Phân bố chuẩn tắc (standard normal) có \(\mu = 0\) và \(\sigma = 1\). Bất kỳ biến chuẩn \(X\) nào có thể được chuẩn tắc hóa thành \(Z\) bằng \(Z = (X - \mu)/\sigma\).
-
Quy tắc thực nghiệm (quy tắc 68-95-99.7) nói:
- Khoảng 68% dữ liệu nằm trong \(\pm 1\sigma\) của kỳ vọng
- Khoảng 95% nằm trong \(\pm 2\sigma\)
- Khoảng 99.7% nằm trong \(\pm 3\sigma\)
-
Trong ML, phân bố chuẩn xuất hiện ở khắp mọi nơi: khởi tạo trọng số, nhiễu trong tăng cường dữ liệu, giả định đằng sau mất mát MSE (vốn ngầm giả định sai số Gaussian), và thủ thuật tham số hóa lại (reparameterisation trick) trong bộ mã hóa tự động biến phân (VAE).
-
Phân bố mũ (Exponential): mô hình hóa thời gian giữa các sự kiện trong một quá trình Poisson. Nếu các sự kiện đến với tốc độ \(\lambda\), thời gian chờ giữa chúng tuân theo Exponential\((\lambda)\).
-
Kỳ vọng: \(E[X] = 1/\lambda\). Phương sai: \(\text{Var}(X) = 1/\lambda^2\).
-
Giống như phân bố hình học đối với biến rời rạc, phân bố mũ không nhớ: \(P(X > s + t | X > s) = P(X > t)\). Xác suất phải chờ thêm \(t\) đơn vị thời gian không phụ thuộc vào thời gian đã chờ.
-
Phân bố Gamma: tổng quát hóa phân bố mũ. Nó mô hình hóa thời gian cho đến sự kiện thứ \(\alpha\) trong một quá trình Poisson (phân bố mũ là \(\alpha = 1\)).
-
Ở đây \(\alpha\) (hình dạng) kiểm soát hình dạng và \(\beta\) (tốc độ) kiểm soát tỷ lệ. \(\Gamma(\alpha)\) là hàm gamma, mở rộng giai thừa ra số thực: \(\Gamma(n) = (n-1)!\) với các số nguyên dương.
-
Kỳ vọng: \(E[X] = \alpha/\beta\). Phương sai: \(\text{Var}(X) = \alpha/\beta^2\).
-
Phân bố Beta: xác định trên khoảng \([0, 1]\), làm nó hoàn hảo để mô hình hóa xác suất, tỷ lệ, và tỷ suất.
-
Mẫu số \(B(\alpha, \beta) = \frac{\Gamma(\alpha)\Gamma(\beta)}{\Gamma(\alpha + \beta)}\) là hàm beta, một hằng số chuẩn hóa.
-
Kỳ vọng: \(E[X] = \frac{\alpha}{\alpha + \beta}\). Phương sai: \(\text{Var}(X) = \frac{\alpha\beta}{(\alpha+\beta)^2(\alpha+\beta+1)}\).
-
Phân bố Beta là tiên nghiệm liên hợp (conjugate prior) cho hàm hợp lý Bernoulli và Binomial. Điều này nghĩa là nếu tiên nghiệm của bạn là Beta và dữ liệu của bạn là Bernoulli, thì hậu nghiệm cũng là Beta, giúp việc cập nhật Bayes có thể giải được bằng giải tích. Chúng ta sẽ dùng điều này trong file 04.
- Phân bố Chi-bình phương (\(\chi^2\)): nếu bạn lấy \(k\) biến ngẫu nhiên chuẩn tắc độc lập và tính tổng bình phương của chúng, kết quả tuân theo phân bố \(\chi^2\) với \(k\) bậc tự do.
-
Kỳ vọng: \(E[X] = k\). Phương sai: \(\text{Var}(X) = 2k\).
-
Phân bố \(\chi^2\) thực ra là một trường hợp đặc biệt của phân bố Gamma với \(\alpha = k/2\) và \(\beta = 1/2\). Nó xuất hiện trong kiểm định giả thuyết (kiểm định chi-squared từ Chương 4), kiểm định độ phù hợp (goodness-of-fit), và trong tính toán khoảng tin cậy cho phương sai.
-
Phân bố t của Student: trông giống phân bố chuẩn nhưng có đuôi dày hơn. Nó xuất hiện khi bạn ước lượng kỳ vọng của một quần thể phân bố chuẩn với mẫu nhỏ và phương sai quần thể không biết.
-
Tham số \(\nu\) (nu) là bậc tự do. Khi \(\nu \to \infty\), phân bố t hội tụ về phân bố chuẩn tắc. Với \(\nu\) nhỏ, các đuôi dày hơn cho nhiều xác suất hơn cho các giá trị cực đoan, phản ánh sự không chắc chắn tăng thêm từ mẫu nhỏ.
-
Kỳ vọng: \(E[X] = 0\) (với \(\nu > 1\)). Phương sai: \(\text{Var}(X) = \frac{\nu}{\nu - 2}\) (với \(\nu > 2\)).
-
Phân bố t được dùng trong kiểm định t (Chương 4) và xuất hiện trong suy luận Bayes như một phân bố biên khi tích phân trên phương sai không biết.
-
Tóm tắt các phân bố chính:
| Phân bố | Loại | Giá đỡ | Kỳ vọng | Phương sai |
|---|---|---|---|---|
| Bernoulli\((p)\) | Rời rạc | \(\{0,1\}\) | \(p\) | \(p(1-p)\) |
| Binomial\((n,p)\) | Rời rạc | \(\{0,\ldots,n\}\) | \(np\) | \(np(1-p)\) |
| Poisson\((\lambda)\) | Rời rạc | \(\{0,1,2,\ldots\}\) | \(\lambda\) | \(\lambda\) |
| Geometric\((p)\) | Rời rạc | \(\{1,2,3,\ldots\}\) | \(1/p\) | \((1-p)/p^2\) |
| Uniform\((a,b)\) | Liên tục | \([a,b]\) | \((a+b)/2\) | \((b-a)^2/12\) |
| Normal\((\mu,\sigma^2)\) | Liên tục | \((-\infty,\infty)\) | \(\mu\) | \(\sigma^2\) |
| Exponential\((\lambda)\) | Liên tục | \([0,\infty)\) | \(1/\lambda\) | \(1/\lambda^2\) |
| Gamma\((\alpha,\beta)\) | Liên tục | \((0,\infty)\) | \(\alpha/\beta\) | \(\alpha/\beta^2\) |
| Beta\((\alpha,\beta)\) | Liên tục | \([0,1]\) | \(\alpha/(\alpha+\beta)\) | xem ở trên |
| \(\chi^2(k)\) | Liên tục | \((0,\infty)\) | \(k\) | \(2k\) |
| Student's \(t(\nu)\) | Liên tục | \((-\infty,\infty)\) | \(0\) | \(\nu/(\nu-2)\) |
Bài tập lập trình (dùng CoLab hoặc notebook)¶
-
Vẽ đồ thị PMF của Binomial với \(n=20\) và nhiều giá trị \(p\) khác nhau. Quan sát hình dạng dịch chuyển từ lệch trái sang đối xứng sang lệch phải.
import jax.numpy as jnp import matplotlib.pyplot as plt from math import comb n = 20 ks = jnp.arange(0, n + 1) fig, axes = plt.subplots(1, 3, figsize=(12, 4), sharey=True) for ax, p, color in zip(axes, [0.2, 0.5, 0.8], ["#e74c3c", "#3498db", "#27ae60"]): pmf = jnp.array([comb(n, int(k)) * p**k * (1-p)**(n-k) for k in ks]) ax.bar(ks, pmf, color=color, alpha=0.7) ax.set_title(f"Binomial(n={n}, p={p})") ax.set_xlabel("k") axes[0].set_ylabel("P(X = k)") plt.tight_layout() plt.show() -
Kiểm tra xấp xỉ Poisson cho Binomial. Đặt \(n = 1000\), \(p = 0.003\), và so sánh Binomial\((n, p)\) với Poisson\((\lambda = np)\).
import jax.numpy as jnp import matplotlib.pyplot as plt from math import comb, factorial, exp n, p = 1000, 0.003 lam = n * p ks = jnp.arange(0, 15) binom_pmf = jnp.array([comb(n, int(k)) * p**k * (1-p)**(n-k) for k in ks]) poisson_pmf = jnp.array([lam**k * exp(-lam) / factorial(int(k)) for k in ks]) plt.figure(figsize=(8, 4)) plt.bar(ks - 0.15, binom_pmf, width=0.3, color="#3498db", alpha=0.7, label=f"Binomial({n},{p})") plt.bar(ks + 0.15, poisson_pmf, width=0.3, color="#e74c3c", alpha=0.7, label=f"Poisson({lam})") plt.xlabel("k") plt.ylabel("P(X = k)") plt.title("Poisson approximation to Binomial") plt.legend() plt.show() -
Lấy mẫu từ phân bố Chuẩn và kiểm tra quy tắc thực nghiệm. Đếm tỷ lệ mẫu nằm trong 1, 2, và 3 độ lệch chuẩn.
import jax import jax.numpy as jnp key = jax.random.PRNGKey(42) mu, sigma = 5.0, 2.0 samples = mu + sigma * jax.random.normal(key, shape=(100_000,)) for k in [1, 2, 3]: within = jnp.abs(samples - mu) <= k * sigma print(f"Within {k}σ: {within.mean():.4f} (expected: {[0.6827, 0.9545, 0.9973][k-1]:.4f})") -
Khám phá phân bố Beta bằng cách thay đổi \(\alpha\) và \(\beta\). Vẽ nhiều hình dạng và xem phân bố thay đổi từ đều sang lệch sang tập trung.
import jax import jax.numpy as jnp import matplotlib.pyplot as plt x = jnp.linspace(0.01, 0.99, 200) def beta_pdf(x, a, b): # Unnormalised for shape comparison return x**(a-1) * (1-x)**(b-1) plt.figure(figsize=(10, 5)) params = [(1,1,"Uniform"), (2,5,"Left skew"), (5,2,"Right skew"), (5,5,"Symmetric"), (0.5,0.5,"U-shape")] colors = ["#999", "#e74c3c", "#3498db", "#27ae60", "#9b59b6"] for (a, b, label), color in zip(params, colors): y = beta_pdf(x, a, b) y = y / jnp.trapezoid(y, x) # normalise plt.plot(x, y, label=f"α={a}, β={b} ({label})", color=color, linewidth=2) plt.xlabel("x") plt.ylabel("Density") plt.title("Beta distribution shapes") plt.legend() plt.grid(alpha=0.3) plt.show()