Cross-entropy cho phân loại nhiều lớp
Trung bìnhAIhàm mất mátsoftmax4 test · 12 giây · sai số 1e-5
Cho logits (n, C) (đầu ra chưa qua softmax) và nhãn đúng labels (n,). Tính cross-entropy trung bình:
L = −(1/n) Σᵢ log softmax(logitsᵢ)[labelsᵢ]
- Ổn định số: log softmax(z)ₖ = zₖ − logsumexp(z), với logsumexp(z) = max(z) + log Σ e^(z − max(z)). Tính softmax rồi mới lấy log sẽ ra
-infkhi logits lớn.
Viết hàm
cross_entropy(logits, labels)Tham số
logits: mảng (n, C)labels: mảng số nguyên (n,)
Trả về
Một số thực ≥ 0.
Ví dụ
Tham số
logits = [[2,1,0.1]] labels = [0]
Kết quả
0.41703001627783376
≈ 0.417
Tham số
logits = [[1000,0],[0,1000]] labels = [1,1]
Kết quả
500.0
Mẫu 1 đoán sai rất tự tin → mất mát ≈ 500
Bài tiếp theo: Hồi quy tuyến tính — nghiệm đóng →
Python · NumPy
Bấm “Chạy thử” để gọi cross_entropy() với 2 ví dụ trong đề và so sánh kết quả. Dùng print() thoải mái để gỡ lỗi.