Information Theory
Lý thuyết thông tin
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 = "độ bất ngờ trung bình"
Hãy tưởng tượng bạn đang nhắn tin cho bạn bè về thời tiết ở Sài Gòn bằng điện báo tính tiền theo ký tự. Nếu hầu hết ngày là nắng, bạn nên đặt "nắng" = một ký tự ngắn, còn "mưa đá" thì nhận ký tự dài — vì nó hiếm, 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 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) — bất định tối đa. Khi đồng xu lệch hẳn (P = 0.99), entropy tụt về gần 0 — gần như luôn biết trước kết quả.
Playground 2 — Xúc xắc 4 mặt vs 6 mặt vs "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 mô hình 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 mô hình — 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 mô hình
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) — không thể giảm thêm. Đẩy q về 1% hoặc 99%, KL tăng vọt — đúng với ý nghĩa "mô hình 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 — ít trực quan hơn.
Entropy = mức bất ngờ trung bình. Cross-entropy = số bit trung bình khi bạn mã hoá dữ liệu thật bằng mô hình sai. KL divergence = 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 một việc rất đơn giản: thu nhỏ phần chi phí dư — tức là làm xác suất mô hình phát ra tiến về xác suất thật của nhãn.
Xúc xắc 6 mặt công bằng — entropy bao nhiêu bit?
Một mô hình 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 ở 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 mô hình 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 mô hình, 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] — chính là loss cho phân loại ở PyTorch, 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à ~ 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 — 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 mô hình ngôn ngữ (LLM)
Mô hình ngôn ngữ 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 mô hình thường được đo bằng perplexity:
Nếu cross-entropy của mô hình trên một đoạn văn bản là 2 bit/token, thì perplexity là 4 — trung bình mô hình "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–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). Nó là "ngôn ngữ chung" nối giữa xác suất, thống kê và học máy.
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 ~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 = −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, = 0 khi chắc chắn.
- Cross-entropy H(p, q) = loss function cho phân loại — tối thiểu CE = tối thiểu KL.
- KL(p ‖ q) ≥ 0, = 0 khi p = q. Không đối xứng — chọn thứ tự có chủ đích.
- Bit và nat chỉ khác nhau về cơ số logarit — kết quả lý thuyết giống nhau.
Xem ứng dụng thực tế: Entropy trong nén file (ZIP, JPEG, H.265) — cách 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?