← Quay lại Blog
Công nghệ thông tin

Attention Mechanisms: Bí Mật Giúp Transformer Và LLM Thông Minh

Attention Mechanisms: Bí Mật Giúp Transformer Và LLM Thông Minh

Attention Mechanism Là Gì?

Attention mechanism (cơ chế chú ý) là kỹ thuật cho phép model AI tập trung vào các phần quan trọng của input khi xử lý thông tin — giống như cách bạn đọc một câu dài và tự động chú ý đến từ khóa quan trọng.

Trong bối cảnh Transformer và LLM, attention giúp model:

  • Hiểu mối quan hệ giữa các từ, dù chúng cách xa nhau
  • Xử lý song song thay vì từng từ tuần tự như RNN
  • Nắm bắt ngữ cảnh phức tạp, nhiều lớp nghĩa

Ví dụ thực tế: Câu “Con mèo của tôi rất thích sữa, nó uống mỗi sáng” — từ “nó” cần trỏ đúng về “con mèo”, không phải “sữa” hay “sáng”. Attention mechanism làm chính xác điều này một cách tự động.

Tại Sao Attention Quan Trọng?

Thời kỳ RNN/LSTM, model xử lý văn bản gặp hai vấn đề lớn:

  1. Vanishing gradient: Model quên mất thông tin đầu câu khi xử lý đến cuối
  2. Không song song hóa được: Phải xử lý từng từ tuần tự — chậm, tốn kém

Attention xóa sổ cả hai:

  • Mỗi từ nhìn thấy toàn bộ câu ngay lập tức
  • Mọi phép tính attention chạy song song trên GPU
  • Hiệu quả tăng 10-100 lần so với RNN

Con số thực tế: GPT-3 với 175 tỷ tham số chỉ train được nhờ attention. Dùng RNN? Thời gian train sẽ kéo dài từ vài tuần lên hàng năm.

Self-Attention: Trái Tim Của Transformer

Self-attention (attention tự chú ý) là dạng attention mà input chú ý vào chính nó. Đây là cơ chế cốt lõi trong Transformer.

Cách Hoạt Động (Không Cần Toán Học Phức Tạp)

Mỗi từ trong câu sẽ tính ba vector:

  1. Query (Q): “Tôi đang tìm gì?”
  2. Key (K): “Tôi mang thông tin gì?”
  3. Value (V): “Thông tin cụ thể của tôi là gì?”

Quá trình diễn ra như sau:

  • Bước 1: Mỗi từ dùng Query để “hỏi” các từ khác
  • Bước 2: So sánh Query với Key của các từ để tính attention score (điểm chú ý)
  • Bước 3: Dùng attention score để lấy tổng trọng số của các Value
  • Kết quả: Mỗi từ nhận được một representation mới, đã chứa thông tin ngữ cảnh từ toàn bộ câu

Ví dụ cụ thể: Trong câu “Anh ấy đá bóng rất giỏi”, khi xử lý từ “giỏi”:

  • Query của “giỏi” sẽ cho điểm cao với Key của “đá bóng” (vì đây là hành động được miêu tả)
  • Value của “đá bóng” được trộn vào representation của “giỏi”
  • Kết quả: Model hiểu “giỏi” đang nói về kỹ năng đá bóng, không phải tính cách chung

Scaled Dot-Product Attention

Công thức chuẩn của attention trong Transformer:

Attention(Q, K, V) = softmax(Q·Kᵀ / √d) · V

Giải thích từng phần:

  • Q·Kᵀ: Tính tích vô hướng giữa Query và Key (đo độ tương đồng)
  • √d: Chia cho căn bậc hai chiều vector để tránh giá trị quá lớn
  • softmax: Chuyển điểm số thành xác suất (tổng = 1)
  • ·V: Nhân với Value để lấy thông tin cuối cùng

Tại sao chia √d? Khi chiều vector lớn (d = 512, 1024…), tích vô hướng có thể rất lớn, làm softmax “bão hòa” (gần 1 hoặc 0 cực đoan). Chia căn d giữ gradient ổn định.

Multi-Head Attention: Nhìn Từ Nhiều Góc Độ

