Kỹ thuật phạt lặp từ (Repetition Penalty) theo kiến trúc CTRL
Các mô hình ngôn ngữ tự hồi quy thường có xu hướng tự khuếch đại xác suất của các từ đã xuất hiện, dẫn đến vòng lặp vô nghĩa (như *"và anh ấy nói và anh ấy nói..."*).
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
Các mô hình ngôn ngữ tự hồi quy thường có xu hướng tự khuếch đại xác suất của các từ đã xuất hiện, dẫn đến vòng lặp vô nghĩa (như *"và anh ấy nói và anh ấy nói..."*).
Kỹ thuật Repetition Penalty (Keskar et al., CTRL, 2019) phạt có hệ thống tất cả các token đã từng xuất hiện trong lịch sử ngữ cảnh generated_tokens: Cho hệ số phạt θ ≥ 1.0: Với mỗi token i ∈ set(generated_tokens): z'i = zi / θ & nếu zi > 0
zi · θ & nếu zi ≤ 0
Lưu ý: Vì zi ≤ 0 có giá trị âm, việc nhân với θ > 1.0 sẽ làm z'i càng âm hơn (nhỏ hơn nữa), đảm bảo trong cả hai trường hợp xác suất của token đã xuất hiện luôn bị hạ thấp!
Hãy viết hàm apply_repetition_penalty(logits: np.ndarray, generated_tokens: list[int], penalty: float = 1.2) -> np.ndarray:
- Kiểm tra
penalty >= 1.0. Nếupenalty < 1.0, raiseValueError. logits: mảng 1D. Nếu không hợp lệ, raiseValueError.- Bỏ qua các token trong
generated_tokensvượt quá kích thước từ điển (không nằm trong[0, len(logits) - 1]). - Trả về bản sao mảng logits đã áp dụng hệ số phạt.
Input
- Hàm
apply_repetition_penalty(logits,generated_tokens,penalty): 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
apply_repetition_penalty: Trả về kết quả kiểunp.ndarraytheo đú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([4.0, -2.0, 1.0])
penalized = apply_repetition_penalty(logits, generated_tokens=[0, 1], penalty=2.0)Output
[ 2., -4., 1.]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([1.0, 2.0])
penalized = apply_repetition_penalty(logits, generated_tokens=[99, -5], penalty=1.5)Output
[1., 2.]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.
