Positional Encoding — Transformer không biết thứ tự, phải dạy
Transformer xử lý song song nên mất khái niệm trước/sau. Positional Encoding 'dán số thứ tự' vào embedding để model phân biệt 'chó cắn người' với 'người cắn chó'.
Nếu bạn xáo trộn thứ tự các từ trong câu "Tôi ăn cá", Attention mechanism sẽ không hề nhận ra sự khác biệt — nó chỉ thấy cùng một tập hợp token {Tôi, ăn, cá}. Transformer xử lý mọi token đồng thời để tăng tốc độ, nhưng đánh đổi bằng việc quên mất khái niệm "trước" và "sau". Positional Encoding chính là chiếc đồng hồ đo vị trí giúp model phục hồi ý thức về trình tự ngôn ngữ.
Định nghĩa
Positional Encoding là kỹ thuật thêm thông tin vị trí (thứ tự xuất hiện) vào vector embedding của từng token, giúp Transformer — vốn xử lý mọi token đồng thời và không có khái niệm thứ tự — hiểu được từ nào đứng trước, từ nào đứng sau trong câu.
Giải thích chi tiết
Tại sao Transformer cần được "dạy" thứ tự?
Hãy tưởng tượng bạn đọc một câu, nhưng thay vì đọc từ trái sang phải, bạn nhìn thấy tất cả các từ cùng lúc — kiểu như một đám mây chữ xáo trộn. Đó chính xác là cách Self-Attention nhìn vào câu. Nếu tôi đưa bạn tập hợp các từ {chó, cắn, người}, bạn không biết là "chó cắn người" hay "người cắn chó". Đó là vấn đề của permutation invariance — thuật toán không thay đổi kết quả dù bạn xáo trộn input.
RNN và LSTM giải quyết điều này bằng cách đọc tuần tự, nhưng Transformer từ bỏ cách đó để tính song song nhanh hơn. Kết quả là nó mất khái niệm thứ tự hoàn toàn. Positional Encoding là cách ta "dán nhãn" lên từng từ để khôi phục thông tin đó — biến một "tập hợp" thành một "chuỗi".
Chiếc đồng hồ đa tần số
Thay vì dán số thứ tự đơn thuần (1, 2, 3...) vào embedding, người ta dùng hàm sine và cosine với tần số khác nhau cho từng chiều của vector. Tại sao không dùng số nguyên đơn giản? Vì số nguyên không có tính chất "tương đối" — model khó biết rằng vị trí 5 và 6 gần nhau hơn 5 và 100, và số nguyên không giúp model học cách "dịch chuyển" sang vị trí mới.
Với Sinusoidal Encoding, mỗi chiều (dimension) của vector embedding là một sóng sin với bước sóng riêng. Chiều đầu tiên là sóng nhanh (chu kỳ ngắn, thay đổi liên tục theo từng token), chiều cuối là sóng chậm (chu kỳ dài, thay đổi chậm qua hàng nghìn token). Kết hợp lại, mỗi vị trí có một "dấu vân tay" số học duy nhất. Điều hay là các bước sóng được chọn theo cấp số nhân, cho phép model nắm bắt mối quan hệ từ cực ngắn (n-gram) đến cực dài (câu văn).
"Aha moment": Tính chất tuyến tính của vị trí tương đối
Đây là phần tinh tế nhất: Với Sinusoidal PE, vector ở vị trí pos+k có thể biểu diễn dưới dạng một phép biến đổi tuyến tính đơn giản của vector ở vị trí pos. Điều này nghĩa là model chỉ cần học một phép quay/biến đổi duy nhất để hiểu "cách nhau k bước", thay vì học riêng biệt mối quan hệ giữa từng cặp vị trí (ví dụ: 1-2 khác 5-6 khác 100-101).
Nhờ đó, model không chỉ nhớ "tôi đang ở đâu" mà còn hiểu "tôi cách người kia bao xa". Đây là lý do Sinusoidal PE generalize tốt đến sequence dài hơn training — nó không nhớ cứng vị trí tuyệt đối mà học được quy luật "dịch chuyển" có thể áp dụng vô hạn định.
Phương án thay thế: Learned Embeddings
BERT và GPT chọn cách khác: thay vì dùng hàm toán cố định, chúng tạo ra các vector vị trí riêng (learned position embeddings) và cho model tự học. Ưu điểm là linh hoạt hơn với dữ liệu. Nhược điểm là model không thể extrapolate ra sequence dài hơn training (vì chưa từng thấy vector vị trí 10000 nếu chỉ train đến 512). Sinusoidal PE thì không bị giới hạn này — hàm sin/cos định nghĩa vô hạn vị trí.
Ví dụ thực tế
Phân biệt chủ ngữ/vị ngữ: Trong "Con chó cắn người" vs "Người cắn con chó", nếu không có PE, cả hai chỉ là tập hợp {chó, cắn, người}. Với PE, model thấy "chó" ở vị trí 1 (chủ ngữ) có pattern sóng khác hẳn vị trí 3 (vị ngữ), từ đó hiểu được vai trò ngữ pháp.
Hiểu ngữ pháp tiếng Việt: Để biết "rất" bổ nghĩa cho tính từ đứng ngay sau nó, model cần biết thứ tự từ. PE giúp attention mechanism nặng vào token liền kề (khoảng cách 1) hơn là token xa (khoảng cách 10), tạo ra inductive bias về locality.
Dịch máy giữ trật tự logic: Khi dịch "I love you" sang tiếng Việt, cần giữ nguyên trật tự chủ ngữ-vị ngữ. PE giúp Encoder giữ thông tin vị trí để Decoder tái tạo cấu trúc câu đúng, thay vì xáo trộn thành "You I love".
Ứng dụng
Sinh viên AI: Hiểu vì sao Transformer cần preprocessing đặc biệt, không thể xáo trộn dữ liệu vô tội vạ như CNN. Khi fine-tune model, nếu thay đổi độ dài context window, cần xem xét lại PE (sinusoidal tự động mở rộng, learned thì cần interpolate).
Kỹ sư triển khai: Chọn giữa Absolute PE (sinusoidal/learned) cho bài toán độ dài cố định và đơn giản, hoặc chuyển sang Relative PE (RoPE, ALiBi) khi cần context window dài và thay đổi (long-context RAG, summarization văn bản pháp lý).
Nhà nghiên cứu: Làm nền tảng để phát triển các kỹ thuật position-aware mới như Rotary Position Embedding (xoay vector thay vì cộng) hoặc các biến thể cho dữ liệu không phải text (vision transformer, audio).
So sánh
| Đặc điểm | Không có PE | Sinusoidal PE | Learned PE (BERT/GPT) | Relative PE (RoPE/ALiBi) |
|---|---|---|---|---|
| Cơ chế | — | Hàm sin/cos cố định | Vector học được | Nhúng tương đối vào attention |
| Nhận biết thứ tự | Không | Có | Có | Có |
| Generalize dài hơn training | — | Tốt | Kém (cần interpolate) | Rất tốt |
| Tính toán | — | Không tốn thêm | Không tốn thêm | Tăng nhẹ |
| Độ phức tạp triển khai | Thấp | Thấp | Trung bình | Cao |
Sinusoidal PE là giải pháp "đủ tốt" cho hầu hết ứng dụng cơ bản và vẫn được dùng trong nhiều kiến trúc tiêu chuẩn. Tuy nhiên, các phương pháp Relative hiện đại đang dần thay thế trong model mới nhất nhờ khả năng xử lý context dài và mối quan hệ tương đối tự nhiên hơn.
Bài viết liên quan
Cùng cụm (Sequence Modeling):
- Word2Vec & GloVe — Cách từ ngữ trở thành vector trước khi thêm thông tin vị trí
- Self-Attention — Cơ chế tính toán mà PE bổ trợ để hiểu ngữ cảnh
- Transformer Architecture — Bức tranh tổng thể nơi Positional Encoding đóng vai trò nền tảng
Đọc tiếp (Level 1 — Attention Efficiency):
- RoPE — Rotary Position Embedding: Xoay vector thay vì cộng, cách tiếp cận hiện đại thay thế sinusoidal
- ALiBi — Phạt khoảng cách trực tiếp trên attention score, generalize tốt hơn training length
Tài liệu bên ngoài:
- Paper: "Attention Is All You Need" (Vaswani et al., 2017) — Định nghĩa gốc về Sinusoidal Positional Encoding
- Blog: Jay Alammar's "The Illustrated Transformer" — Minh họa trực quan cách PE kết hợp với word embedding
Multi-Head Attention — Nhìn cùng lúc nhiều góc khác nhau
Thay vì một góc nhìn, Multi-Head Attention chia không gian embedding thành nhiều subspace song song, giúp model bắt pattern từ ngữ nghĩa đến cú pháp chỉ trong một lớp duy nhất.
Encoder-Decoder — Nén rồi giải nén, kiến trúc gốc của seq2seq
Hiểu bản chất kiến trúc Encoder-Decoder: tách biệt 'hiểu' và 'nói', cross-attention như cầu nối, và tại sao nó vẫn là nền tảng của dịch máy dù GPT chiếm sóng.