Sampling Temperature vs Top-p Khác Gì Nhau?
Temperature và Top-p là hai tham số quan trọng nhất điều khiển cách AI chọn từ tiếp theo. Mặc dù cả hai đều ảnh hưởng đến độ “sáng tạo” của văn bản, chúng hoạt động theo cơ chế hoàn toàn khác nhau.
Nói ngắn gọn: Temperature thay đổi xác suất của tất cả từ trước khi chọn, còn Top-p chỉ giới hạn danh sách từ được phép chọn.
Temperature Là Gì?
Temperature (nhiệt độ) là một số từ 0 đến 2, nhân vào logits (điểm số thô) của mô hình trước khi áp dụng softmax. Khi temperature thấp, mô hình thiên về các từ có xác suất cao nhất. Khi temperature cao, phân phối xác suất trở nên phẳng hơn.
Ví dụ: Với temperature = 0.2, AI gần như luôn chọn từ có điểm cao nhất. Với temperature = 1.5, AI bắt đầu chọn những từ bất ngờ hơn, đôi khi khá vô lý.
Mình hay hình dung temperature như một chiếc núm âm lượng. Vặn nhỏ thì AI rất “đều”, cứ theo khuôn mẫu. Vặn to thì AI “pha biến”, thỉnh thoảng nói chuyện rất thú vị nhưng cũng dễ lan man.
Top-p Là Gì?
Top-p (hay Nucleus Sampling) là một giá trị từ 0 đến 1. Thay vì thay đổi xác suất như temperature, Top-p chỉ giữ lại những từ có tổng xác suất tích lũy đạt ngưỡng p, rồi chọn ngẫu nhiên trong tập đó.
Ví dụ: Với Top-p = 0.9, AI sắp xếp tất cả từ theo xác suất giảm dần, cộng dồn cho đến khi đạt 90%, rồi bỏ qua phần còn lại. Những từ cực kỳ hiếm (nằm ngoài 90%) sẽ bị loại hoàn toàn.
Cách này thông minh ở chỗ nó tự động điều chỉnh số lượng từ được xem xét. Nếu một từ rõ ràng là đúng (xác suất 95%), tập nucleus chỉ có 1-2 từ. Nếu nhiều từ có xác suất ngang nhau, tập nucleus sẽ rộng hơn.
Nên Dùng Cái Nào?
Trong thực tế, bạn không phải chọn một trong hai. Hầu hết API (OpenAI, Anthropic, Google) đều cho phép thiết lập cả hai cùng lúc. Quy tắc phổ biến mà mình thấy hiệu quả:
Văn bản kỹ thuật, code, trả lời factual: Temperature 0.2-0.3, Top-p 0.9. Giữ output gọn gàng, ít sai sót.
Văn bản sáng tạo, storytelling, marketing: Temperature 0.7-0.9, Top-p 0.95. Cho phép sáng tạo nhưng vẫn kiểm soát được chất lượng.
Brainstorm ý tưởng: Temperature 1.0-1.2, Top-p 0.95. Càng nhiều ý bất ngờ càng tốt, sau đó tự lọc.
Sự Khác Biệt Cốt Lõi Là Gì?
Điểm khác biệt quan trọng nhất: Temperature thay đổi phân phối xác suất, còn Top-p cắt bỏ phần đuôi của phân phối.
Giả sử mô hình đang chọn giữa 5 từ: “cat” (60%), “dog” (20%), “bird” (10%), “fish” (7%), “snake” (3%).
Với Temperature = 0.5, xác suất trở thành: “cat” (82%), “dog” (14%), “bird” (3%), “fish” (0.7%), “snake” (0.1%). Phân phối nhọn hơn, “cat” gần như chắc chắn được chọn.
Với Top-p = 0.9, chỉ giữ “cat” (60%) + “dog” (20%) + “bird” (10%) = 90%. “fish” và “snake” bị loại. Nhưng 3 từ còn lại vẫn giữ tỷ lệ gốc, chỉ renormalize lại: “cat” (67%), “dog” (22%), “bird” (11%).
Như bạn thấy, Temperature “nén” khoảng cách giữa các từ, còn Top-p chỉ “cắt đuôi” rồi giữ nguyên tỷ lệ phần còn lại.
Khi Nào Nên Chỉ Dùng Một Tham Số?
Nhiều developer thiết lập Top-p = 1 (tắt) rồi chỉ tinh chỉnh Temperature, hoặc ngược lại. Mình nghiêng về cách đầu tiên vì Temperature trực quan hơn, dễ cảm nhận.
Tuy nhiên, có một trường hợp Top-p tốt hơn rõ ràng: khi bạn muốn ngăn AI chọn từ vô lý nhưng vẫn giữ sự đa dạng. Temperature thấp sẽ khiến AI lặp từ, trong khi Top-p thấp chỉ cần loại bỏ đuôi là đủ.
Một quy tắc nhỏ từ kinh nghiệm của mình: nếu thấy AI bị lặp từ (repetition), hãy tăng Temperature lên thay vì giảm Top-p. Nếu thấy AI “nói nhảm”, hãy giảm Top-p trước khi giảm Temperature.
Lời Kết
Temperature và Top-p không đối lập mà bổ sung cho nhau. Temperature kiểm soát độ “mạnh mẽ” của việc chọn từ, còn Top-p ngăn các lựa chọn quá xa lạ xuất hiện. Hiểu được cơ chế của cả hai giúp bạn tinh chỉnh output AI chính xác theo ý muốn, thay vì cứ “thử và sai” mù quáng.
Nếu mới bắt đầu, mình khuyên cứ để Temperature mặc định (thường là 0.7-1.0) và chỉ động vào Top-p khi thấy kết quả không ổn. Đừng cố tinh chỉnh cả hai cùng lúc nếu chưa hiểu rõ cách chúng tương tác.
