Lấy mẫu theo nhiệt độ (Temperature-Scaled Sampling)
Tham số nhiệt độ (T > 0) điều khiển độ ngẫu nhiên của văn bản sinh ra bằng cách làm phẳng hoặc làm nhọn phân phối xác suất:
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: next-token-probability-distribution.
Nội dung đề bài
Mô tả bài toán
Tham số nhiệt độ (T > 0) điều khiển độ ngẫu nhiên của văn bản sinh ra bằng cách làm phẳng hoặc làm nhọn phân phối xác suất:
z'i = ziT pi = softmax(z')i
- Khi T → 0: Phân phối tiến dần về hàm delta Dirac tại argmax z (tương đương Greedy Decoding).
- Khi T = 1.0: Phân phối xác suất ban đầu được giữ nguyên.
- Khi T → ∞: Phân phối tiến dần về phân phối đều (Uniform Distribution), mọi token có cơ hội được chọn như nhau.
Hãy viết hàm temperature_sampling(logits: np.ndarray, temperature: float = 1.0, rng: np.random.Generator = None) -> int:
- Kiểm tra T > 0. Nếu T ≤ 0, raise
ValueError. - Nếu
logitskhông phải mảng 1D hoặc rỗng, raiseValueError. - Nếu
rnglàNone, khởi tạo mặc định bằngnp.random.default_rng(42). - Tính phân phối xác suất có điều chỉnh nhiệt độ và trả về token ID (kiểu
int) được lấy mẫu theo phân phối đó.
Input
- Hàm
temperature_sampling(logits,temperature,rng): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.
Output
- Hàm
temperature_sampling: Trả về kết quả kiểuinttheo đúng đặc tả kỹ thuật và kích thước quy định.
Ràng buộc
- Thời gian chạy tối đa: 6000ms.
- Giới hạn bộ nhớ: 512MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
logits = np.array([10.0, 1.0, 0.0])
rng = np.random.default_rng(123)
samples = [temperature_sampling(logits, temperature=0.01, rng=rng) for _ in range(50)]Output
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
logits = np.array([10.0, 0.0, 0.0])
rng = np.random.default_rng(999)
samples = [temperature_sampling(logits, temperature=1000.0, rng=rng) for _ in range(300)]
counts = np.bincount(samples, minlength=3)Output
[103, 104, 93]Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