Multi-head attention chạy nhiều attention song song, mỗi “head” học một khía cạnh khác nhau của mối quan hệ.

Ví dụ thực tế: Trong câu “Cô ấy đọc sách ở thư viện”, các head có thể học:

  • Head 1: Mối quan hệ chủ-vị (cô ấy → đọc)
  • Head 2: Mối quan hệ động từ-đối tượng (đọc → sách)
  • Head 3: Mối quan hệ địa điểm (đọc → thư viện)

Mỗi head có bộ trọng số Q, K, V riêng. Sau khi tất cả head chạy xong, output được concat lại và nhân với một ma trận cuối để tổng hợp.

Con số thực tế:

  • GPT-3: 96 attention heads
  • BERT-base: 12 heads
  • LLaMA 2: 32-64 heads tùy kích thước

Nhiều head hơn = nắm bắt nhiều pattern phức tạp hơn, nhưng đổi lại là chi phí tính toán tăng.

Attention Trong Encoder Vs Decoder

Transformer gồm hai phần: Encoder (mã hóa input) và Decoder (sinh output).

Encoder (Ví Dụ: BERT)

Dùng bidirectional self-attention — mỗi từ nhìn thấy cả câu (trước và sau):

"Tôi [đang] học AI" 
  ↑     ↑     ↑
Nhìn cả 3 hướng

Phù hợp cho task hiểu ngữ nghĩa: phân loại, Q&A, NER…

Decoder (Ví Dụ: GPT)

Dùng causal self-attention (masked attention) — chỉ nhìn các từ trước đó:

"Hôm → nay → tôi"
  ↑      ↑      ↑
Chỉ nhìn trái

Điều này bắt buộc vì model đang sinh từng từ một (autoregressive). GPT-4, Claude, Gemini đều dùng cơ chế này.

Encoder-Decoder (Ví Dụ: T5, Translator)

Kết hợp cả hai:

  • Encoder dùng bidirectional attention hiểu input
  • Decoder dùng causal attention sinh output
  • Thêm cross-attention: decoder chú ý vào encoder output

Phù hợp cho dịch máy, tóm tắt, Q&A với context dài.

Attention Mask: Kiểm Soát Thông Tin

Attention mask là ma trận binary kiểm soát từ nào được phép chú ý đến từ nào.

Các loại mask phổ biến:

  1. Causal mask (GPT): Chặn từ nhìn tương lai
  2. Padding mask: Bỏ qua các token padding (khi batch các câu dài khác nhau)
  3. Custom mask: Dùng trong RAG, guardrails, hoặc khi muốn cô lập một số token

Code minh họa (PyTorch):

# Causal mask cho decoder
seq_len = 5
causal_mask = torch.triu(torch.ones(seq_len, seq_len), diagonal=1).bool()
# Kết quả:
# [[0, 1, 1, 1, 1],   # Token 0 chỉ nhìn chính nó
#  [0, 0, 1, 1, 1],   # Token 1 nhìn 0-1
#  [0, 0, 0, 1, 1],   # Token 2 nhìn 0-2
#  [0, 0, 0, 0, 1],   # ...
#  [0, 0, 0, 0, 0]]   # Token 4 nhìn tất cả

Attention Bottlenecks & Tối Ưu

Attention có độ phức tạp O(n²) với n là độ dài sequence — đây là vấn đề lớn với context dài.

Các kỹ thuật tối ưu:

  1. Flash Attention: Giảm memory I/O, tăng tốc 2-4x
  2. Sliding Window Attention: Chỉ chú ý k token gần nhất (Mistral, Longformer)
  3. Sparse Attention: Chọn lọc token quan trọng (BigBird)
  4. Linear Attention: Giảm O(n²) xuống O(n) nhưng mất độ chính xác
  5. KV Cache: Lưu Key/Value đã tính, chỉ tính mới cho token mới

Khi nào dùng cái gì:

  • Flash Attention: Luôn bật nếu có (hỗ trợ A100, H100…)
  • Sliding window: Context 32k-128k, chấp nhận mất một ít thông tin xa
  • KV cache: Generation/chat (bắt buộc để nhanh)

