Information Theory
Lý thuyết thông tin: đo bất ngờ bằng bit
Bạn đọc hai tin trên báo: (A) 'Trời Sài Gòn hôm nay nắng', (B) 'Mưa đá giữa trưa tháng 4 ở Sài Gòn'. Tin nào chứa NHIỀU THÔNG TIN hơn?
Entropy là độ bất ngờ trung bình
Tưởng tượng bạn nhắn tin cho bạn bè về thời tiết ở Sài Gòn qua một điện báo tính tiền theo ký tự. Vì hầu hết ngày là nắng, bạn nên đặt "nắng" bằng một ký tự ngắn. "Mưa đá" thì nhận ký tự dài: nó hiếm, nên dùng ký tự dài cũng không phí nhiều lần. Trung bình, bạn gửi rất ít ký tự mỗi tin.
Ngược lại, ở một thành phố ôn đới nơi mỗi loại thời tiết xuất hiện đều đều, bạn buộc phải dùng ký tự dài hơn cho tất cả. Shannon chứng minh: số bit trung bình ngắn nhất bạn có thể dùng để mã hoá một bản tin chính là entropy H của phân phối thời tiết ở đó.
Phân phối lệch
Một kết quả chiếm ưu thế → dễ đoán → entropy thấp, mã ngắn trung bình.Đồng xu công bằng
Hai mặt bằng nhau → bất định nhất cho 2 kết quả → entropy = 1 bit.Xúc xắc 6 mặt
Đồng đều trên nhiều kết quả → entropy cao nhất = log₂ 6 ≈ 2.58 bit.Hình minh họa
Playground 1: đồng xu nghiêng dần
Kéo thanh trượt để thay đổi P(ngửa). Chấm đỏ chạy theo đường cong entropy. Khi P = 50%, entropy đạt đỉnh 1 bit. Khi P rất gần 0 hoặc 1, entropy tiến về 0.
Entropy đạt đỉnh 1 bit khi đồng xu công bằng (P = 0.5). Đó là lúc bất định tối đa. Khi đồng xu lệch hẳn (P = 0.99), entropy tụt về gần 0, tức là gần như luôn biết trước kết quả.
Playground 2: xúc xắc 4 mặt, 6 mặt, và "gian"
Chọn chế độ và quan sát thanh entropy. Uniform càng nhiều mặt → entropy càng cao. Xúc xắc gian (lệch về mặt 1) có entropy nhỏ hơn fair dù cùng số mặt.
Nhận xét: xúc xắc 4 mặt fair có H = 2 bit; xúc xắc 6 mặt fair có H ≈ 2.58 bit; xúc xắc gian (lệch về mặt 1) có H ≈ 2.02 bit. Càng nhiều mặt và càng cân bằng, entropy càng cao.
Playground 3: cross-entropy khi model đoán sai
Đây là phân phối thật p của một đồng xu (giả sử nhãn ta quan sát thấy chính là xác suất P(ngửa) = 50%). Kéo q (dự đoán của model) để xem cross-entropy và KL divergence thay đổi. Khi q = p → KL = 0; càng lệch → loss càng cao.
p: phân phối thật (cố định)
Entropy H(p) = 1.00 bit
q: dự đoán của model
q[Mặt 1] = 50%. Kéo để di chuyển.
Quan hệ then chốt:H(p, q) = H(p) + KL(p ‖ q). Khi q = p (slider ở 50%), KL = 0 và cross-entropy = H(p), tức là không thể giảm thêm. Đẩy q về 1% hoặc 99%, KL tăng vọt, đúng với ý nghĩa "model tự tin sai thì bị phạt rất nặng".
Entropy được dựng lên từng mảnh
Surprise của một kết quả.Một kết quả xảy ra với xác suất p mang lượng "bất ngờ" bằng −log₂ p bit. Sự kiện gần như chắc chắn (p = 0.99) → surprise ≈ 0.014 bit (ai cũng biết trước). Sự kiện rất hiếm (p = 0.001) → surprise ≈ 10 bit (rất bất ngờ).
Lý do dùng log: khi hai sự kiện độc lập xảy ra cùng lúc, surprise của chúng cộng lại. Nếu bạn dùng −p thay cho −log p, hai sự kiện độc lập sẽ nhân chứ không cộng, kém trực quan hơn.
Entropy là mức bất ngờ trung bình. Cross-entropy là số bit trung bình khi bạn mã hoá dữ liệu thật bằng một model sai. KL divergence là phần "chi phí" dư ra giữa hai con số đó.
Vì vậy, khi bạn bấm nút "train" trên một mạng nơ-ron phân loại, bạn đang làm đúng một việc: thu nhỏ phần chi phí dư, tức là kéo xác suất model phát ra về sát xác suất thật của nhãn.
Xúc xắc 6 mặt công bằng có entropy bao nhiêu bit?
Một model phân loại 10 lớp chưa học gì, nên output q gần uniform. Cross-entropy loss trung bình trên mỗi mẫu xấp xỉ bao nhiêu?
Giải thích
Dưới đây là ba công thức "nền". Bạn sẽ gặp lại chúng ở loss functions, VAE, decision tree, và knowledge distillation. Mỗi công thức đi kèm một hình để bám vào.
1) Entropy H(X): độ bất định trung bình
Lấy −log₂ xác suất của mỗi kết quả (= surprise), nhân với xác suất tương ứng, rồi cộng lại. Đường cong là entropy của đồng xu theo P(ngửa), đỉnh nằm ở 0.5.
2) KL divergence: độ "lệch" giữa hai phân phối
KL = 0 khi và chỉ khi p = q. Không đối xứng: KL(p ‖ q) ≠ KL(q ‖ p). Khi bạn train, p là nhãn thật (one-hot) và q là output softmax. KL đo model lệch bao xa so với sự thật.
3) Cross-entropy H(p, q): loss function
Vì H(p) không phụ thuộc model, tối thiểu cross-entropy tương đương tối thiểu KL. Khi nhãn là one-hot, công thức rút gọn thành −log q[lớp đúng]. Đây chính là loss cho phân loại trong PyTorch và TensorFlow.
Trực giác "information gain" của cây quyết định
Giả sử bạn đoán liệu một người có đậu phỏng vấn không. Trước khi biết gì, entropy của "đậu/không đậu" trong tập huấn luyện là khoảng 1 bit (hai lớp xấp xỉ cân bằng). Sau khi biết thêm đặc trưng "điểm IELTS ≥ 7.0", phân phối trở nên lệch và entropy điều kiện giảm xuống, ví dụ còn 0,6 bit.
Cây quyết định (ID3, C4.5) chọn đặc trưng có information gain lớn nhất làm điểm chia. Đây là một trong những ứng dụng cổ điển và trực quan nhất của entropy trong machine learning. Bạn đã nhìn thấy Shannon trong phòng họp rồi.
Ba sai lầm hay gặp khi mới học entropy
Nhầm "entropy cao" với "data xấu"
Entropy cao không phải là tiêu cực. Dữ liệu lý thuyết đa dạng (nhiều kết quả đều nhau) cần entropy cao để mô tả. Ví dụ: ảnh nén sau cùng (JPEG đã nén mạnh) có entropy gần cực đại, nhưng đó là vì đã bỏ hết dư thừa, không phải vì tệ.Nhầm entropy với variance (phương sai)
Variance đo độ phân tán quanh trung bình (biến số liên tục). Entropy đo độ bất định (bao nhiêu kết quả có thể). Hai khái niệm khác hẳn nhau, dùng sai sẽ sai toàn bộ phân tích.Quên rằng KL không đối xứng
Viết KL(p ‖ q) rồi "dùng lại" cho KL(q ‖ p): hai giá trị có thể khác xa nhau. Luôn đọc kỹ thứ tự; nếu cần đối xứng, dùng Jensen-Shannon divergence.Đi từ entropy đến language model (LLM)
Một language model dự đoán ký tự (hoặc token) tiếp theo dựa trên các ký tự đã xuất hiện. Chất lượng của model thường được đo bằng perplexity:
Nếu cross-entropy của model trên một đoạn văn bản là 2 bit/token thì perplexity là 4. Trung bình model đang "cân đối" giữa 4 token khả dĩ ở mỗi bước. Càng nhỏ càng giỏi. Các LLM tiếng Anh hiện đại đạt PPL khoảng 10 đến 30 trên văn bản thông thường.
Entropy xuất hiện ở rất nhiều nơi trong ML: loss functions, VAE, distillation, decision tree (information gain), và cả trong nén dữ liệu (ZIP, JPEG, H.265). Đây là "ngôn ngữ chung" nối xác suất, thống kê và machine learning.
Một bảng nhanh entropy vài nguồn dữ liệu
| Nguồn | Đặc điểm | H xấp xỉ |
|---|---|---|
| Đồng xu công bằng | 2 kết quả đều nhau | 1 bit |
| Xúc xắc 6 mặt fair | 6 kết quả đều nhau | 2,58 bit |
| Chữ cái tiếng Anh | 26 chữ, 'e' rất phổ biến | ≈ 4,1 bit/chữ |
| Văn bản tiếng Việt | Có dấu, phân phối lệch | ≈ 4,7 bit/ký tự |
| Byte ngẫu nhiên | 256 giá trị đều nhau | 8 bit (tối đa) |
Văn bản có "dư thừa" lớn: lý thuyết cần 8 bit/ký tự ASCII, nhưng thực tế chỉ cần khoảng 4,7 bit/ký tự tiếng Việt. Đây là lý do ZIP nén văn bản rất tốt: nó chỉ cần "đánh thuế" phần dư thừa đó.
- Surprise của một sự kiện bằng −log₂ p. Càng hiếm càng bất ngờ.
- Entropy H(X) là surprise trung bình. Max khi phân phối đồng đều, bằng 0 khi chắc chắn.
- Cross-entropy H(p, q) là loss function cho phân loại. Tối thiểu CE đồng nghĩa tối thiểu KL.
- KL(p ‖ q) ≥ 0, bằng 0 khi p = q. Không đối xứng, nên chọn thứ tự có chủ đích.
- Bit và nat chỉ khác nhau về cơ số logarit, kết quả lý thuyết là một.
Xem ứng dụng thực tế: Entropy trong nén file (ZIP, JPEG, H.265). Bài này cho thấy Shannon đặt giới hạn lý thuyết cho mọi thuật toán nén, và Huffman gán mã ngắn cho ký tự phổ biến.
Kiểm tra hiểu biết
Xúc xắc 6 mặt công bằng. Entropy H(X) bằng bao nhiêu bit?