Kiến trúc mạng học sâu: từ nền tảng đến LLM·Chương 7 — Transformer: học quan hệ không cần recurrence

Chế độ xem

Transformer: học quan hệ không cần lặp tuần tự

Attention là cơ chế tính trọng số và trộn thông tin. Transformer là một kiến trúc mạng ghép attention với embedding, thông tin vị trí, mạng truyền thẳng, kết nối dư và chuẩn hóa thành các block có thể xếp chồng sâu.

Transformer gốc được Vaswani và cộng sự giới thiệu năm 2017 cho bài toán dịch máy, với encoder và decoder. Điểm thay đổi lớn so với RNN là bỏ vòng lặp tuần tự theo trục thời gian và dùng attention để kết nối các vị trí trong chuỗi.

Mục tiêu học tập

Sau bài này, bạn cần:

  • đọc được sơ đồ Transformer gốc;
  • giải thích được encoder block và decoder block;
  • hiểu vai trò của mã hóa vị trí;
  • phân biệt self-attention, masked self-attention và cross-attention trong Transformer;
  • hiểu kết nối dư, chuẩn hóa và mạng truyền thẳng theo từng vị trí;
  • phân biệt rõ quá trình huấn luyện song song theo token với suy luận tự hồi quy tuần tự.

1. Kiến trúc Transformer gốc

Kiến trúc Transformer gốc

Nguồn: Vaswani et al. (2017), Figure 1. Paper ghi rõ cho phép tái sử dụng tables/figures cho mục đích học thuật khi ghi nguồn.

Nhìn sơ đồ từ dưới lên:

Encoder — bên trái

  1. Token đầu vào → embedding.
  2. Cộng mã hóa vị trí.
  3. Lặp NN encoder layer.
  4. Mỗi layer có:
    • multi-head self-attention;
    • residual + normalization;
    • feed-forward network;
    • residual + normalization.

Decoder — bên phải

  1. Các token đầu ra trước đó được dịch sang phải.
  2. Embedding đầu ra + mã hóa vị trí.
  3. Masked multi-head self-attention.
  4. Cross-attention với đầu ra của encoder.
  5. Mạng truyền thẳng.
  6. Linear + softmax để tạo xác suất token tiếp theo.

2. Vì sao bỏ vòng lặp tuần tự?

RNN có quan hệ dạng:

ht=f(xt,ht−1)h_t=f(x_t,h_{t-1})

nên hth_t cần ht−1h_{t-1} trước. Trong một chuỗi, các bước thời gian phụ thuộc tuần tự.

Self-attention cho phép tạo Q,K,VQ,K,V cho mọi vị trí bằng các phép toán ma trận, rồi tính quan hệ giữa các vị trí trong cùng một lượt xử lý tensor.

Trong bảng phân tích của bài báo gốc, self-attention có số bước tuần tự theo layer là O(1)O(1), trong khi recurrent layer là O(n)O(n). Tuy nhiên full self-attention có chi phí theo chiều dài chuỗi khoảng O(n2d)O(n^2d), nên không thể kết luận Transformer luôn rẻ hơn RNN cho mọi độ dài và mọi cấu hình.

3. Đầu vào: embedding token chưa đủ

Nếu chỉ có self-attention thuần túy, phép tính không tự biết token nào đứng trước token nào. Transformer vì vậy cần đưa thông tin vị trí vào biểu diễn.

Trong bài báo gốc:

PE(pos,2i)=sin⁡(pos100002i/dmodel)PE_{(pos,2i)}=\sin\left(\frac{pos}{10000^{2i/d_{model}}}\right) PE(pos,2i+1)=cos⁡(pos100002i/dmodel)PE_{(pos,2i+1)}=\cos\left(\frac{pos}{10000^{2i/d_{model}}}\right)

và:

X0=Etoken+EpositionX_0=E_{token}+E_{position}

Trong các mô hình hiện đại, thông tin vị trí có nhiều biến thể khác; nhưng về ý tưởng, mô hình vẫn cần một cơ chế biểu diễn thứ tự hoặc vị trí.

4. Encoder block

Encoder layer gốc có hai tầng con chính:

  1. multi-head self-attention;
  2. mạng truyền thẳng theo từng vị trí.

Mỗi tầng con đi kèm kết nối dư và LayerNorm.

Bài báo gốc dùng dạng post-norm: LayerNorm(x + Sublayer(x)).

Nhiều Transformer hiện đại chuyển sang pre-norm:

y=x+Sublayer(LayerNorm(x))y=x+\mathrm{Sublayer}(\mathrm{LayerNorm}(x))

vì có đặc tính tối ưu khác khi mạng sâu. Khi đọc code, đừng chỉ thấy tên module giống nhau rồi cho rằng block hoàn toàn giống Transformer 2017.

