English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

khách
1 / ?
trở lại bài học

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ố.


Token & position embedding flow


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ượngGiá trị
V8,449
d_model768
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ính số lượng tham số nhúng token cho hai biến thể tương lai. (a) ANDREA-480M: V = 16,641 (một tokenizer 16,384-segment cộng 256 byte cộng 1 BOS), d_model = 1536. (b) ANDREA-12M: V = 4,353, d_model = 384. Thực hiện phép tính V × d_model cho từng trường hợp.

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

Sau khi huấn luyện, embedding của ANDREA-120M cho `believ` (hàng token 4287, giả định) kết thúc gần như thẳng hàng với `know`, `understand`, `learn`. Không cần tính giá trị chính xác, hãy dự đoán thứ tự từ tích vô hướng lớn nhất đến nhỏ nhất: `believ · know`, `believ · stone`, `believ · understand`. Giải thích thứ tự của bạn bằng một cụm từ cho mỗi cặp.

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ượngGiá trị
T (context)1,024
d_model768
Parameters786,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

So sánh hai chiến lược nhúng vị trí cho mô hình ANDREA giả định. Chiến lược A: learned, T = 1024. Chiến lược B: sinusoidal, T tùy ý (hoạt động với bất kỳ độ dài chuỗi nào). Nêu một lợi thế của mỗi chiến lược. Sau đó cho biết ANDREA chọn chiến lược nào và một lý do từ góc độ CUDA / kỹ thuật.

Nơi tham số Embedding được lưu trữ

Một lớp Embedding ANDREA-120M đầy đủ


Thành phầnKích thướcTham số
Bảng nhúng token8,449 × 7686,488,832
Bảng nhúng vị trí1,024 × 768786,432
Tổng7,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.

Dự đoán Cấu trúc Embedding

Suy ngẫm: ANDREA-120M có 8449 embedding token & 1024 embedding vị trí, chia sẻ cùng một không gian 768 chiều. Sau khi huấn luyện, bạn kỳ vọng: (a) ma trận embedding token trông như thế nào (các cụm?), hay (b) ma trận embedding vị trí trông như thế nào (gradient mượt?). Chọn một và dự đoán trong một hoặc hai câu. Không có đáp án sai; điều quan trọng là lập luận.