Attention Weights Visualization

Bạn có thể visualize attention để hiểu model đang chú ý vào đâu. Tool phổ biến: BertViz, Ecco, AllenNLP.

Ví dụ phát hiện lỗi: Nếu model liên tục cho attention score cao vào dấu câu (.,!?) thay vì nội dung, đó là dấu hiệu overfit hoặc data nhiễu.

Debugging thực tế: Khi RAG trả lời sai, xem attention score giữa câu hỏi và các chunk retrieved. Nếu score đều nhau → retrieval không đủ tốt, cần cải thiện embeddings hoặc reranker.

Attention Trong Các Loại Model

Model TypeAttention MechanismUse Case
BERTBidirectional self-attentionClassification, NER, embedding
GPTCausal (masked) self-attentionText generation, chat
T5Encoder-decoder + cross-attentionTranslation, summarization
Vision Transformer (ViT)Self-attention trên image patchesImage classification
CLIPCross-attention giữa text-imageMultimodal search, zero-shot
WhisperEncoder-decoder audio attentionSpeech-to-text

Điểm chung: Tất cả đều dùng scaled dot-product attention làm nền tảng, chỉ khác cách áp dụng (bidirectional/causal/cross).

Cross-Attention: Kết Nối Hai Modality

Cross-attention cho phép một sequence chú ý vào sequence khác — cực kỳ quan trọng trong multimodal AI.

Ví dụ cụ thể (CLIP):

  • Input: Text “a dog playing in the park” + Image
  • Text tạo Query
  • Image tạo Key/Value
  • Cross-attention tính điểm tương đồng giữa text và các vùng ảnh
  • Kết quả: Model biết vùng nào trong ảnh tương ứng với “dog”, “playing”, “park”

Ứng dụng thực tế:

  • Image captioning: Ảnh → Text
  • Visual Q&A: Hỏi về ảnh, trả lời bằng text
  • Text-to-image: DALL-E, Stable Diffusion dùng cross-attention giữa prompt và latent image

Khi Nào Attention Không Đủ?

Attention mạnh nhưng không phải lúc nào cũng là giải pháp tốt nhất:

  1. Data dạng bảng/structured: Gradient Boosting (XGBoost, LightGBM) thường tốt hơn
  2. Time series ngắn: LSTM/GRU đơn giản và nhanh hơn
  3. Edge device với RAM <1GB: Quá tốn bộ nhớ, dùng MobileNet hoặc DistilBERT

Trade-off cần nhớ:

  • Attention = linh hoạt, mạnh, nhưng tốn tài nguyên
  • RNN/CNN = giới hạn hơn nhưng hiệu quả với data nhỏ

Chọn dựa trên quy mô data, compute budget, và yêu cầu độ chính xác.

Tương Lai Của Attention

Các hướng nghiên cứu đang nóng:

  1. Sub-quadratic attention: Giảm O(n²) xuống gần O(n) mà không mất nhiều độ chính xác
  2. Memory-efficient transformers: Chạy 100k+ tokens trên GPU thường
  3. Hybrid models: Kết hợp attention với CNN/RNN/SSM (State Space Models như Mamba)
  4. Attention-free alternatives: Mamba, RWKV thử thay attention bằng cơ chế khác

Dự đoán 2026-2027:

  • Context window lên 1M tokens (đã có Gemini 1.5)
  • Flash Attention 3 tăng tốc thêm 2x
  • Attention sẽ không còn là bottleneck lớn nhất (data quality và alignment mới là vấn đề)

Lời Kết

Attention mechanism là bước nhảy vọt đưa AI từ “hiểu sơ sài” lên “hiểu sâu ngữ cảnh”. Nó không phải công nghệ mới nhất (ra đời 2017), nhưng vẫn là nền tảng của mọi LLM hiện đại.

Điều quan trọng không phải là thuộc công thức — mà là hiểu cách attention giúp model nắm bắt mối quan hệ giữa các phần tử trong data. Một khi hiểu điều đó, bạn sẽ biết khi nào dùng Transformer, khi nào không, và cách debug khi model cho kết quả sai.

Đọc thêm: