Ánh xạ 256 bytes sang ký tự Unicode nhìn thấy được (GPT-2 Byte-to-Unicode Bijective Mapping)
Thuật toán BPE nguyên bản hoạt động trên chuỗi Unicode ký tự, dẫn đến kích thước từ điển cơ sở ban đầu rất lớn (hàng chục nghìn ký tự cho tiếng Trung, Nhật, Ả Rập, emoji).
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: character-level-tokenizer-vocab.
Nội dung đề bài
Mô tả bài toán
Thuật toán BPE nguyên bản hoạt động trên chuỗi Unicode ký tự, dẫn đến kích thước từ điển cơ sở ban đầu rất lớn (hàng chục nghìn ký tự cho tiếng Trung, Nhật, Ả Rập, emoji).
Radford et al. (GPT-2, 2019) đề xuất Byte-Level BPE:
- Mọi văn bản được mã hóa thành chuỗi các bytes (0 … 255). Bất kỳ văn bản UTF-8 nào trên thế giới đều biểu diễn được từ 256 byte này ⇒ OOV Rate bằng 0% tuyệt đối!
- Tuy nhiên, nhiều byte là ký tự điều khiển không in được (control characters như
\x00,\n,\r) hoặc khoảng trắng. Nếu để nguyên, các thư viện BPE regex sẽ bị lỗi. - Giải pháp: Ánh xạ 256 bytes sang 256 ký tự Unicode nhìn thấy được:
- Các byte in được thông thường:
- 33 ≤ b ≤ 126 (ký tự ASCII
!đến~) - 161 ≤ b ≤ 172 (ký tự Latin-1
¡đến¬) - 174 ≤ b ≤ 255 (ký tự Latin-1
®đếnÿ)
được giữ nguyên ký tự tương ứng: b ↦ chr(b).
- Đối với tất cả các byte còn lại (ví dụ 0..32, 127..160, 173):
Ánh xạ tuần tự sang các ký tự Unicode mới bắt đầu từ mã 256 (28): chr(256), chr(257), …
Hãy viết hàm bytes_to_unicode() -> dict[int, str]:
- Trả về dictionary ánh xạ đúng 256 số nguyên 0 … 255 sang 256 ký tự chuỗi có độ dài 1.
- Ánh xạ phải là song ánh (1-to-1): không có hai byte nào ánh xạ sang cùng một ký tự Unicode.
Input
- Hàm
bytes_to_unicode(): 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
bytes_to_unicode: Trả về kết quả kiểudict[int, str]theo đú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
mapping = bytes_to_unicode()Output
Dict with 256 keys: [33, 34, 35, 36, 37]...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.
