Trong các mô hình ngôn ngữ lớn như GPT-3.5 hoặc GPT-4, tham số "temperature" là một tham số quan trọng quyết định tính ngẫu nhiên của văn bản được sinh ra. Vậy temperature được sử dụng như thế nào và làm sao để điều chỉnh nó? Cùng tìm hiểu!
Temperature là gì?
Khi mô hình ngôn ngữ sinh văn bản, nó đánh giá mỗi từ trong từ vựng bằng một giá trị xác suất (logits). Các xác suất này sau đó được chuyển thành phân phối xác suất bằng hàm softmax, giúp mô hình lựa chọn từ tiếp theo. Temperature điều chỉnh cách phân phối này hoạt động:
- Temperature thấp (<1): Phân phối xác suất trở nên sắc nét hơn, từ có xác suất cao nhất sẽ được lựa chọn thường xuyên. Kết quả là văn bản mạch lạc và quyết định.
- Temperature cao (>1): Phân phối xác suất trở nên phẳng hơn, cho phép mô hình lựa chọn những từ ít khả dĩ xảy ra. Kết quả là văn bản sáng tạo, nhưng cũng có nguy cơ không mạch lạc.
- Temperature = 1: Mô hình giữ cân bằng giữa tính ngẫu nhiên và tính quyết định.
Minh họa temperature trong thực tế
Temperature thấp
Với temperature rất thấp (vd: ), văn bản được sinh sẽ gần như giống nhau trong tất cả lần chạy:
Hình 1: Kết quả khi temperature rất thấp đem lại văn bản mạch lạc, nhưng lắp lại. Nguồn ảnh: https://blog.dailydoseofds.com/p/what-is-temperature-in-llms
Temperature cao
Ngược lại, với , văn bản trở nên ngẫu nhiên, thường không mạch lạc:
Hình 2: Output ngẫu nhiên khi temperature quá cao. Nguồn ảnh: https://blog.dailydoseofds.com/p/what-is-temperature-in-llms
Cách hàm softmax được điều chỉnh bởi temperature
Các mô hình phân loại truyền thống sử dụng hàm softmax để tạo ra dự đoán cuối cùng từ các logits (Xem hình 3). Hay nói một cách khác, ằng cách chọn token có điểm softmax cao nhất, khiến mô hình có tính chất quyết định (deterministic).
Hình 3. Mô hình phân loại truyền thống. Nguồn ảnh: https://blog.dailydoseofds.com/p/what-is-temperature-in-llms
Trong LLMs, lớp đầu ra bao gồm toàn bộ từ vựng. Nhưng thay vì sử dụng trực tiếp xác suất softmax, LLMs thực hiện lấy mẫu dự đoán từ các xác suất softmax này (Hình 4):
Hình 4: Mô hình LLMs lấy mẫu từ phân phối xác suất softmax. Nguồn ảnh: https://blog.dailydoseofds.com/p/what-is-temperature-in-llms
Tức là, “Token 1” có xác suất cao nhất (0.86) để được chọn, nhưng nó có thể không được chọn làm token tiếp theo do chúng ta sử dụng phương pháp lấy mẫu.
Do đó, temperature được thêm vào hàm softmax để điều chỉnh (công thức xem hình 5), qua đó ảnh hưởng đến quá trình lấy mẫu như sau:
Hình 5: Công thức hàm softmax truyền thống so với hàm softmax có thêm tham số temperature. Nguồn ảnh: https://blog.dailydoseofds.com/p/what-is-temperature-in-llms
Tham số temperature này ảnh hưởng đến kết quả lấy mẫu đầu ra như sau:
- Nếu temperature thấp, các xác suất trông giống giá trị max hơn là giá trị "soft-max" (Hình 6). Điều này có nghĩa là quá trình lấy mẫu gần như chắc chắn sẽ chọn token có xác suất cao nhất. Quá trình sinh kết quả khi đó sẽ tham lam (greedy) và gần như quyết định.
Hình 5: Quá trình lấy mẫu gần như chắc chắn sẽ chọn token có xác suất cao nhất. Nguồn ảnh: https://blog.dailydoseofds.com/p/what-is-temperature-in-llms
- Nếu temperature cao, các xác suất bắt đầu trông giống như một phân phối đồng đều (Hình 7). Điều này có nghĩa là quá trình lấy mẫu có thể chọn bất kỳ token nào. Quá trình sinh kết quả khi đó sẽ ngẫu nhiên và rất stochastic (ngẫu nhiên hóa nặng).
Hình 6: Các xác suất bắt đầu trông giống như một phân phối đồng đều. Nguồn ảnh: https://blog.dailydoseofds.com/p/what-is-temperature-in-llms
Lưu ý nhanh:
Trên thực tế, mô hình có thể tạo ra các kết quả khác nhau ngay cả khi temperature = 0. Nguyên nhân là do vẫn còn một số nguồn ngẫu nhiên khác, như race conditions trong các luồng multithreaded.
Một số thực hành tốt nhất khi sử dụng temperature :
- Đặt giá trị temperature thấp để tạo ra các phản hồi dễ dự đoán.
- Đặt giá trị temperature cao để tạo ra các phản hồi sáng tạo và ngẫu nhiên hơn.
- Một giá trị temperature quá cao hiếm khi có ích trong thực tế.
Bài viết tham khảo: https://blog.dailydoseofds.com/p/what-is-temperature-in-llms