Embedding Là Một Bảng Tra Cứu, Không Phải Hàm
Lớp Đầu Tiên Sau Tokenizer
Tokenizer cung cấp cho mô hình các ID nguyên: [256, 1842, 7301, ...]. Một trong những việc đầu tiên transformer thực hiện là chuyển đổi mỗi ID thành một vector gồm d_model số thực. Vector đó tồn tại trong không gian d_model chiều (768 chiều đối với ANDREA-120M).
Một embedding layer là một bảng tra cứu, không phải một hàm. Hãy tưởng tượng một ma trận khổng lồ:
shape: (V, d_model)
hàng 0: [e_0_0, e_0_1, ..., e_0_767]
hàng 1: [e_1_0, e_1_1, ..., e_1_767]
...
hàng 8448: [e_8448_0, e_8448_1, ..., e_8448_767]
Token ID i chọn hàng i. Truy cập mảng trực tiếp. Không có phép toán, không có hàm kích hoạt. Chỉ là một chỉ số.
Các số thực có thể huấn luyện
Mỗi mục trong bảng đó bắt đầu như một số thực ngẫu nhiên nhỏ (thường được lấy từ phân phối chuẩn được chia tỷ lệ theo 1/sqrt(d_model)). Lan truyền ngược cập nhật từng hàng mỗi khi token ID của nó xuất hiện trong một batch. Sau khi huấn luyện, các token tương tự (cat, dog, pet) sẽ có các vector gần nhau; các token không liên quan (cat, Tuesday, xylophone) nằm xa nhau trong không gian vector.
Chi phí Embedding Token ANDREA-120M
| Số lượng | Giá trị |
|---|---|
| V | 8,449 |
| d_model | 768 |
| Tham số | 6,488,832 |
Khoảng 6.5M tham số nằm trong bảng nhúng token, chiếm khoảng 5.4% tổng số tham số của ANDREA-120M. Mỗi vị trí từ vựng nhận 768 số thực dấu phẩy động.
Tính Kích Thước Bảng Nhúng
Tích Vô Hướng Đo Độ Tương Tự
Vectơ như Mũi tên
Một vector 768 chiều tồn tại trong không gian mà con người không thể hình dung, nhưng cùng một đại số vẫn hoạt động ở mọi chiều. Hai phép toán chính quan trọng đối với transformer:
Độ lớn (độ dài của mũi tên):
||v|| = sqrt(v_0² + v_1² + ... + v_767²)
Tích vô hướng (độ thẳng hàng giữa hai mũi tên):
u · v = u_0 × v_0 + u_1 × v_1 + ... + u_767 × v_767
Tích vô hướng cho bạn biết điều gì
Hai sự kiện luôn đúng ở mọi chiều:
- u · v = ||u|| × ||v|| × cos(theta), trong đó theta là góc giữa hai vector.
- Các vector cùng hướng cho tích vô hướng dương lớn.
- Các vector ngược hướng cho tích vô hướng âm lớn.
- Các vector vuông góc cho tích vô hướng bằng 0.
Tích vô hướng = độ tương đồng chưa chuẩn hóa. Hai embedding token đã huấn luyện cho cat & dog có tích vô hướng cao vì lan truyền ngược đã đẩy chúng lại gần nhau (cả hai đều dự đoán ngữ cảnh liên quan đến thú cưng). cat & Tuesday gần như trực giao vì chúng dự đoán các ngữ cảnh khác nhau.
Tại sao Transformer Quan Tâm
Hoạt động 5 (grow_a_language_model_attention) xây dựng attention từ tích vô hướng: một vector truy vấn được nhân vô hướng với các vector khóa để tạo ra điểm số cho biết token nào trong quá khứ quan trọng khi dự đoán token tiếp theo. Embeddings và tích vô hướng cùng nhau mang theo mọi tương tác bên trong một transformer.
Dự đoán Độ Tương Đồng
ANDREA Sử Dụng Nhúng Vị Trí Học Được
Một Vấn Đề
Một nhúng token cho mô hình biết từ nào xuất hiện tại vị trí này. Nó không cho mô hình biết từ đó nằm ở đâu. Nếu không có thông tin vị trí, một transformer sẽ xử lý the cat sat on a mat & mat a on sat cat the giống hệt nhau: cùng một tập hợp token, không có tín hiệu thứ tự.
Có ba giải pháp tồn tại trong tài liệu transformer:
Sinusoidal (Vaswani 2017). Một công thức toán học cố định dựa trên sin & cos. Vị trí 0 nhận một vector 768 cụ thể; vị trí 1 nhận một vector khác; không bao giờ được huấn luyện, không bao giờ được cập nhật. Tổng quát hóa cho bất kỳ vị trí nào thông qua công thức.
RoPE (Rotary Position Embedding). Xoay các vector query & key dựa trên vị trí. Được sử dụng bởi LLaMA, Qwen. Không có tham số bổ sung; phép xoay được tích hợp vào attention.
Learned. Một bảng embedding riêng có kích thước (T, d_model) trong đó T là độ dài ngữ cảnh. Mỗi hàng được huấn luyện qua lan truyền ngược, giống như token embeddings.
Lựa chọn của ANDREA: Learned
ANDREA kế thừa phương pháp learned-position từ microGPT, vốn kế thừa từ nanoGPT, vốn kế thừa từ GPT-2. Một lý do:
- Đơn giản. Không cần toán đặc biệt trong attention. Bảng vị trí trông giống như bảng token.
- Tương thích với CUDA tùy chỉnh. Động cơ microgpt_cuda.cu của ANDREA xử lý hai phép tra cứu embedding giống hệt nhau; không cần kernel sin/cos.
- Đủ cho ngữ cảnh cố định. ANDREA giới hạn T ở 1024. Bảng học được hoạt động tốt cho các chuỗi có độ dài cố định.
Chi phí Embedding Vị trí ANDREA-120M
| Số lượng | Giá trị |
|---|---|
| T (context) | 1,024 |
| d_model | 768 |
| Parameters | 786,432 |
0.79M tham số cho position. Kết hợp với token embeddings: 6.49M + 0.79M = 7.27M tham số embedding tổng cộng cho ANDREA-120M.
Cách Chúng Kết Hợp
Tại mỗi vị trí t trong chuỗi đầu vào:
x_t = token_embedding[token_id_t] + position_embedding[t]
Hai vector 768, được cộng theo từng phần tử. Kết quả, x_t, đi vào khối transformer đầu tiên. Mô hình không bao giờ tách chúng ra nữa; nó học cách sử dụng tín hiệu kết hợp.
Learned Versus Sinusoidal
Nơi tham số Embedding được lưu trữ
Một lớp Embedding ANDREA-120M đầy đủ
| Thành phần | Kích thước | Tham số |
|---|---|---|
| Bảng nhúng token | 8,449 × 768 | 6,488,832 |
| Bảng nhúng vị trí | 1,024 × 768 | 786,432 |
| Tổng | 7,275,264 |
Khoảng 7.3 triệu tham số. Tổng số tham số của ANDREA-120M: ~120 triệu. Lớp nhúng chiếm 6%. 94% còn lại nằm trong các khối transformer (attention + MLP, được trình bày trong hoạt động 5-7).
Nhúng không ràng buộc so với Nhúng ràng buộc
Nhiều thiết kế transformer (bao gồm GPT-2) ràng buộc embedding token với phép chiếu đầu ra cuối cùng: cùng một ma trận V × d_model được sử dụng ở đầu vào và đầu ra (logits trên từ vựng). Việc ràng buộc này tiết kiệm V × d_model tham số và thường cải thiện chất lượng.
ANDREA sử dụng embedding không ràng buộc: embedding đầu vào và phép chiếu đầu ra được huấn luyện như hai ma trận riêng biệt. Hoạt động 7 (grow_a_language_model_transformer_block) bao gồm một lớp cuối cùng.
Một Lượt Lan Truyền Xuôi Cho Đến Nay
Đầu vào: các ID token [256, 1842, 7301, ...] (1024 token). Mỗi ID tra cứu một vector 768 chiều. Mỗi vị trí tra cứu một vector 768 chiều. Cộng theo từng phần tử. Kết quả: ma trận (1024, 768) x chứa các vector token + vị trí. x được đưa vào transformer block 1.
Hoạt động 5 (grow_a_language_model_attention) mô tả những gì block 1 thực hiện: scaled dot-product attention với causal mask và softmax.