Bản chất tầng Embedding như một tầng Tuyến tính One-Hot (Embedding as Linear)
Trong Xử lý Ngôn ngữ Tự nhiên (NLP) và LLM, một câu hỏi sư phạm kinh điển là: Tầng Embedding thực chất là gì?
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: linear-layer-forward-backward-numpy.
Nội dung đề bài
Mô tả bài toán
Trong Xử lý Ngôn ngữ Tự nhiên (NLP) và LLM, một câu hỏi sư phạm kinh điển là: Tầng Embedding thực chất là gì? Về mặt toán học: Một tầng Embedding E với từ điển kích thước V và số chiều vector D chính là một tầng tuyến tính không có bias, nhận đầu vào là vector One-Hot xonehot ∈ RV: e = xonehot Wemb trong đó Wemb ∈ RV × D. Vì xonehot chỉ có duy nhất số 1 tại vị trí token ID k, phép nhân ma trận trên tương đương tuyệt đối với việc trích xuất hàng thứ k của ma trận: Wemb[k].
Hãy viết hàm verify_embedding_equivalence(token_ids: list[int], vocab_size: int, W_emb: np.ndarray) -> tuple[np.ndarray, np.ndarray, bool]:
- Phương pháp 1: Dùng Fancy Indexing trực tiếp
W_emb[token_ids]. - Phương pháp 2: Biến đổi
token_idsthành ma trận One-Hot kích thước (N, V), sau đó thực hiện phép nhân ma trậnone_hot @ W_emb. - Kiểm tra xem 2 phương pháp có cho ra kết quả trùng khớp hoàn toàn hay không (
np.allclose). - Trả về
(out_indexing, out_onehot, is_equivalent).
Input
- Hàm
verify_embedding_equivalence(token_ids,vocab_size,W_emb): 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
verify_embedding_equivalence: Trả về kết quả kiểuTuple[np.ndarray, np.ndarray, bool]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
vocab_size = 10
embed_dim = 4
W_emb = np.random.randn(vocab_size, embed_dim)
tokens = [2, 5, 0, 9]
idx_out, oh_out, is_eq = verify_embedding_equivalence(tokens, vocab_size, W_emb)Output
([[ 0.2019, 1.04 , 0.3941, -0.1213],
[-0.9374, 1.5861, 0.0381, 0.5649],
[ 0.0158, -0.4045, -1.3129, -1.694 ],
[-0.7665, -1.6971, 1.0417, -1.7963]], [[ 0.2019, 1.04 , 0.3941, -0.1213],
[-0.9374, 1.5861, 0.0381, 0.5649],
[ 0.0158, -0.4045, -1.3129, -1.694 ],
[-0.7665, -1.6971, 1.0417, -1.7963]], True)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
W = np.random.randn(5, 2)Output
[[-0.3406, -0.2243],
[-0.0695, 0.0358],
[ 0.1381, -2.4154],
[ 0.0147, -2.2296],
[ 0.7322, -0.5551]]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.
