Đọc ngày 2026-07-27

Kế hoạch hôm nay

Mục tiêu cần hiểu

  • Hiểu layer normalization, residual connection và positional embeddings giúp Transformer ổn định ra sao.
  • Phân biệt encoder-only, decoder-only và encoder-decoder models theo mục tiêu sử dụng.
  • Nắm các nhánh model tiêu biểu như BERT, GPT, T5 và M2M-100.
  • Tự chọn được loại kiến trúc phù hợp cho classification, generation, translation hoặc summarization.

Câu hỏi dẫn đường

  • Encoder-only, decoder-only và encoder-decoder khác nhau thế nào?
  • Mỗi kiến trúc phù hợp với loại task nào?
  • BERT, GPT và T5 nằm ở nhóm nào?

Ghi chú trong khi đọc

  • Phần Adding Layer Normalization nhấn mạnh rằng Transformer block không chỉ là attention và feed-forward layer. Để xếp nhiều layer sâu mà vẫn train ổn định, mỗi sublayer cần được bọc bởi residual connectionLayer Normalization.
  • Residual connection giữ lại input gốc của sublayer rồi cộng với output mới. Nhờ vậy sublayer học phần “chỉnh sửa thêm” thay vì phải tái tạo toàn bộ representation từ đầu.
  • Layer Normalization chuẩn hóa activation theo chiều feature trong từng token/example, giúp scale tín hiệu ổn định hơn khi đi qua nhiều layers.
  • Với encoder block kiểu post-layer normalization, luồng trực giác có thể viết gọn:
x -> MultiHeadAttention(x) -> x + attention_output -> LayerNorm
  -> FeedForward -> x + feedforward_output -> LayerNorm
  • Điểm quan trọng: attention và feed-forward tạo năng lực biểu diễn, còn residual connection và layer normalization làm cho năng lực đó train được ở độ sâu lớn.
  • Layer normalization khác batch normalization vì nó không cần thống kê trên batch. Điều này hợp với NLP/Transformer vì sequence length, batch size và cách padding có thể thay đổi.
  • Khi đọc sơ đồ Transformer, không nên xem LayerNorm như chi tiết phụ. Nó là một phần hạ tầng ổn định hóa: nếu bỏ normalization, activation dễ lệch scale qua từng block và gradient có thể khó học hơn.
  • Có hai biến thể placement hay gặp:
    • Post-LN: sublayer residual add layer norm. Đây là cách dễ đọc trong sơ đồ Transformer gốc.
    • Pre-LN: layer norm sublayer residual add. Biến thể này thường ổn định hơn khi train model rất sâu.
  • Mental model: mỗi block Transformer là một vòng lặp “đọc context, chỉnh representation, cân lại tín hiệu”. LayerNorm là bước cân lại để block tiếp theo không nhận tín hiệu quá lệch.
  • Positional Embeddings bổ sung một phần khác của hạ tầng Transformer: self-attention rất mạnh trong việc cho token nhìn nhau, nhưng nó không tự biết thứ tự token. Vì vậy model cần thêm tín hiệu vị trí vào token embeddings trước khi đi qua các Transformer blocks.
  • Nếu token embedding trả lời “token này là gì”, positional embedding trả lời “token này đang ở đâu trong sequence”. Hai thông tin này được kết hợp để attention vừa biết nội dung, vừa biết thứ tự.
  • Công thức trực giác:
  • Trong đó là token embedding, là positional embedding, còn là input embedding đã có cả thông tin nội dung và vị trí.
  • Positional embeddings có thể là learnable: mỗi vị trí có một vector riêng được học bằng backpropagation giống token embeddings. Cách này linh hoạt trong context length đã train, nhưng kém tự nhiên khi cần xử lý vị trí dài hơn chưa từng học.
  • Điểm cần nhớ: Layer Normalization giúp tín hiệu ổn định khi stack nhiều layer; Positional Embeddings giúp attention không đánh mất thứ tự. Cả hai đều không phải “trang trí”, mà là phần giúp Transformer hoạt động đúng và train được.
  • Phần Adding a Classification Head nối kiến trúc Transformer với bài toán downstream classification. Encoder tạo hidden states giàu ngữ cảnh, còn Classification Head biến representation đó thành logits cho từng nhãn.
  • Với BERT/DistilBERT-style sequence classification, thường lấy hidden state của token [CLS] làm vector đại diện cho cả sequence rồi đưa qua classification head.
  • Công thức trực giác:
  • Trong đó là representation cấp câu, là logits cho các class. Sau đó softmax biến logits thành xác suất dự đoán.
  • Khi dùng AutoModelForSequenceClassification, classification head có thể được thêm mới theo num_labels. Nếu head mới có weight random thì cần fine-tuning để học mapping từ representation sang nhãn.
  • Câu “the first token is used for prediction” nên hiểu là dùng hidden state của token đầu tiên sau khi đã đi qua Transformer, không phải chỉ nhìn token đầu tiên của câu. Trong BERT-style models, token đầu là [CLS]; nhờ self-attention, hidden state này đã nhận thông tin từ toàn sequence.
  • Classification head thường có dạng:
