Transformer — Bỏ hết recurrence, chỉ giữ Attention
Từ RNN tuần tự chậm chạp đến kiến trúc song song nhờ Attention mechanism. Hiểu vì sao GPT, Claude và mọi LLM hiện đại đều dựa trên Transformer.
Trước Transformer, AI đọc văn bản như con người đọc sách — từng chữ một, phải nhớ mọi thứ đã đọc để hiểu chữ tiếp theo. Transformer thay đổi cuộc chơi: nó đọc cả trang cùng lúc, dùng Attention để "nhìn thẳng" vào bất kỳ từ nào dù ở đầu hay cuối câu. Đây là nền tảng của GPT-4, Claude, Gemini — mọi Large Language Model bạn đang dùng.
Vấn đề
Kiến trúc trước Transformer (RNN, LSTM, GRU) gặp ba vấn đề chết người khi xử lý ngôn ngữ:
1. Tuần tự là kẻ thù của tốc độ. RNN xử lý câu "The cat sat..." bằng cách: đọc "The", cập nhật trạng thái ẩn, đọc "cat", cập nhật, đọc "sat"... Bạn không thể tính toán song song vì bước này phụ thuộc bước trước. Với GPU có hàng nghìn cores, đây là lãng phí khủng khiếp.
2. Vanishing gradients — trí nhớ ngắn hạn. Khi thông tin truyền qua 100 bước RNN, nó bị "pha loãng" qua mỗi lớp nhân ma trận. Từ ở đầu câu khó ảnh hưởng đến từ cuối câu. Bạn có thể đã thấy chatbot "quên" ngữ cảnh sau vài đoạn chat — đó là giới hạn của recurrence.
3. Khó scale. Để train model lớn hơn với RNN, bạn không chỉ cần nhiều data, mà còn cần nhiều thời gian tuần tự. Không thể đưa vào cluster GPU 1000 card và mong tăng tốc tuyến tính.
Cần một kiến trúc: bỏ hoàn toàn recurrence, xử lý toàn bộ sequence cùng lúc, và vẫn hiểu được quan hệ giữa các từ xa nhau.
Ý tưởng cốt lõi
Ý chính đơn giản đến mức táo bạo: Attention Is All You Need (tựa đề paper gốc năm 2017). Thay vì xử lý tuần tự, hãy để mọi token "nhìn thấy" mọi token khác cùng lúc qua một cơ chế tính toán trọng số tương tự.
Self-Attention: Cuộc trò chuyện toàn thể
Hãy tưởng tượng một phòng họp có N người (N token). Thay vì nói chuyện xuôi dòng (RNN), mỗi người đồng thời đưa tay hỏi cả phòng: "Ai có thông tin liên quan đến tôi?"
Trong Transformer, mỗi token có ba vai trò:
- Query (Q): "Tôi đang tìm gì?"
- Key (K): "Tôi có thông tin gì?"
- Value (V): "Nội dung thực sự tôi mang theo"
Attention score giữa token A và B = Q(A) · K(B). Nếu điểm cao, nghĩa là B "quảng cáo" nội dung phù hợp với câu hỏi của A. Sau đó, token A tính weighted sum của tất cả Value vectors — tổng hợp thông tin từ các token liên quan.
Điểm then chốt: khoảng cách từ token đầu đến token cuối là 1 bước tính toán, không phải 1000 bước recurrence.
Kiến trúc Encoder-Decoder và sự tiến hóa
Paper gốc đề xuất hai khối:
- Encoder: Đọc toàn bộ input (ví dụ: câu tiếng Anh), dùng Self-Attention bidirectional (mỗi token nhìn cả trái và phải). Output là representation giàu ngữ cảnh.
- Decoder: Sinh output (ví dụ: tiếng Việt) từng token một, dùng Masked Self-Attention (chỉ nhìn quá khứ, không nhìn tương lai) + Cross-Attention (nhìn vào Encoder output).
Nhưng đây là insight quan trọng nhất cho người mới: Modern LLM như GPT-4 thực chất chỉ là phần Decoder, bỏ luôn Encoder. Dùng Causal Masking (tam giác dưới) để Decoder tự dự đoán token tiếp theo, tạo thành Autoregressive Language Model. Đơn giản hơn, scale tốt hơn, và đó là lý do bài viết Decoder-Only tồn tại riêng.
Multi-Head Attention: Nhiều góc nhìn
Một bộ Q/K/V chỉ học được một kiểu tương tự (ví dụ: syntax). Transformer dùng Multi-Head Attention — chạy song song h bộ Q/K/V khác nhau (thường h=8 hoặc 16). Head 1 học ngữ pháp, Head 2 học từ đồng nghĩa, Head 3 học đại từ nhân xưng... Kết quả ghép lại tạo representation đa chiều. Chi tiết trong bài Multi-Head Attention.
Positional Encoding: Dạy model biết thứ tự
Vì không còn recurrence (đọc từng bước), Transformer mặc định không biết "đây là từ thứ 5 hay thứ 500". Giải pháp: cộng thêm vector vị trí vào embedding đầu vào. Có thể là hàm sinusoidal cố định (sin/cos với tần số khác nhau theo chiều) hoặc học được. Điều này cho phép model phân biệt "dog bites man" vs "man bites dog" dù xử lý song song. Xem thêm Positional Encoding.
FFN và Residual Connections
Giữa các khối Attention là Feed-Forward Network (FFN) — mạng neural nhỏ xử lý từng token độc lập, thêm tính phi tuyến. Cộng thêm Residual Connection (skip connection) và LayerNorm giúp gradient không bị biến mất khi stack 96-128 lớp như GPT-4.
That's it. Không còn recurrence, không còn vanishing gradient do khoảng cách. Chỉ còn ma trận nhân và softmax.
Tại sao nó hoạt động
Toán học đằng sau Attention
Công thức Attention cốt lõi:
Giải thích từng bước:
- QK^T: Tính độ tương đồng giữa mọi cặp token (dot product). Kết quả là ma trận N×N (N = số token).
- ÷ √d: Chia cho căn bậc hai của chiều vector. Tại sao? Vì với d lớn, dot product sinh ra số cực lớn, đẩy softmax vào vùng "bão hòa" (gradient gần như bằng 0). Chia √d giữ phân phối ổn định, tương tự "temperature" trong sampling.
- Softmax: Biến điểm số thành xác suất (tổng = 1), luôn dương.
- × V: Lấy trung bình có trọng số của Value vectors. Token output là tổng hợp thông tin từ các token liên quan.
Vì tất cả là phép nhân ma trận, GPU có thể tính song song hoàn toàn — đây là lý do Transformer train nhanh hơn RNN 10-100 lần trên phần cứng hiện đại.
Code minh họa (PyTorch-style)
# Q, K, V: [batch_size, seq_len, dim]
scores = torch.matmul(Q, K.transpose(-2, -1)) / sqrt(dim) # Q·K^T / √d
attention_weights = torch.softmax(scores, dim=-1) # softmax
output = torch.matmul(attention_weights, V) # × VChỉ 3 dòng code cốt lõi. Phần còn lại là engineering: chia head, thêm mask, layer norm.
Tại sao không cần recurrence nữa?
Trong RNN, thông tin từ token 1 đến token 1000 phải đi qua 999 bước nhân ma trận, mỗi bước làm mất một ít thông tin. Trong Transformer, đường dẫn gradient từ output cuối đến input đầu là 1 bước (residual connection) cộng với đường tắt qua Attention. Đây là lý do model có thể học dependency xa hàng nghìn token.
Ý nghĩa thực tế
Hiệu quả thực tế
- Tốc độ training: Transformer cho phép pre-training trên hàng nghìn GPU song song, tạo ra GPT-3 (175B params), GPT-4, Llama, v.v. RNN không thể scale lên mức này.
- Chất lượng: Trên bài dịch máy (WMT), Transformer vượt trội so với LSTM. Trên các tác vụ NLP, fine-tune từ BERT (Transformer encoder) hay GPT (Transformer decoder) đều phá kỷ lục.
- Long context: Không còn vanishing gradient, model có thể xử lý context 4K, 128K, thậm chí triệu token (với các biến thể hiện đại).
Hạn chế
- O(n²) memory: Ma trận Attention N×N chiếm O(N²) bộ nhớ. Với 100K tokens, đây là 10 tỷ giá trị — chưa kể KV Cache trong inference. Đây là lý do có cả một nhánh nghiên cứu Attention Efficiency ở Level 1.
- Thiếu thứ tự tự nhiên: Phải thêm Positional Encoding thủ công. Các biến thể như RoPE hay ALiBi được phát triển để xử lý context dài tốt hơn.
- Data hungry: Transformer cần rất nhiều data để học, vì không có inductive bias về "thứ tự thời gian" như RNN.
Ai đang dùng?
Literally everyone. GPT-4, Claude, Gemini, Llama, Mistral, BERT, T5 — tất cả đều là biến thể của Transformer. Đây là kiến trúc dominant trong AI hiện đại.
Đào sâu hơn
Paper gốc: "Attention Is All You Need" (Vaswani et al., 2017) — paper 11 trang thay đổi ngành AI.
Cùng cụm:
- Word Embeddings — Khi từ ngữ trở thành vector, nền tảng đầu vào cho Transformer
- Tokenization — Cách text được cắt thành token trước khi vào Transformer
- Self-Attention — Đi sâu vào Q, K, V mechanism
- Multi-Head Attention — Giải thích chi tiết multi-head mechanism
- Positional Encoding — Cách thêm thông tin vị trí cho model
- Encoder-Decoder — Kiến trúc gốc cho translation và BERT
- Autoregressive LM — Cách GPT dùng Decoder-only để sinh văn bản
- Masked Language Modeling — Cách BERT dùng Encoder để hiểu ngữ cảnh
Đọc tiếp:
- Flash Attention — Giải quyết vấn đề O(n²) memory của Transformer
- Mamba & SSMs — Kiến trúc mới đang thay thế Transformer trong một số tác vụ dài hạn
BPE, WordPiece, SentencePiece — Cách AI 'đọc' text
Tokenization là gì? Giải thích BPE, WordPiece, SentencePiece — cách AI chuyển text thành số để xử lý, từ cơ chế nén dữ liệu đến ứng dụng trong ChatGPT và BERT.
Self-Attention — Mỗi token tự hỏi 'ai quan trọng với tôi?'
Hiểu bản chất Self-Attention: mỗi token trong câu tự động 'nhìn' tất cả các token khác để tìm ngữ cảnh, thay vì chỉ xử lý tuần tự như RNN.