Zoom-in: Decoding Parameters

Khi bạn gửi cùng một câu lệnh (prompt) cho một LLM nhiều lần, bạn sẽ nhận được các câu trả lời khác nhau, đôi khi mang tính sáng tạo cao, lúc khác lại rất chuẩn xác. Làm thế nào để một thuật toán toán học khô khan có thể "sáng tạo" và thay đổi tính cách linh hoạt như vậy?
Tất cả nằm ở hậu trường của quá trình chọn từ, được điều khiển bởi ba Decoding Parameters (tham số giải mã): Temperature, Top-P, và Top-K.
Hãy phóng to vào bước cuối cùng trước khi mô hình đưa ra từ ngữ.
Layer 1 — Logits và Softmax: Bảng xác suất thô
Khi mô hình tính toán xong token tiếp theo, sản phẩm đầu ra của nó không phải là một từ cụ thể mà là một danh sách điểm số thô chưa chuẩn hóa, gọi là Logits của toàn bộ các từ có trong vocabulary.
Danh sách Logits này sau đó được đưa qua hàm Softmax để biến đổi thành một phân phối xác suất (probability distribution) có tổng bằng 1 (tức là 100%).
Ví dụ, sau chuỗi từ: "Tôi muốn uống một ly...", phân phối xác suất đầu ra có thể là:
cà phê: 45%nước: 30%trà: 15%xăng: 0.001%
Nếu mô hình luôn luôn chọn từ có xác suất cao nhất (cà phê), đây gọi là phương pháp Greedy Search (tìm kiếm tham lam). Phương pháp này khiến câu trả lời của mô hình trở nên rất đơn điệu, lặp đi lặp lại và thiếu tự nhiên. Để tạo ra sự tự nhiên, chúng ta cần đưa độ ngẫu nhiên vào quá trình lựa chọn.
Layer 2 — Temperature: Làm phẳng hoặc làm dốc xác suất
Temperature (nhiệt độ) là một hệ số dùng để điều chỉnh trực tiếp các Logits trước khi đưa vào hàm Softmax.
Công thức điều chỉnh logits: $$\text{Logit mới} = \frac{\text{Logit cũ}}{Temperature}$$
graph TD
A[Logits: Điểm số thô] -->|Chia cho Temperature T| B[Logits mới]
B -->|Qua hàm Softmax| C[Phân phối xác suất]
subgraph Tác động của Temperature
D[T thấp: Phân phối dốc - Chỉ chọn từ đầu]
E[T cao: Phân phối phẳng - Các từ bằng cơ hội]
end
- Khi Temperature thấp (tiến về 0): Các logits cao sẽ bị phóng đại vượt trội so với các logits thấp. Phân phối xác suất trở nên cực kỳ dốc. Mô hình sẽ hầu như luôn chọn từ đứng đầu. Kết quả đầu ra có tính ổn định cao, chính xác về logic nhưng thiếu tính đa dạng (phù hợp khi viết code hoặc giải toán).
- Khi Temperature cao (lớn hơn 1.0): Sự chênh lệch giữa các logits bị thu hẹp lại. Phân phối xác suất trở nên phẳng hơn. Các từ có xác suất thấp (như từ
xăngở ví dụ trên) đột ngột có cơ hội lớn hơn để được chọn. Kết quả sẽ rất bất ngờ và sáng tạo, nhưng dễ dẫn đến Hallucination (hiện tượng ảo giác) hoặc câu chữ vô nghĩa.
Layer 3 — Top-K và Top-P: Những chiếc màng lọc thông minh
Nếu chỉ tăng Temperature, mô hình rất dễ chọn phải các từ hoàn toàn lạc đề. Vì vậy, người ta kết hợp thêm hai bộ lọc thông minh là Top-K và Top-P để giới hạn phạm vi lựa chọn.
1. Top-K
Bộ lọc này yêu cầu mô hình chỉ được phép chọn từ trong danh sách $K$ từ có xác suất cao nhất.
- Ví dụ: Nếu $K = 50$, mô hình sẽ loại bỏ hoàn toàn các từ xếp từ vị trí thứ 51 trở đi trong bảng xếp hạng xác suất, bất kể Temperature có cao thế nào. Điều này đảm bảo những từ quá xa lạ sẽ không bao giờ xuất hiện.
2. Top-P (còn gọi là Nucleus Sampling)
Thay vì lấy số lượng từ cố định như Top-K, Top-P sẽ lấy một tập hợp các từ đứng đầu sao cho tổng xác suất của chúng cộng lại vừa đủ đạt đến mức $P$ (ví dụ: $P = 0.9$ hay 90%).
Giả sử có bảng xác suất:
- Từ A: 60%
- Từ B: 25%
- Từ C: 10%
- Từ D: 5%
Với Top-P = 0.9 (90%):
Mô hình sẽ cộng dồn: A (60%) + B (25%) = 85% (chưa đủ) -> cộng tiếp C (10%) = 95% (đã vượt 90%).
Mô hình chỉ được chọn ngẫu nhiên trong nhóm [A, B, C]. Từ D bị loại bỏ hoàn toàn.
Sự linh hoạt của Top-P nằm ở chỗ: nếu từ đứng đầu có xác suất quá cao (ví dụ từ đầu tiên đã chiếm 95%), mô hình sẽ chỉ chọn duy nhất từ đó mà không lan man sang từ khác. Ngược lại, nếu các từ đều có xác suất thấp ngang nhau, tập hợp lựa chọn sẽ tự động mở rộng để mô hình thỏa sức sáng tạo.
Full picture
graph TD
Logits[Logits: Điểm số thô của từ vựng] -->|1. Chia cho Temperature| Scaled[Logits đã điều chỉnh]
Scaled -->|2. Hàm Softmax| Prob[Bảng xác suất của từ vựng]
Prob -->|3. Bộ lọc Top-K| FilterK[Giới hạn K từ có điểm cao nhất]
FilterK -->|4. Bộ lọc Top-P| FilterP[Giới hạn tổng xác suất tích lũy đạt P]
FilterP -->|5. Lấy mẫu ngẫu nhiên| Selection[Chọn 1 token và sinh kết quả]
style Logits fill:#1e293b,stroke:#475569,color:#cbd5e1
style Scaled fill:#1e293b,stroke:#475569,color:#cbd5e1
style Prob fill:#1e293b,stroke:#475569,color:#cbd5e1
style FilterK fill:#1e293b,stroke:#475569,color:#cbd5e1
style FilterP fill:#1e293b,stroke:#475569,color:#cbd5e1
style Selection fill:#1e293b,stroke:#475569,color:#cbd5e1
Takeaway
Việc kiểm soát độ ngẫu nhiên và sáng tạo của LLM không nằm ở quá trình suy luận sâu bên trong mạng thần kinh, mà hoàn toàn được quyết định bởi bộ lọc xác suất ở bước decoding cuối cùng. Bằng cách kết hợp giữa việc kéo giãn phân phối (Temperature) và giới hạn động tập hợp lựa chọn (Top-K/Top-P), lập trình viên có thể tùy biến một mô hình duy nhất chuyển đổi linh hoạt giữa hai thái cực: cẩn trọng, chính xác tuyệt đối phục vụ logic/lập trình, hoặc bay bổng, bất ngờ để brainstorm ý tưởng.
Related Posts
Zoom-in: LLM
Đoán token tiếp theo ở quy mô siêu máy tính. Phóng to vào cơ chế hoạt động thực sự đằng sau sự thông minh của AI.
Zoom-in: Rate Limiter
Gửi quá nhiều request liên tiếp lên API và nhận về mã lỗi 429 Too Many Requests. Người gác cổng Rate Limiter bảo vệ hệ thống như thế nào?
Zoom-in: WebSocket
Chat app cập nhật tin nhắn tức thời mà không cần reload trang. Cách WebSocket giải thoát ứng dụng khỏi giới hạn một chiều của HTTP.