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.
Trước khi GPT trở thành biểu tượng của AI, mọi hệ thống dịch máy như Google Translate đều dựa trên một mô hình cổ điển: Encoder-Decoder. Đây là kiến trúc gốc của sequence-to-sequence (seq2seq), nơi thông tin được "nén" vào một bản tóm tắt kỹ thuật số rồi "giải nén" thành ngôn ngữ mới. Hiểu nó là hiểu tại sao Transformer lại chia làm hai phần rõ rệt, và tại sao việc "đọc" với "viết" lại cần được tách biệt.
Vấn đề
Hãy thử dịch một câu tiếng Anh dài sang tiếng Việt. Bạn có hai thách thức cơ bản:
Thứ nhất, độ dài input và output không khớp nhau. Câu tiếng Anh 20 từ có thể thành tiếng Việt 15 từ hoặc 25 từ tùy ngữ cảnh. Các mạng Neural cũ như RNN xử lý tuần tự từng bước, nhưng chúng gặp hiện tượng "chai cổ chai" (bottleneck) khi phải nhồi nhét cả câu dài vào một vector trạng thái tĩnh duy nhất — thông tin từ đầu câu thường bị "quên" trước khi đến cuối câu.
Thứ hai, việc "hiểu" và "tạo ra" yêu cầu hai loại suy nghĩ khác nhau. Khi đọc, bạn cần nhìn cả câu, hiểu ngữ cảnh hai chiều (từ trước và sau). Khi viết, bạn phải đi từng bước một, chỉ dựa vào những gì đã viết (autoregressive). Nếu ép buộc cùng một bộ não làm cả hai việc trong cùng một luồng thời gian, hiệu quả sẽ giảm sút.
Ý tưởng cốt lõi
Encoder-Decoder giải quyết bằng cách tách biệt hoàn toàn hai giai đoạn: nén (encode) và giải nén (decode).
Encoder: Bộ não đọc hiểu (Bidirectional)
Encoder là một stack các lớp Transformer với self-attention hai chiều. Nó đọc toàn bộ input cùng lúc — nhìn cả trước và sau mỗi từ — để tạo ra một chuỗi vector biểu diễn (hidden states). Đây là bước "nén": biến câu dài thành một dãy các "ý tưởng" dày đặc trong không gian số học.
Điểm then chốt: Encoder không cần biết mục tiêu cuối cùng là gì. Nó chỉ tập trung vào việc trích xuất mọi mối quan hệ ngữ nghĩa trong input, tạo thành một "kho thông tin" sẵn sàng.
Decoder: Bộ não sáng tạo (Autoregressive)
Decoder là một stack riêng biệt, chạy theo kiểu autoregressive: nó tạo từng token output một, từ trái sang phải. Tuy nhiên, khác với GPT, decoder không tự mò mẫm trong kho kiến thức của chính mình — nó có quyền truy cập trực tiếp vào "kho thông tin" của Encoder thông qua cơ chế cross-attention.
Cross-Attention: Cây cầu nối
Đây là phần tinh tế nhất. Trong khi self-attention của decoder tính toán "token này liên quan gì đến các token đã sinh trước đó", cross-attention lại hỏi: "Với token đang định sinh ra này, phần nào của input là quan trọng nhất?"
Cơ chế toán học là Multi-Head Attention thuần túy: Decoder tạo Query (Q), Encoder cung cấp Key (K) và Value (V). Phép nhân tạo ra bản đồ attention cho biết mỗi vị trí output nên "nhìn" vào đâu trong input. Khi dịch từ "apple", decoder sẽ tự động focus vào vector biểu diễn của "quả táo" trong encoder output.
That's it. Đó là toàn bộ bí mật: tách biệt việc hiểu (bidirectional, một lần) và viết (autoregressive, nhiều bước), với cross-attention là cầu nối động cho phép decoder "truy vấn" lại encoder bất cứ lúc nào.
Tại sao nó hoạt động
Sự tách biệt nhiệm vụ. Bằng cách cho phép encoder xử lý hai chiều, nó tạo ra biểu diễn phong phú hơn bất kỳ mô hình autoregressive nào có thể đạt được (vì GPT chỉ nhìn được quá khứ). Decoder tập trung vào việc sinh ngôn ngữ trôi chảy, không phải lo "hiểu lại" input.
Alignment động. Trong các mô hình RNN cũ, thông tin input được nén thành một vector cố định (thought vector), dễ bị mất mát. Cross-attention trong Transformer cho phép decoder tạo nhiều đường dẫn truy cập động: mỗi token output có thể "nhìn" vào các vị trí input khác nhau, tạo ra soft alignment (ví dụ: khi dịch từ nhiều nghĩa như "bank", decoder có thể nhìn vào "sông" hoặc "ngân hàng" tùy ngữ cảnh).
Tính song song trong huấn luyện. Dù decoder sinh token tuần tự khi inference, lúc training nó có thể học song song nhờ teacher forcing (cho decoder thấy câu đích và bắt nó dự đoán token tiếp theo). Điều này khiến encoder-decoder dễ dàng scale trên phần cứng hiện đại hơn RNN.
Ý nghĩa thực tế
Ứng dụng thực tế. Encoder-decoder vẫn là kiến trúc mặc định cho:
- Dịch máy (Google's T5, Meta's NLLB, DeepL)
- Tóm tắt văn bản (BART, Pegasus)
- Chuyển đổi định dạng (code-to-text, SQL generation)
So sánh với Decoder-only (GPT).
- Ưu điểm: Encoder-decoder mạnh hơn cho các tác vụ transduction (biến đổi input thành output có cấu trúc khác), đặc biệt khi input dài và cần hiểu ngữ cảnh hai chiều sâu sắc.
- Nhược điểm: Khó khăn trong pre-training. GPT có thể học từ bất kỳ văn bản thuần nào (next-token prediction), trong khi encoder-decoder cần dữ liệu cặp (song ngữ, văn bản-tóm tắt). Đây là lý do chính khiến các LLM "khổng lồ" hiện nay đều dùng decoder-only: dữ liệu pre-training dồi dào hơn và kiến trúc đơn giản hơn (không cần cross-attention phức tạp).
Trade-off quan trọng. Encoder-decoder chiếm nhiều VRAM hơn (hai stack thay vì một) và inference phức tạp hơn (phải chạy encoder trước rồi mới decoder). Nhưng nó vẫn là lựa chọn số một khi bạn cần controllable generation — ví dụ, trong RAG (Retrieval-Augmented Generation) nâng cao, encoder có thể xử lý tài liệu tìm kiếm kỹ lưỡng trước khi decoder tổng hợp câu trả lời.
Đào sâu hơn
- Paper gốc: "Attention Is All You Need" (Vaswani et al., 2017) — giới thiệu Transformer Encoder-Decoder cho dịch máy.
- Cùng cụm:
- Transformer — Cấu trúc chi tiết của kiến trúc này
- Self-Attention — Cơ chế then chốt bên trong cả encoder và decoder
- Autoregressive LM — Hiểu tại sao decoder lại sinh token tuần tự
- Positional Encoding — Cách mô hình biết vị trí từng token khi không có recurrence
- Đọc tiếp:
- Decoder-Only — So sánh với kiến trúc GPT, tại sao thế giới chuyển sang hướng đó
- Flash Attention — Cách tối ưu attention để encoder-decoder chạy nhanh hơn
- Mamba & SSMs — Kiến trúc mới thay thế cả encoder lẫn decoder cho sequence dài cực lớn
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ó'.
Autoregressive LM — Đoán token tiếp theo, lặp lại, GPT ra đời
Hiểu bản chất Autoregressive Language Model: dự đoán từng token một bằng causal masking, tại sao GPT thống trị AI, và điểm khác biệt với BERT.