last_hidden_state[:, 0]
-> dropout
-> linear layer
-> logits
  • Dropout giúp giảm overfitting khi fine-tuning; linear layer biến hidden size, ví dụ 768 chiều, thành số class, ví dụ 6 nhãn cảm xúc.
  • Phần The Decoder giải thích nhánh Transformer dùng để sinh chuỗi. Nếu encoder giống “đọc hiểu toàn bộ input”, thì Decoder giống “viết tiếp từng token”.
  • Điểm khác biệt cốt lõi: decoder dùng causal/masked self-attention, nên token hiện tại chỉ được nhìn các token trước nó, không được nhìn token tương lai.
  • Với decoder-only models như GPT, mục tiêu là next-token prediction:
  • Nghĩa là model dự đoán token tiếp theo dựa trên prefix đã có. Đây là lý do decoder phù hợp với text generation, chat và completion.
  • Trong encoder-decoder models như T5/BART, decoder vừa dùng causal self-attention để nhìn output đã sinh, vừa dùng cross-attention để nhìn representation từ encoder.
  • Mask matrix là cách biểu diễn luật “token nào được nhìn token nào” trong attention. Với causal mask, ma trận thường có dạng tam giác dưới: token hiện tại được nhìn chính nó và quá khứ, nhưng không được nhìn tương lai.
      key:  t1  t2  t3  t4
query
t1         1   0   0   0
t2         1   1   0   0
t3         1   1   1   0
t4         1   1   1   1
  • Trong implementation, các ô bị che thường được cộng -inf vào attention scores trước softmax. Sau softmax, các vị trí đó có attention weight gần 0.
  • Phần Meet the Transformers gom các model Transformer thành ba family chính theo cách chúng dùng encoder và decoder.
  • Encoder-only models như BERT, RoBERTa, DistilBERT dùng bidirectional attention để đọc hiểu toàn bộ input. Chúng hợp với classification, NER, semantic search hoặc các task cần representation tốt.
  • Decoder-only models như GPT dùng causal attention để sinh token tiếp theo từ prefix. Chúng hợp với text generation, chat, completion và code generation.
  • Encoder-decoder models như T5, BART, M2M-100 dùng encoder để đọc input và decoder để sinh output. Chúng hợp với translation, summarization và các bài toán sequence-to-sequence.
  • Cách chọn nhanh: nếu task cần hiểu input thì nghĩ encoder-only; nếu cần viết tiếp thì nghĩ decoder-only; nếu cần đọc input rồi tạo output mới thì nghĩ encoder-decoder.

