Loss Functions
Hàm loss: điểm số của model
Bạn bắn cung, mũi tên cách tâm 50 cm. Huấn luyện viên muốn bạn tiến bộ nhanh, nên phạt thế nào?
Loss đóng vai “kim la bàn” trên đường học
Hãy hình dung model đang đi tìm đáp án trong sương mù. Nó không nhìn thấy gì cả, chỉ nghe một tiếng lasau mỗi bước đi. Tiếng la đó là loss. Loss lớn nghĩa là “đi sai đường”. Loss nhỏ nghĩa là “đang đúng hướng”. Gradient descent chỉ việc đi theo tiếng la nhỏ dần.
Nhưng “la” có nhiều kiểu. Một giáo viên khó tính phạt 5 điểm cho mỗi lỗi. Một giáo viên gắt gao nhân đôi hình phạt khi bạn sai nặng. Một giáo viên công tâm ngó lơ vài outlier. Chọn kiểu giáo viên tức là chọn hàm loss.
Phạt bình phương. Sai 2 lần thì đau 4 lần. Dành cho số liên tục: giá nhà, nhiệt độ, doanh thu.
Phạt trị tuyệt đối. Sai 2 lần thì đau 2 lần. Không bị outlier kéo lệch: thời gian giao hàng, ETA taxi.
Phạt theo logarit. Tự tin đúng thì loss bằng 0. Tự tin sai thì loss bùng nổ. Dành cho spam/không spam, chó/mèo, nhãn ảnh.
Hình minh họa
Bấm một tab để đổi hàm loss. Trong mỗi tab, kéo chấm xanh (dự đoán) lên xuốngvà quan sát: cùng một dữ liệu nhưng cách mỗi loss “tính điểm” khác hẳn nhau.
Mỗi chấm cam là giá trị thực. Mỗi chấm xanh là dự đoán của model. Hãy kéo chấm xanh lên xuốngvà quan sát từng hàm loss “la” to nhỏ khác nhau ra sao.
Mỗi điểm đóng góp bao nhiêu vào tổng loss?
Loss không phải “một công thức toán”. Nó là định nghĩa của cái đúng mà bạn dạy cho model.
Dạy bằng MSE, model sẽ tránh mọi sai số lớn bằng mọi giá. Dạy bằng MAE, model sẽ không hoảng lên vì vài outlier. Dạy bằng CE, model sẽ rất thận trọng trước khi “chắc chắn”. Đổi loss tức là đổi giáo viên, model sẽ ra tính cách khác.
Khi nào dùng loss nào?
Có một phản xạ đơn giản mà kỹ sư ML kinh nghiệm áp dụng hằng ngày. Bấm Tiếp tục để lần lượt xem bốn trường hợp quan trọng nhất.
Khi đầu ra là một con số liên tục (giá nhà, doanh thu, nhiệt độ) và dữ liệu không nhiều outlier. MSE cho gradient mượt, học nhanh, dễ tối ưu.
Ví dụ thực tế:model dự đoán giá nhà trên Batdongsan.com, nhiệt độ ngày mai, lượng khách đặt bàn. Dữ liệu “sạch sẽ”, không có siêu biệt thự làm rối.
Trước khi đi tiếp, hãy thử ba tình huống thực tế. Chọn loss bạn thấy hợp nhất.
Bài toán: dự đoán giá căn hộ tại Hà Nội, dữ liệu có vài biệt thự 100 tỷ (outlier). Chọn loss nào?
Bài toán: phân loại ảnh chó hoặc mèo (2 lớp). Chọn loss nào?
Bài toán: hệ thống xếp hạng kết quả tìm kiếm Tiki, item nào liên quan hơn thì xếp trước. Chọn loss nào?
Giải thích
Ba công thức dưới đây là ba “tiếng la” phổ biến nhất. Mỗi công thức đi kèm một hình minh hoạ và một câu giải thích bằng tiếng Việt. Bạn không cần thuộc lòng. Chỉ cần đọc được “đại ý” để chọn loss đúng khi gặp bài toán mới.
1. MSE: bình phương trung bình sai số
Đọc: với mỗi điểm, lấy sai số (thực − dự đoán), bình phương, rồi lấy trung bình. Bình phương làm hai việc quan trọng: (1) bỏ dấu, sai trên hay sai dưới đều đáng lo; (2) phạt nặng sai số lớn. Nếu bạn đã học hồi quy tuyến tính, đây chính là loss mà OLS tối thiểu hoá.
Trực quan: bình phương biến sai số thành “hình vuông”
2. MAE: trị tuyệt đối trung bình sai số
Đọc: với mỗi điểm, lấy trị tuyệt đối sai số, rồi lấy trung bình. Không có bình phương nên mỗi điểm đóng góp tỉ lệ thuận với sai lệch. Không còn “hình vuông” làm hình phạt bùng nổ. Nhờ vậy MAE robust với ngoại lai.
Trực quan: MAE đo “chiều dài”, MSE đo “diện tích”
3. Binary Cross-Entropy: phạt “tự tin sai”
Đọc: nếu nhãn thực y = 1, loss = −log(ŷ). Nếu y = 0, loss = −log(1 − ŷ). Khi model đoán đúng và tự tin (ŷ gần nhãn thực), −log(số gần 1) ≈ 0 → loss thấp. Khi model đoán sai và tự tin (ŷ ngược với nhãn thực), −log(số gần 0) → ∞ → loss bùng nổ. Đây là cơ chế “phạt tự tin sai” mà MSE không có.
BCEWithLogitsLoss gộp sigmoid + log tính ổn định.Bảng so sánh nhanh
| Loss | Bài toán | Điểm mạnh | Ví dụ Việt Nam |
|---|---|---|---|
| MSE | Hồi quy | Phạt nặng sai số lớn, học nhanh | Dự đoán giá vàng, nhiệt độ Đà Lạt |
| MAE | Hồi quy có outlier | Robust, không bị kéo lệch | Shopee ước lượng thời gian giao hàng |
| Huber | Hồi quy cân bằng | MSE + MAE, mượt và robust | Grab dự đoán ETA chuyến xe |
| Binary CE | Phân loại 2 lớp | Phạt nặng tự tin sai | Gmail chặn thư rác tiếng Việt |
| Categorical CE | Phân loại N lớp | Softmax + log phối hợp mượt | Zalo gán nhãn chủ đề bài viết |
| Hinge / Pairwise | SVM, Ranking | Biên cứng, tập trung vào mẫu khó | Tiki xếp hạng kết quả tìm kiếm |
Loss đi tay trong tay với gradient descent. Loss cho biết “đang sai bao nhiêu”, gradient cho biết “phải đi theo hướng nào để sai ít hơn”. Không có loss thì gradient descent không có thứ để tối thiểu hoá. Không có gradient descent thì loss chỉ là một con số vô nghĩa. Backpropagationsau đó đưa gradient của loss về từng tham số trong mạng. Ba khái niệm làm thành “bộ ba huấn luyện” của mọi model hiện đại.
- Loss là 'điểm số' của model. Càng thấp càng tốt. Chọn sai loss tức là model học sai mục tiêu.
- Hồi quy dữ liệu sạch → MSE. Hồi quy có outlier → MAE hoặc Huber. Phân loại → Cross-Entropy. Xếp hạng → Hinge / Pairwise.
- MSE phạt bình phương: một outlier đóng góp rất nhiều. MAE phạt tuyến tính: outlier không thống trị được.
- Cross-Entropy phạt 'tự tin sai' bằng logarit. Đạo hàm vẫn mạnh khi sigmoid ở biên, nên học nhanh hơn MSE trong phân loại.
- Loss phải khả vi để gradient descent hoạt động. Metric (accuracy, F1...) là thứ bạn báo cáo, không phải thứ model tối thiểu hoá.
Kiểm tra hiểu biết
Model dự đoán xác suất spam = 0.99 nhưng email thực tế KHÔNG phải spam (y = 0). Cross-entropy sẽ thế nào?