Phạt lặp cho một token
Khi sinh văn bản, mô hình dễ lặp lại token vừa sinh. Phạt lặp giảm logit của token đã
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-lists.
Nội dung đề bài
Mô tả bài toán
Khi sinh văn bản, mô hình dễ lặp lại token vừa sinh. Phạt lặp giảm logit của token đã xuất hiện để mô hình ít chọn lại nó. Với logit dương, phép phạt chia cho hệ số; với logit âm, phép phạt nhân (đẩy xa 0 hơn) để bảo toàn chiều.
Yêu cầu
Viết hàm apply_repetition_penalty(logits, token_index, penalty) trả về dãy logit mới sau khi phạt đúng token được chỉ định.
Quy ước nộp bài
Nộp hàm apply_repetition_penalty trong solution.py. Hệ thống gọi hàm trực tiếp, so dãy giá trị với kỳ vọng; không đọc stdin và không in ra stdout.
Input
- logits: dãy điểm số.
- token_index: chỉ số token cần phạt.
- penalty: hệ số phạt, số thực dương.
Output
Dãy logit mới giống dãy cũ trừ vị trí token_index. Nếu logit tại đó dương thì chia cho penalty, nếu không dương thì nhân với penalty.
Ràng buộc
- penalty phải lớn hơn 0; ném ValueError khi penalty <= 0.
- token_index phải nằm trong dãy; ném ValueError nếu ngoài phạm vi.
- Chỉ thay đổi logit tại token_index, giữ nguyên các vị trí khác.
Ví dụ 1
Input
apply_repetition_penalty(logits=[2.0, -1.0, 0.5], token_index=0, penalty=2.0)
Output
[1.0, -1.0, 0.5]
Ví dụ 2
Input
apply_repetition_penalty(logits=[2.0, -1.0, 0.5], token_index=1, penalty=2.0)
Output
[2.0, -2.0, 0.5]
Giải thích
Với logits = [2.0, -1.0, 0.5], token_index = 0 và penalty = 2.0, logit dương 2.0 bị chia thành 1.0, nên kết quả là [1.0, -1.0, 0.5].
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.
