Giới thiệu
Khi mới làm quen với các mô hình dự đoán, chúng ta thường học qua Linear Regression – nơi một hàm tuyến tính sẽ dự đoán đầu ra liên tục, như giá nhà hoặc điểm số. Linear Regression rất mạnh mẽ với dữ liệu liên tục, nhưng lại không phù hợp cho các bài toán mà đầu ra chỉ nhận giá trị 0 hoặc 1, như dự đoán một email có phải spam hay không, hay khách hàng có rời bỏ dịch vụ hay không.
Nếu áp dụng linear regression cho các bài toán này, giá trị dự báo có thể vượt ra ngoài khoảng $[0,1]$ và gây khó khăn trong việc diễn giải là xác suất. Vì thế, chúng ta cần một mô hình giữ lại tính tuyến tính (vì dễ giải thích, huấn luyện) nhưng lại đảm bảo đầu ra là xác suất hợp lệ – đó chính là Logistic Regression.
Logistic Regression khác biệt chủ yếu nhờ hàm sigmoid. Hàm này "ép" đầu ra của biểu thức tuyến tính vào đúng khoảng $[0,1]$, để có thể diễn giải xác suất một cách hợp lý.
Bài blog này sẽ dẫn bạn đi từ nền tảng linear regression sang logistic regression, khám phá lý do xác suất được kết nối chặt chẽ với hàm sigmoid, các ý tưởng từ odds tới logit rồi quy về xác suất, cùng ví dụ, tối ưu hóa, các lưu ý thực tế và cập nhật mới về regularization và cân bằng dữ liệu – giúp bạn hiểu toàn diện, từ trực giác đến triển khai hiện đại.

