Cắt nucleus (top-p) cho phân phối nhỏ
Lấy mẫu nucleus chỉ giữ tập token nhỏ nhất mà tổng xác suất đạt tới ngưỡng p. Khác với
Tiến độ của tôi ở bài này
Điểm và code bạn nộp đượ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: python-basics, python-sorting.
Nội dung đề bài
Mô tả bài toán
Lấy mẫu nucleus chỉ giữ tập token nhỏ nhất mà tổng xác suất đạt tới ngưỡng p. Khác với top-k, kích thước tập được giữ thay đổi theo hình dạng phân phối: phân phối sắc giữ ít token, phân phối phẳng giữ nhiều token.
Yêu cầu
Viết hàm nucleus_top_p(probs, p) trả về danh sách chỉ số của tập nucleus.
Quy ước nộp bài
Nộp hàm nucleus_top_p trong solution.py. Hệ thống gọi hàm trực tiếp, so danh sách chỉ số với kỳ vọng; không đọc stdin và không in ra stdout.
Input
- probs: phân phối xác suất (tổng bằng 1).
- p: ngưỡng tích luỹ, số thực trong khoảng (0, 1].
Output
Danh sách chỉ số sắp xếp tăng dần: duyệt token theo xác suất giảm dần (hòa thì chỉ số nhỏ trước), cộng dồn đến khi tổng đạt p thì dừng.
Ràng buộc
- p phải lớn hơn 0; ném ValueError khi p <= 0.
- Duyệt theo xác suất đã sắp giảm dần, không theo thứ tự đầu vào.
- Kết quả là danh sách chỉ số tăng dần.
Ví dụ 1
Input
nucleus_top_p(probs=[0.5, 0.3, 0.15, 0.05], p=0.6)
Output
[0, 1]
Ví dụ 2
Input
nucleus_top_p(probs=[0.5, 0.3, 0.15, 0.05], p=0.95)
Output
[0, 1, 2]
Giải thích
Với probs = [0.5, 0.3, 0.15, 0.05] và p = 0.6, token 0 cho tổng 0.5, thêm token 1 thành 0.8 vượt ngưỡng, nên kết quả là [0, 1].
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.
