Bạn đã bao giờ thắc mắc tại sao ChatGPT hiểu được sự khác biệt giữa “chó cắn mèo” và “mèo cắn chó” chưa? Cùng là 3 từ giống hệt nhau, nhưng thứ tự sắp xếp khác thì ý nghĩa hoàn toàn khác. Đó chính là nhờ một kỹ thuật gọi là Positional Encoding — компонent quan trọng nhất của kiến trúc Transformer.
Positional Encoding Là Gì?

Positional Encoding (Mã hóa vị trí) là một kỹ thuật giúp mô hình AI biết được vị trí thứ tự của từng token trong một câu. Nó thêm thông tin về “từ này đứng ở vị trí thứ mấy” vào embedding của token đó trước khi đưa vào Transformer.
Nói đơn giản hơn: nếu embedding cho biết từ đó nghĩa là gì, thì positional encoding cho biết từ đó đứng ở đâu trong câu.
Tại Sao Transformer Cần Positional Encoding?
Trước khi có Transformer, các mô hình xử lý ngôn ngữ thường dùng RNN hay LSTM. Chúng đọc văn bản theo tuần tự — từ trái sang phải, từng từ một. Do đó, mô hình tự nhiên biết thứ tự của các từ.
Nhưng Transformer thì khác. Nó xử lý tất cả các từ cùng lúc (song song). Điều này giúp Transformer nhanh hơn RNN rất nhiều, nhưng đồng nghĩa với việc nó không biết từ nào đến trước, từ nào đến sau. Nó thấy tất cả các từ như một “túi” hỗn độn không có thứ tự.
Đó là lý do positional encoding ra đời. Nó “đóng dấu” vị trí lên mỗi token để Transformer vẫn nắm được thứ tự câu dù xử lý song song.
Positional Encoding Hoạt Động Thế Nào?
Có несколько cách phổ biến để mã hóa vị trí:
1. Sinusoidal Positional Encoding (Gốc)
Trong bài báo “Attention Is All You Need” (2017) giới thiệu Transformer, tác giả dùng hàm sin và cos với tần số khác nhau:
Mỗi vị trí được biểu diễn bằng một vector có chiều dài bằng embedding dimension. Giá trị tại mỗi chiều được tính bằng sin hoặc cos của vị trí nhân với một hệ số tần số giảm dần.
Cách này có ưu điểm là mô hình có thể suy ra vị trí tương đối giữa các từ, kể cả với những câu dài hơn nhiều so với dữ liệu huấn luyện. Nó cũng không cần học thêm tham số nào.
2. Learned Positional Encoding
Thay vì dùng công thức sin/cos, một số mô hình như BERT hay GPT chọn cách học positional encoding trực tiếp. Nghĩa là gán cho mỗi vị trí một vector ngẫu nhiên ban đầu, rồi để mô hình tự tối ưu trong quá trình huấn luyện.
Cách này đơn giản và hiệu quả, nhưng có nhược điểm: mô hình bị giới hạn ở độ dài câu tối đa đã huấn luyện. Ví dụ BERT chỉ xử lý được 512 token.
3. Relative Positional Encoding
Thay vì mã hóa vị trí tuyệt đối (từ thứ 1, thứ 2, thứ 3…), cách này mã hóa khoảng cách tương đối giữa các từ (từ A cách từ B 3 vị trí). Mô hình như T5 dùng phương pháp này.
4. RoPE (Rotary Position Embedding)
Đây là phương pháp mới hơn, được dùng trong LLaMA, Mistral, và nhiều mô hình hiện đại. RoPE xoay vector embedding theo góc phụ thuộc vào vị trí, giúp mô hình hiểu cả vị trí tuyệt đối lẫn tương đối. Nếu bạn quan tâm, mình đã có bài viết chi tiết về RoPE.
Ví Dụ Thực Tế Để Hiểu Dễ Hơn
Tưởng tượng bạn đọc một câu nhưng các từ bị xáo trộn: “yêu tôi nàng”. Bạn không biết đây là “tôi yêu nàng” hay “nàng yêu tôi”. Positional encoding giải quyết đúng vấn đề này cho AI.
Khi từ “tôi” có positional encoding cho vị trí 1, “yêu” cho vị trí 2, “nàng” cho vị trí 3, mô hình biết chính xác câu này là “tôi yêu nàng” — không phải sắp xếp khác.
Một ví dụ khác: “không được đi” versus “được không đi”. Không có thông tin vị trí, mô hình sẽ thấy 3 token giống hệt nhau và không thể phân biệt.
Positional Encoding Ảnh Hưởng Gì Đến Chất Lượng AI?
Chất lượng của positional encoding ảnh hưởng trực tiếp đến khả năng hiểu ngôn ngữ của mô hình. Nếu positional encoding kém, mô hình sẽ:
- Hiểu sai ý nghĩa câu khi thay đổi thứ tự từ
- Kém hiệu quả trong các bài toán dịch máy (word order khác nhau giữa ngôn ngữ)
- Không xử lý tốt văn bản dài do quên mất vị trí các từ ở xa nhau
Đó là lý do các mô hình hiện đại liên tục cải tiến positional encoding. Từ sinusoidal ban đầu, đến learned embedding, rồi RoPE, và gần đây là các biến thể như ALiBi hay NoPE (No Positional Encoding) cho một số kiến trúc thử nghiệm.
Positional Encoding Khác Gì Token Embedding?
Nhiều người hay nhầm hai khái niệm này. Phân biệt đơn giản:
- Token Embedding: mã hóa ý nghĩa của từ. Ví dụ: “mèo” gần với “chó” hơn là “bàn”.
- Positional Encoding: mã hóa vị trí của từ trong câu. Ví dụ: từ thứ 1, thứ 2, thứ 3.
Vector cuối cùng đưa vào Transformer là tổng của hai loại: token embedding cộng positional encoding. Thông tin nghĩa và thông tin vị trí được hòa quyện vào cùng một vector.
Kết Luận
Positional Encoding là một thành phần nhỏ nhưng không thể thiếu trong kiến trúc Transformer. Nó giải quyết bài toán cơ bản: giúp AI hiểu thứ tự từ trong câu khi xử lý song song. Nếu bạn đang tìm hiểu sâu về AI, đặc biệt là Transformer hay attention mechanism, thì nắm vững positional encoding là điều kiện tiên quyết.
Các phương pháp positional encoding vẫn liên tục được cải tiến, và đây là một trong những hướng nghiên cứu tích cực nhất để giúp mô hình AI xử lý văn bản dài hiệu quả hơn.