Bài viết được biên soạn bởi nhóm CONQ999
1. Bắt đầu từ mong muốn mô hình hóa xác suất khi Linear Regression không phù hợp
Giả sử ta đang giải quyết bài toán phân loại nhị phân:
- $y = 1$: đối tượng thuộc lớp 1
- $y = 0$: đối tượng không thuộc lớp 1
Ta muốn mô hình dự đoán:
$$ P(y=1|x) $$
và giá trị này phải nằm trong [0,1] để có thể hiểu là xác suất.
Tuy nhiên, hồi quy tuyến tính:
$$ \hat{y} = w^T x + b $$
Diễn giải công thức:
- $w^T x$ là tích vô hướng giữa vector trọng số $w$ và vector đặc trưng $x$, tương đương với $\sum_{i=1}^{n} w_i x_i$
- $b$ là hệ số bias (độ lệch), cho phép đường thẳng không bắt buộc phải đi qua gốc tọa độ
- Kết quả $\hat{y}$ có thể là bất kỳ số thực nào, không bị giới hạn trong $[0,1]$
cho kết quả có thể âm, hoặc lớn hơn 1 — ❌ không hợp lý về mặt xác suất.
![Hình 1: Ví dụ Linear Regression dự đoán giá trị vượt ngoài [0,1]](https://i.ibb.co/7tDYQz2k/section1.png)
Hình 1: Ví dụ Linear Regression dự đoán giá trị vượt ngoài khoảng [0,1]
Quan sát Hình 1, ta có thể thấy rằng đường thẳng của Linear Regression không bị giới hạn trong khoảng $[0,1]$. Khi giá trị đầu vào $x$ tăng lên, đường thẳng tiếp tục vượt qua mức 1, và khi $x$ giảm xuống, nó có thể rơi xuống dưới 0. Điều này cho thấy rõ ràng tại sao Linear Regression không phù hợp cho bài toán phân loại nhị phân — ta cần một hàm có thể "ép" đầu ra vào khoảng hợp lệ $[0,1]$ để diễn giải như xác suất.
2. Ý tưởng: Dự đoán tỷ lệ xảy ra và không xảy ra
Thay vì dự đoán trực tiếp $P$, các nhà thống kê thế kỷ 19 (đặc biệt Pierre François Verhulst, 1838) đã nghĩ khác đi:
Hãy dự đoán tỷ lệ odds:
$$ \text{odds} = \frac{P(y=1|x)}{1 - P(y=1|x)} $$
Diễn giải công thức odds:
- Tử số $P(y=1|x)$ là xác suất sự kiện xảy ra
- Mẫu số $1 - P(y=1|x)$ là xác suất sự kiện không xảy ra
- Odds cho biết "sự kiện xảy ra gấp bao nhiêu lần so với không xảy ra"
- Ví dụ: odds = 3 nghĩa là sự kiện xảy ra gấp 3 lần so với không xảy ra
- Nếu $P = 0.5$ → odds = 1 (cơ hội ngang nhau)
- Nếu $P = 0.8$ → odds = 4 (xảy ra gấp 4 lần không xảy ra)
- Nếu $P = 0.2$ → odds = 0.25 (xảy ra ít hơn 4 lần)
Tuy nhiên, odds vẫn chỉ dương, chưa thể mô hình hóa bằng hàm tuyến tính (vì tuyến tính có thể âm).
Vì vậy, ta lấy log của odds để "trải" nó ra toàn trục thực:
$$ \text{logit}(P) = \log\left(\frac{P}{1 - P}\right) $$
Diễn giải hàm logit:
- Lấy logarit tự nhiên (cơ số $e$) của odds
- Khi $P \to 0$: $\frac{P}{1-P} \to 0$ → $\log(0) = -\infty$ (logit tiến về $-\infty$)
- Khi $P = 0.5$: $\frac{0.5}{0.5} = 1$ → $\log(1) = 0$ (logit = 0)
- Khi $P \to 1$: $\frac{P}{1-P} \to +\infty$ → $\log(+\infty) = +\infty$ (logit tiến về $+\infty$)
- Như vậy, logit có thể nhận mọi giá trị thực từ $-\infty$ đến $+\infty$
→ Đây chính là hàm logit.
Và nhờ log, ta có thể cho giá trị này bằng một biểu thức tuyến tính.

Hình 2: So sánh Probability – Odds – Logit trên cùng trục
Hình 2 minh họạ sự chuyển đổi từ Probability (giới hạn trong $[0,1]$) sang Odds (chỉ nhận giá trị dương) và cuối cùng là Logit (có thể nhận mọi giá trị thực). Ta có thể thấy rằng logit "trải" miền giá trị ra toàn bộ trục số, từ $-\infty$ đến $+\infty$, điều này cho phép ta mô hình hóa bằng một biểu thức tuyến tính mà không lo vi phạm ràng buộc về miền giá trị.
3. Giả định quan hệ tuyến tính trong miền logit
Ta đặt giả định:
$$ \text{logit}(P) = w^T x + b $$
hay tương đương:
$$ \log\left(\frac{P}{1 - P}\right) = w^T x + b $$
Diễn giải giả định:
- Ta giả định rằng logit (log-odds) có quan hệ tuyến tính với các đặc trưng đầu vào $x$
- $w^T x = w_1 x_1 + w_2 x_2 + \cdots + w_n x_n$ là tổng có trọng số của các đặc trưng
- Mỗi đặc trưng $x_i$ đóng góp vào logit một lượng $w_i x_i$
- $b$ là hệ số bias, cho phép điều chỉnh logit khi tất cả đặc trưng bằng 0
- Ví dụ: nếu $w_1 = 2$ và $x_1$ tăng 1 đơn vị, thì logit tăng 2 đơn vị
Đây là bước "thiết kế" cốt lõi — một giả định thống kê hợp lý:
- Vì đầu vào $x$ ảnh hưởng tuyến tính lên "độ tin cậy" (log-odds)
- Mà logit cho phép ta làm việc trên toàn miền số thực
Giờ ta chỉ cần biến đổi ngược để tìm $P$.

Hình 3: Log-odds tăng tuyến tính khi đặc trưng tăng
Trong Hình 3, ta quan sát thấy mối quan hệ tuyến tính giữa đặc trưng đầu vào và log-odds. Đường thẳng này thể hiện giả định cốt lõi của Logistic Regression: mỗi đơn vị tăng của đặc trưng sẽ làm tăng log-odds một lượng cố định, tương ứng với hệ số $w$ trong mô hình. Đây là lý do tại sao ta có thể dùng một biểu thức tuyến tính $w^T x + b$ để mô hình hóa logit.
4. Biến đổi ngược → Hàm Sigmoid ra đời
Bắt đầu từ:
$$ \frac{P}{1 - P} = e^{w^T x + b} $$
Bước 1: Lấy mũ cả hai vế của phương trình logit để loại bỏ logarit:
- Từ $\log\left(\frac{P}{1-P}\right) = w^T x + b$
- Ta có: $\frac{P}{1-P} = e^{w^T x + b}$ (vì $e^{\log(a)} = a$)
Bước 2: Giải phương trình để tìm $P$:
$$ \begin{align} \frac{P}{1 - P} &= e^{w^T x + b} \\ P &= e^{w^T x + b}(1 - P) \\ P &= e^{w^T x + b} - P \cdot e^{w^T x + b} \\ P + P \cdot e^{w^T x + b} &= e^{w^T x + b} \\ P(1 + e^{w^T x + b}) &= e^{w^T x + b} \\ P &= \frac{e^{w^T x + b}}{1 + e^{w^T x + b}} \end{align} $$
Bước 3: Chia cả tử và mẫu cho $e^{w^T x + b}$ để có dạng đối xứng:
$$ P = \frac{e^{w^T x + b}}{1 + e^{w^T x + b}} = \frac{1}{1 + e^{-(w^T x + b)}} $$
→ Đây chính là hàm Sigmoid mà ta dùng ngày nay:
$$ \sigma(z) = \frac{1}{1 + e^{-z}} $$
Diễn giải: Với $z = w^T x + b$, hàm sigmoid chuyển đổi logit (có thể là bất kỳ số thực nào) thành xác suất (luôn nằm trong $[0,1]$).

Hình 4: Đường cong Sigmoid - Hàm chuyển đổi log-odds về xác suất
Hình 4 cho ta thấy hình dạng đặc trưng của hàm Sigmoid — một đường cong hình chữ S mượt mà. Đường cong này bắt đầu từ gần 0 khi $z$ rất âm, tăng dần ở giữa (quanh $z = 0$ nơi giá trị xác suất là 0.5), và tiệm cận về 1 khi $z$ rất dương. Điều quan trọng là hàm này luôn giữ giá trị trong khoảng $[0,1]$, đảm bảo đầu ra luôn là xác suất hợp lệ, đồng thời vẫn giữ được mối quan hệ tuyến tính ở miền logit.
5. Hàm Sigmoid và mối quan hệ với Logit
- Sigmoid là nghịch đảo của hàm logit:
$$ \sigma(z) = \frac{1}{1 + e^{-z}} \iff \text{logit}(P) = z $$ - Khi $z = 0$ → $P = 0.5$
- Khi $z \to +\infty$ → $P \to 1$
- Khi $z \to -\infty$ → $P \to 0$
Hàm này đơn điệu tăng, có đạo hàm gọn đẹp:
$$
\sigma'(z) = \sigma(z)(1 - \sigma(z))
$$
Cách tính đạo hàm của sigmoid:
- Bắt đầu từ $\sigma(z) = \frac{1}{1 + e^{-z}} = (1 + e^{-z})^{-1}$
- Áp dụng quy tắc chuỗi: $\sigma'(z) = -(1 + e^{-z})^{-2} \cdot (-e^{-z}) = \frac{e^{-z}}{(1 + e^{-z})^2}$
- Nhân và chia cho $e^z$: $\sigma'(z) = \frac{e^{-z}}{(1 + e^{-z})^2} = \frac{1}{(1 + e^{-z})(1 + e^{z})}$
- Viết lại: $\sigma'(z) = \frac{1}{1 + e^{-z}} \cdot \frac{e^{-z}}{1 + e^{-z}} = \sigma(z) \cdot \frac{e^{-z}}{1 + e^{-z}}$
- Nhận thấy: $\frac{e^{-z}}{1 + e^{-z}} = 1 - \frac{1}{1 + e^{-z}} = 1 - \sigma(z)$
- Vậy: $\sigma'(z) = \sigma(z)(1 - \sigma(z))$
Ý nghĩa của đạo hàm:
- Đạo hàm đạt giá trị lớn nhất (0.25) khi $\sigma(z) = 0.5$ (tức $z = 0$)
- Đạo hàm tiến về 0 khi $\sigma(z) \to 0$ hoặc $\sigma(z) \to 1$
- Điều này có nghĩa: mô hình học nhanh nhất khi còn chưa chắc chắn (xác suất gần 0.5), và học chậm lại khi đã chắc chắn
→ thuận lợi cho việc huấn luyện mô hình bằng Gradient Descent.

Hình 5: Hàm Sigmoid và đạo hàm của nó - Thuận lợi cho Gradient Descent
Hình 5 so sánh hàm Sigmoid và đạo hàm của nó. Ta có thể thấy đạo hàm đạt giá trị lớn nhất tại $z = 0$ (nơi xác suất là 0.5) và giảm dần về 0 khi $z$ tiến về hai phía cực trị. Đặc tính này rất quan trọng cho việc huấn luyện: khi mô hình còn chưa chắc chắn (xác suất gần 0.5), gradient lớn giúp học nhanh; khi đã chắc chắn (xác suất gần 0 hoặc 1), gradient nhỏ giúp tránh cập nhật quá mức. Đây là lý do tại sao Sigmoid được ưa chuộng trong Gradient Descent.
6. Tối ưu hóa bằng Maximum Likelihood và Cross-Entropy
Sau khi có mô hình $P(y|x; w, b)$, ta cần tìm tham số $w, b$. Logistic Regression học tham số bằng cách tối đa hóa khả năng dữ liệu xuất hiện — Maximum Likelihood Estimation (MLE):
$$ L(w,b) = \prod_i P(y_i|x_i; w,b) $$
Diễn giải likelihood:
- Likelihood $L(w,b)$ là xác suất quan sát được toàn bộ dữ liệu với tham số $(w,b)$
- Với giả định các mẫu độc lập, likelihood là tích của xác suất từng mẫu
- Ta muốn tìm $(w,b)$ sao cho likelihood lớn nhất (dữ liệu có khả năng xuất hiện cao nhất)
Lấy log cho dễ tối ưu (vì log là hàm đơn điệu tăng, tối đa hóa log-likelihood tương đương tối đa hóa likelihood):
$$ \ell(w,b) = \sum_i \left[y_i \log \sigma(z_i) + (1 - y_i)\log(1 - \sigma(z_i))\right] $$
Diễn giải log-likelihood:
- Với mỗi mẫu $(x_i, y_i)$:
- Nếu $y_i = 1$: ta muốn $\sigma(z_i)$ lớn → hạng mục $y_i \log \sigma(z_i)$ lớn khi $\sigma(z_i)$ gần 1
- Nếu $y_i = 0$: ta muốn $\sigma(z_i)$ nhỏ → hạng mục $(1-y_i)\log(1-\sigma(z_i))$ lớn khi $\sigma(z_i)$ gần 0
- Tổng của tất cả các hạng mục này là log-likelihood
- Công thức này đảm bảo: dự đoán đúng được "thưởng" (log-likelihood tăng), dự đoán sai bị "phạt" (log-likelihood giảm)
Và ta tối đa hóa log-likelihood, tương đương tối thiểu hóa hàm mất mát cross-entropy:
$$ \mathcal{L} = -\ell(w,b) $$
Diễn giải cross-entropy loss:
- Cross-entropy loss là âm của log-likelihood
- Tối đa hóa log-likelihood = Tối thiểu hóa cross-entropy loss
- Loss càng nhỏ → mô hình dự đoán càng chính xác
Gradient:
$$ \nabla_w \mathcal{L} = (\sigma(z) - y)x $$
Cách tính gradient:
- Áp dụng quy tắc chuỗi: $\frac{\partial \mathcal{L}}{\partial w} = \frac{\partial \mathcal{L}}{\partial \sigma(z)} \cdot \frac{\partial \sigma(z)}{\partial z} \cdot \frac{\partial z}{\partial w}$
- Với $\mathcal{L} = -[y\log\sigma(z) + (1-y)\log(1-\sigma(z))]$:
- $\frac{\partial \mathcal{L}}{\partial \sigma(z)} = -\frac{y}{\sigma(z)} + \frac{1-y}{1-\sigma(z)} = \frac{\sigma(z) - y}{\sigma(z)(1-\sigma(z))}$
- $\frac{\partial \sigma(z)}{\partial z} = \sigma(z)(1-\sigma(z))$ (đạo hàm sigmoid)
- $\frac{\partial z}{\partial w} = x$ (vì $z = w^T x + b$)
- Kết hợp: $\nabla_w \mathcal{L} = \frac{\sigma(z) - y}{\sigma(z)(1-\sigma(z))} \cdot \sigma(z)(1-\sigma(z)) \cdot x = (\sigma(z) - y)x$
Ý nghĩa gradient:
- Gradient tỷ lệ với "lỗi" $(\sigma(z) - y)$: nếu dự đoán cao hơn nhãn thực, gradient dương (giảm $w$); nếu thấp hơn, gradient âm (tăng $w$)
- Gradient cũng tỷ lệ với đặc trưng $x$: đặc trưng có giá trị lớn sẽ ảnh hưởng nhiều hơn đến cập nhật
→ Đây là lý do hàm Sigmoid được ưa chuộng: đạo hàm của nó khiến cập nhật gradient cực kỳ đơn giản và ổn định.

Hình 6: Hình dạng hàm loss cross-entropy cho y=1 và y=0
Quan sát Hình 6, ta thấy hình dạng của hàm cross-entropy loss cho hai trường hợp: khi nhãn thực là $y = 1$ và khi $y = 0$. Với $y = 1$, loss tăng mạnh khi dự đoán gần 0 (dự đoán sai), và giảm về 0 khi dự đoán gần 1 (dự đoán đúng). Ngược lại, với $y = 0$, loss tăng khi dự đoán gần 1 và giảm khi dự đoán gần 0. Hình dạng này đảm bảo mô hình bị "phạt" nhiều hơn khi dự đoán sai, và được "thưởng" khi dự đoán đúng, tạo động lực cho quá trình học.
7. Ổn định số khi tính Sigmoid
Trong thực tế, với $z$ rất lớn hoặc rất nhỏ, $e^{-z}$ có thể tràn số (overflow/underflow).
Một số cách khắc phục:
- Giới hạn $z$ trong khoảng $[-20, 20]$ trước khi tính
- Dùng biểu thức ổn định hơn trong log-loss:
$$
\log(1 + e^{-z}) \approx \text{softplus}(z)
$$
Diễn giải softplus:
- Hàm softplus: $\text{softplus}(z) = \log(1 + e^z)$
- Khi $z$ rất lớn: $e^z$ rất lớn → $\log(1 + e^z) \approx \log(e^z) = z$
- Khi $z$ rất nhỏ (âm): $e^z \approx 0$ → $\log(1 + e^z) \approx \log(1) = 0$
- Softplus là hàm mượt mà, tránh được vấn đề tràn số khi tính $e^{-z}$ với $z$ rất lớn
- Trong tính toán log-loss, ta có thể dùng: $\log(1 + e^{-z}) = \text{softplus}(-z)$ để tránh overflow
- Trong framework học máy, người ta thường dùng hàm
torch.nn.BCEWithLogitsLoss(PyTorch) hoặctf.nn.sigmoid_cross_entropy_with_logits(TensorFlow), vốn đã xử lý ổn định số bên trong.
Lưu ý: Các hàm này nhận đầu vào là logits (chưa qua sigmoid) thay vì xác suất, và tự động áp dụng sigmoid một cách ổn định số học bên trong, tránh được vấn đề tràn số.
8. So sánh Logistic và Probit
Một mô hình gần giống Logistic Regression là Probit Regression, trong đó:
$$
P(y=1|x) = \Phi(w^T x + b)
$$
với $\Phi$ là hàm tích lũy của phân phối chuẩn.
Hai mô hình này cho kết quả tương tự, chỉ khác về đuôi phân phối và diễn giải thống kê — Logistic có đuôi dài hơn, nên thường dùng phổ biến hơn trong học máy.
9. Lịch sử ra đời của hàm Sigmoid
- Năm 1838, Pierre François Verhulst (nhà toán học Bỉ) giới thiệu hàm logistic để mô tả tăng trưởng dân số:
$$ N(t) = \frac{K}{1 + e^{-r(t - t_0)}} $$
Diễn giải mô hình tăng trưởng dân số:
- $N(t)$ là dân số tại thời điểm $t$
- $K$ là giới hạn dân số tối đa (carrying capacity) — dân số không thể vượt quá giá trị này do giới hạn tài nguyên
- $r$ là tốc độ tăng trưởng — hệ số điều chỉnh độ dốc của đường cong
- $t_0$ là thời điểm tăng trưởng nhanh nhất — khi dân số đạt $K/2$
Mối liên hệ với hàm sigmoid:
- Nếu đặt $z = r(t - t_0)$, ta có: $N(t) = K \cdot \frac{1}{1 + e^{-z}} = K \cdot \sigma(z)$
- Hàm sigmoid $\sigma(z)$ mô tả tỷ lệ dân số so với giới hạn $K$
- Khi $t \to -\infty$: $N(t) \to 0$ (dân số ban đầu rất nhỏ)
- Khi $t = t_0$: $N(t_0) = K/2$ (dân số đạt một nửa giới hạn, tăng trưởng nhanh nhất)
- Khi $t \to +\infty$: $N(t) \to K$ (dân số tiệm cận giới hạn)
Đây là một đường cong S (sigmoid) thể hiện sự tăng dần chậm dần khi tiến đến giới hạn $K$.

Hình 7: Đường cong dân số logistic theo thời gian - Nguồn gốc của hàm Sigmoid
Hình 7 minh họạ mô hình tăng trưởng dân số ban đầu của Verhulst, nơi hàm Sigmoid được sinh ra. Ta có thể thấy đường cong bắt đầu tăng chậm ở giai đoạn đầu, sau đó tăng nhanh nhất ở giữa (quanh thời điểm $t_0$ khi dân số đạt một nửa giới hạn $K$), và cuối cùng chậm dần khi tiến đến giới hạn $K$ (carrying capacity). Đường cong này có hình chữ S đặc trưng, tương tự như hàm Sigmoid ta dùng trong Logistic Regression. Điều này cho thấy hàm Sigmoid không phải là một công cụ tùy tiện, mà xuất phát từ các quy luật tự nhiên về tăng trưởng có giới hạn, sau đó được các nhà thống kê tái sử dụng để mô hình hóa xác suất.
- Thế kỷ 20, các nhà thống kê nhận ra cùng hàm này có thể chuyển đổi xác suất phi tuyến, và Logistic Regression ra đời.
🧩 Nói cách khác: hàm Sigmoid sinh ra từ tự nhiên (mô hình tăng trưởng), rồi được tái sử dụng trong học máy như một hàm xác suất hợp lý.
10. Tổng kết
| Bước | Ý tưởng chính | Kết quả |
|---|---|---|
| 1️⃣ | Muốn mô hình hóa xác suất trong [0,1] | Linear regression không phù hợp |
| 2️⃣ | Dự đoán tỷ lệ odds thay vì xác suất | odds luôn dương |
| 3️⃣ | Lấy log của odds → logit | Mở rộng về miền số thực |
| 4️⃣ | Giả định logit = wᵀx + b | Tạo mối quan hệ tuyến tính |
| 5️⃣ | Biến đổi ngược → Sigmoid | Ánh xạ về xác suất |
| 6️⃣ | Tối ưu bằng MLE / cross-entropy | Gradient đẹp, dễ huấn luyện |
| 7️⃣ | Ổn định số & triển khai thực tế | Dùng softplus hoặc BCEWithLogitsLoss |
| 8️⃣ | Logistic vs Probit | Khác ở phân phối và ứng dụng |
11. Ví dụ code minh họa
import numpy as np
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def grad(w, x, y):
z = np.dot(w, x)
return (sigmoid(z) - y) * x
x = np.array([1.0, 2.0])
w = np.array([0.3, -0.5])
y = 1
sig = sigmoid(np.dot(w, x))
g = grad(w, x, y)
print("Sigmoid output:", sig)
print("Gradient:", g)
Sigmoid output: 0.3775406687981454
Gradient: [-0.62245933 -1.24491866]
Diễn giải chi tiết đoạn code:
-
Hàm
sigmoid(z):
- Thực hiện công thức $\sigma(z) = \frac{1}{1 + e^{-z}}$ đã trình bày ở phần 4
- Nhận đầu vào $z$ (có thể là một số thực bất kỳ) và trả về giá trị trong khoảng $(0, 1)$
-np.exp(-z)tính $e^{-z}$, sau đó chia 1 cho $(1 + e^{-z})$ để được xác suất -
Hàm
grad(w, x, y):
- Tính gradient của hàm mất mát cross-entropy theo công thức đã trình bày ở phần 6: $\nabla_w \mathcal{L} = (\sigma(z) - y)x$
- Bước 1: Tính $z = w^T x = \text{np.dot}(w, x)$ — đây là logit (log-odds)
- Bước 2: Tính $\sigma(z)$ — chuyển logit thành xác suất
- Bước 3: Tính $(\sigma(z) - y)$ — đây là "lỗi" giữa dự đoán và nhãn thực
- Bước 4: Nhân với $x$ để được gradient — gradient tỷ lệ với đặc trưng đầu vào -
Các biến đầu vào:
-x = [1.0, 2.0]: Vector đặc trưng của một mẫu dữ liệu (ví dụ: tuổi=1, thu nhập=2)
-w = [0.3, -0.5]: Vector trọng số của mô hình (hệ số hồi quy)
-y = 1: Nhãn thực của mẫu (1 = thuộc lớp dương tính) -
Tính toán cụ thể:
- $z = w^T x = 0.3 \times 1.0 + (-0.5) \times 2.0 = 0.3 - 1.0 = -0.7$
- $\sigma(z) = \sigma(-0.7) \approx 0.3775$ — xác suất dự đoán là khoảng 37.75%
- Vì $y = 1$ (nhãn thực là dương tính) nhưng dự đoán chỉ 37.75%, nên mô hình cần điều chỉnh để tăng xác suất -
Gradient
[-0.6225, -1.2449]:
- Gradient âm cho cả hai đặc trưng, nghĩa là để giảm loss, ta cần tăng giá trị của $w$ (vì gradient descent sẽ cập nhật $w \leftarrow w - \alpha \nabla_w \mathcal{L}$)
- Độ lớn của gradient tỷ lệ với giá trị đặc trưng: đặc trưng thứ hai ($x_2 = 2.0$) có gradient lớn gấp đôi đặc trưng thứ nhất ($x_1 = 1.0$)
- Điều này hợp lý vì đặc trưng có giá trị lớn hơn sẽ ảnh hưởng nhiều hơn đến dự đoán, nên cần điều chỉnh mạnh hơn -
Ý nghĩa thực tế:
- Kết quả cho thấy mô hình đang thiếu tự tin (xác suất 37.75% < 50%) khi nhãn thực là 1
- Gradient âm chỉ ra rằng ta cần tăng các trọng số để mô hình dự đoán cao hơn
- Trong quá trình huấn luyện, gradient này sẽ được dùng để cập nhật: $w_{\text{new}} = w_{\text{old}} - \alpha \times \text{gradient}$, với $\alpha$ là learning rate
12. Kết luận
Hàm Sigmoid không phải là một “mánh” của học máy, mà là hệ quả tự nhiên của tư duy thống kê:
Khi ta muốn một mô hình tuyến tính biểu diễn xác suất, việc chuyển qua log-odds rồi nghịch đảo lại tất yếu dẫn đến hàm Sigmoid.
Vì thế, Logistic Regression vừa đơn giản vừa sâu sắc, nó kết hợp giữa toán học, thống kê, xác suất và trực giác một cách hoàn hảo.
Chưa có bình luận nào. Hãy là người đầu tiên!