Vòng lặp huấn luyện BPE hoàn chỉnh (BPE Training Loop & Merge Tables)
Thuật toán huấn luyện BPE hoàn chỉnh kết hợp việc đếm cặp và gộp lặp đi lặp lại qua M bước (num_merges):
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: bpe-single-merge-step.
Nội dung đề bài
Mô tả bài toán
Thuật toán huấn luyện BPE hoàn chỉnh kết hợp việc đếm cặp và gộp lặp đi lặp lại qua M bước (num_merges):
Quy trình:
- Chuẩn bị ngữ liệu: Nhận danh sách các từ thô kèm tần suất (ví dụ:
{"low": 5, "lower": 2, "newest": 6, "widest": 3}).
Tách từng từ thành tuple các ký tự và thêm ký hiệu kết thúc từ </w>: "low" -> ('l', 'o', 'w', '</w>').
- Khởi tạo danh sách quy tắc gộp
merges: list[tuple[str, str]] = []. - Lặp lại tối đa
num_mergeslần: - Đếm tần suất tất cả các cặp ký hiệu liền kề.
- Nếu không còn cặp nào (tất cả các từ đã co thành 1 ký hiệu duy nhất), dừng sớm.
- Chọn cặp có tần suất lớn nhất. Nếu có nhiều cặp hòa tần suất, chọn theo thứ tự từ điển tăng dần
(p0, p1)để đảm bảo tính tất định. - Lưu cặp được chọn vào
merges. - Thực hiện gộp cặp này trên toàn bộ ngữ liệu.
- Trích xuất tập từ vựng cuối cùng
vocab: set[str]gồm tất cả các ký hiệu xuất hiện trong ngữ liệu sau M bước gộp.
Hãy viết hàm train_bpe(word_freqs: dict[str, int], num_merges: int) -> tuple[list[tuple[str, str]], set[str]]:
- Trả về tuple
(merges, vocab).
Input
- Hàm
train_bpe(word_freqs,num_merges): 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
train_bpe: Trả về kết quả kiểutuple[list[tuple[str, str]], set[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
word_freqs = {'low': 5, 'lower': 2, 'newest': 6, 'widest': 3}
merges, vocab = train_bpe(word_freqs, num_merges=3)Output
([('e', 's'), ('es', 't'), ('est', '</w>')], {'i', 'n', 'est</w>', 'r', 'd', '</w>', 'e', 'o', 'l', 'w'})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
word_freqs = {'hi': 1}
merges, vocab = train_bpe(word_freqs, num_merges=0)Output
([], {'h', '</w>', 'i'})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.