Viết lại bằng lời của tôi

  • Transformer không chỉ mạnh vì có self-attention. Nếu cứ xếp attention và feed-forward layer liên tục, tín hiệu bên trong mạng có thể thay đổi scale rất mạnh, làm training khó ổn định. Layer Normalization giải quyết phần này bằng cách chuẩn hóa activation trước hoặc sau mỗi sublayer.
  • Residual connection giúp model giữ lại representation cũ, còn layer normalization giúp representation mới có scale dễ kiểm soát. Hai kỹ thuật này đi chung giống như một cơ chế “sửa nhưng không phá”: sublayer thêm thông tin mới, residual giữ đường gốc, LayerNorm làm tín hiệu gọn lại.
  • Công thức trực giác cho một sublayer:
  • Nếu sublayer là multi-head attention, model đang thêm thông tin context giữa các token. Nếu sublayer là feed-forward, model đang biến đổi từng token representation. Trong cả hai trường hợp, LayerNorm giúp output không bị lệch scale quá mạnh trước khi đi tiếp.
  • Cách nhớ ngắn: attention/FFN học nội dung, residual giữ đường truyền, LayerNorm giữ tín hiệu ổn định.
  • Với Positional Embeddings, mình hiểu Transformer như sau: attention cho mỗi token quyền hỏi các token khác, nhưng positional embedding cho model biết các token đó đang nằm ở đâu. Nếu thiếu vị trí, dog bites manman bites dog có cùng bộ token nhưng ý nghĩa bị đảo; model cần tín hiệu thứ tự để không nhầm vai trò ngữ pháp.
  • Nếu positional embedding là learnable, model đang tự học ý nghĩa của từng vị trí từ dữ liệu. Đây là cách đơn giản và linh hoạt, nhưng đổi lại model phụ thuộc vào các vị trí đã được train trong context window.
  • Cách nhớ ngắn: token embedding = nội dung, positional embedding = thứ tự, attention = trộn thông tin theo ngữ cảnh.
  • Classification Head là phần chuyển từ “model hiểu câu” sang “model ra quyết định”. Transformer encoder trả về representation; classification head đọc representation đó để tạo điểm số cho từng nhãn.
  • Khi sách nói gắn dropout và linear layer, mình hiểu là: lấy vector [CLS] đã chứa context toàn câu, làm hơi nhiễu nó bằng dropout trong training để tránh học vẹt, rồi dùng linear layer để chuyển vector đó thành điểm số cho từng class.
  • Cách nhớ ngắn: encoder tạo representation, classification head tạo logits, loss/softmax biến logits thành tín hiệu học và dự đoán.
  • Với Decoder, mình hiểu điểm chính là giới hạn tầm nhìn. Encoder đọc toàn bộ câu một lần, còn decoder sinh từ trái sang phải nên phải che tương lai. Causal mask biến self-attention thành cơ chế chỉ nhìn prefix.
  • Mask matrix là phần cụ thể hóa việc “che tương lai”: nó không thay đổi token, chỉ sửa attention scores để những vị trí không hợp lệ không nhận trọng số sau softmax.
  • Cách nhớ ngắn: encoder = đọc toàn cảnh, decoder = viết tiếp theo prefix, encoder-decoder = đọc input rồi viết output mới.
  • Với Encoder-Decoder Architecture, mình hiểu đây là kiến trúc “đọc rồi viết”: encoder đọc input thành hidden states, decoder sinh output từng token và dùng cross-attention để nhìn lại encoder output.
  • Cross-Attention là cầu nối trong phần “đọc rồi viết”: decoder dùng query của nó để hỏi, còn encoder hidden states đóng vai trò key/value chứa thông tin input. Nói ngắn: decoder đang viết output nhưng vẫn được nhìn lại input qua cross-attention.
NhómCách nhìn contextCách dùngVí dụ
Encoder-onlyNhìn toàn bộ input hai chiềuHiểu/biểu diễn inputBERT, RoBERTa
Decoder-onlyChỉ nhìn prefix/quá khứSinh tiếp văn bảnGPT
Encoder-decoderEncoder đọc input, decoder sinh outputBiến đổi sequenceT5, BART
  • Với phần Meet the Transformers, mình không nên nhớ từng model rời rạc. Nên nhớ theo “cấu trúc cơ chế attention task”:
    • BERT family: encoder-only bidirectional attention hiểu văn bản.
    • GPT family: decoder-only causal attention sinh văn bản.
    • T5/BART/M2M-100 family: encoder-decoder encoder đọc, decoder viết seq2seq.
  • Mental model: tên model là ví dụ; thứ cần nhớ là family của nó quyết định kiểu context mà model được nhìn và loại task nó làm tốt.

Điều chưa rõ

  • Trong các kiến trúc LLM hiện đại, khi nào nên ưu tiên pre-LN thay vì post-LN?
  • LayerNorm, RMSNorm và các biến thể normalization khác nhau thế nào về chi phí và độ ổn định?
  • Khi fine-tune model có sẵn, LayerNorm có nên được freeze trong một số setup parameter-efficient fine-tuning không?
  • Absolute positional embeddings, relative positional embeddings và RoPE khác nhau thế nào khi mở rộng context length?
  • Khi thêm classification head mới, nên freeze encoder lúc đầu hay fine-tune end-to-end ngay?
  • Vì sao [CLS] đủ làm representation cấp câu trong BERT-style classification?
  • Dropout rate trong classification head nên chọn thế nào khi dataset nhỏ?
  • Decoder-only và encoder-decoder khác nhau thế nào khi cùng sinh văn bản?
  • Padding mask và causal mask khác nhau thế nào trong một batch có sequence dài ngắn khác nhau?
  • M2M-100 khác T5/BART ở phạm vi multilingual translation như thế nào?
  • Cross-attention weights có thể dùng để hiểu decoder đang chú ý phần nào của input không?

Việc cần làm