5. Position-wise feed-forward network

Trong bài báo gốc:

FFN(x)=max⁡(0,xW1+b1)W2+b2\mathrm{FFN}(x)=\max(0,xW_1+b_1)W_2+b_2

Nó được áp dụng độc lập tại từng vị trí token, dùng cùng bộ tham số cho các vị trí trong một layer.

Có thể hiểu:

  • attention: trao đổi thông tin giữa các token;
  • FFN: biến đổi biểu diễn bên trong từng token.

Đây là một phân biệt rất quan trọng.

6. Residual connection giúp giữ đường truyền thông tin

Một tầng con thường có dạng:

y=x+F(x)y=x+F(x)

Thay vì buộc tầng mới học lại toàn bộ biểu diễn, mạng chỉ cần học phần thay đổi F(x)F(x) rồi cộng vào dòng chính xx.

Một Transformer block decoder-only minh hoạ residual, LayerNorm và FFN

Nguồn hình: Sebastian Raschka, Build a Large Language Model (From Scratch), Figure 4.13. Đây là block kiểu GPT/decoder-only để thấy rõ luồng tensor; không phải sơ đồ Transformer encoder-decoder gốc.

7. Decoder block có thêm hai cơ chế attention

Decoder gốc có ba tầng con:

7.1 Masked self-attention

Query, key, value đều đến từ decoder, nhưng token tương lai bị che.

7.2 Cross-attention

  • Query: từ decoder hiện tại;
  • Key/Value: từ đầu ra encoder.

Điều này cho phép decoder hỏi:

Với trạng thái sinh hiện tại, phần nào của câu nguồn hữu ích nhất?

7.3 FFN

Biến đổi từng vị trí như encoder.

8. Huấn luyện và suy luận không giống nhau

Đây là điểm thường bị nói quá đơn giản thành “Transformer song song hoàn toàn”.

Khi huấn luyện decoder

Ta thường đã có cả chuỗi đích. Nhờ causal mask, các vị trí trong chuỗi đích có thể được xử lý song song trong một lượt forward mà vẫn không nhìn tương lai.

Khi suy luận tự hồi quy

Muốn sinh token t+1t+1, ta cần biết các token đã sinh đến tt. Vì vậy quá trình sinh vẫn tuần tự theo token:

prompt → token 1 → token 2 → token 3 → ...

KV cache giúp tránh tính lại toàn bộ key/value cũ, nhưng không biến quá trình sinh tự hồi quy thành việc sinh mọi token tương lai cùng một lúc.

9. Ba loại attention trong Transformer gốc

Vị tríQK/VMask?
Encoder self-attentionencoderencoderthường không causal
Decoder self-attentiondecoderdecodercausal
Encoder-decoder cross-attentiondecoderencoderkhông causal theo câu nguồn

10. Luồng dữ liệu hoàn chỉnh

11. Transformer học gì trong một block?

Một cách tách vai trò:

  1. Attention quyết định token nào nên trao đổi thông tin với token nào.
  2. Trộn value tạo ngữ cảnh mới cho từng token.
  3. FFN biến đổi ngữ cảnh đó trong không gian đặc trưng.
  4. Residual giữ luồng thông tin và gradient.
  5. Normalization ổn định thang kích hoạt.
  6. Thông tin vị trí giúp phân biệt thứ tự.
  7. Xếp nhiều block → biểu diễn ngày càng phụ thuộc ngữ cảnh sâu hơn.

12. Tóm tắt

  • Transformer gốc là encoder-decoder, không phải decoder-only GPT.
  • Attention loại bỏ vòng lặp tuần tự theo vị trí trong một layer và tăng khả năng song song khi huấn luyện.
  • Self-attention không tự mang thứ tự, nên cần thông tin vị trí.
  • Encoder = self-attention + FFN.
  • Decoder = causal self-attention + cross-attention + FFN.
  • Residual và LayerNorm là phần cấu trúc quan trọng, không phải chi tiết phụ.
  • Decoder có thể huấn luyện song song theo vị trí nhờ mask, nhưng quá trình sinh tự hồi quy vẫn tuần tự.

Câu hỏi tự kiểm tra

  1. Vì sao bỏ vòng lặp tuần tự lại giúp tăng mức song song khi huấn luyện?
  2. Nếu bỏ thông tin vị trí, self-attention có tự biết token nào đứng trước không?
  3. Attention và FFN khác vai trò ở đâu?
  4. Cross-attention lấy Q/K/V từ đâu?
  5. Tại sao decoder khi huấn luyện có thể xử lý nhiều vị trí cùng lúc nhưng khi suy luận vẫn sinh từng token?
  6. Transformer 2017 dùng pre-norm hay post-norm?

Tài liệu tham khảo