Bài 6

Vision Transformer — ViT

Bài này đưa kiến trúc Transformer — vốn ra đời cho xử lý ngôn ngữ (NLP) — vào lĩnh vực thị giác máy tính. Vision Transformer (ViT) coi một bức ảnh như một "câu" gồm nhiều mảnh nhỏ, rồi để cơ chế self-attention tự học quan hệ giữa chúng. Quan trọng hơn, đây là cầu nối tự nhiên sang Pha 3 (NLP → LLM): cùng một nền tảng Transformer chạy được cho cả ảnh lẫn ngôn ngữ.

Hạn chế của CNN & động lực attention
Vì sao cần một cơ chế nhìn toàn cục

CNN xây dựng đặc trưng bằng các bộ lọc tích chập trượt trên ảnh. Đây là điểm mạnh nhưng cũng là giới hạn:

Self-attention giải quyết đúng điểm yếu này: ngay từ tầng đầu tiên, mỗi vị trí có thể "nhìn" tới toàn bộ các vị trí khác trong ảnh và tự quyết định nên chú ý vào đâu — không bị bó hẹp trong một cửa sổ tích chập.

Self-Attention (cốt lõi Transformer)
Cơ chế chú ý giữa các token

Từ mỗi phần tử đầu vào (token), Transformer chiếu ra ba vector qua các ma trận trọng số học được: Query \(Q\) (tôi đang tìm gì), Key \(K\) (tôi mô tả mình thế nào) và Value \(V\) (nội dung tôi mang theo). Mức độ "chú ý" của một token tới các token khác được tính bằng độ tương đồng giữa Query của nó và Key của những token kia.

$$\text{Attention}(Q,K,V)=\text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V$$

Trực giác: tích \(QK^\top\) cho ra điểm tương đồng giữa mọi cặp token; chia cho \(\sqrt{d_k}\) để ổn định độ lớn khi số chiều \(d_k\) tăng; softmax biến các điểm này thành trọng số cộng lại bằng 1. Cuối cùng mỗi token tổng hợp lại thông tin từ tất cả token khác theo đúng trọng số tương đồng đó. Token nào liên quan hơn thì đóng góp nhiều hơn.

Multi-head attention: thay vì một phép attention duy nhất, mô hình chạy song song nhiều "đầu" (head), mỗi đầu có bộ \(Q,K,V\) riêng nên học được các kiểu quan hệ khác nhau (ví dụ một đầu chú ý hình dạng, một đầu chú ý màu sắc). Kết quả các đầu được ghép lại rồi chiếu về không gian ban đầu.

Ghi chú: ở đây ta chỉ giữ ở mức vừa đủ để hiểu ViT. Self-attention, multi-head, positional encoding sẽ được mổ xẻ sâu hơn ở Pha 3 (NLP → LLM), nơi nó là kiến trúc trung tâm.
Vision Transformer (ViT)
Coi ảnh như một câu gồm các patch

Ý tưởng cốt lõi của ViT: Transformer làm việc trên một chuỗi token, vậy hãy biến ảnh thành một chuỗi. Quy trình như sau:

Nói gọn: ViT coi ảnh như một câu gồm các patch, rồi xử lý đúng như Transformer xử lý câu chữ.

Vision Transformer (ViT) — patch embedding & encoder Scroll / zoom · Mở draw.io ↗
ViT cần nhiều dữ liệu
Cái giá của việc bỏ bớt inductive bias

Vì ViT gần như không cài sẵn giả định về locality hay translation invariance như CNN, mọi quy luật không gian của ảnh nó phải tự học từ dữ liệu. Hệ quả:

Kinh nghiệm thực tế: hiếm khi train ViT từ đầu. Cách phổ biến là dùng một ViT đã pretrain sẵn (trên dataset lớn) rồi fine-tune cho bài toán của mình — vừa nhanh vừa cần ít dữ liệu hơn nhiều.
Các biến thể
Transformer cho thị giác phát triển ra sao
Tiêu chíViT (Transformer)CNN
Inductive biasYếu (gần như tự học mọi thứ)Mạnh (locality, translation invariance)
Dữ liệu cầnRất nhiều / cần pretraining mạnhTốt ngay cả với dữ liệu vừa & nhỏ
Global contextNắm bắt ngay từ tầng đầu (self-attention)Chỉ rõ ở tầng sâu, khi receptive field đủ lớn
Chi phí tính toánTăng bậc hai theo số token (ảnh lớn rất tốn)Tỉ lệ thuận, tối ưu tốt cho ảnh lớn
Cầu nối sang Pha 3 (NLP → LLM)
Một nền tảng chung cho ảnh và ngôn ngữ

Điểm đáng nhớ nhất của bài này: Transformer và self-attention là nền tảng chung cho cả thị giác (ViT) lẫn ngôn ngữ (BERT, GPT). Cùng một cơ chế — chiếu \(Q,K,V\) rồi để mỗi token chú ý tới các token khác — chạy được trên chuỗi patch của ảnh cũng như chuỗi từ của câu.

Chính sự thống nhất này mở đường cho các mô hình đa phương thức (multimodal): CLIP học chung không gian biểu diễn cho ảnh và văn bản; các multimodal LLM ngày nay vừa "nhìn" ảnh vừa "đọc" chữ trong cùng một kiến trúc. Hiểu ViT ở đây nghĩa là bạn đã nắm nửa chặng đường tới các LLM hiện đại.

Tiếp theo — Pha 3: NLP → LLM (đang xây dựng). Ta sẽ quay lại self-attention, multi-head và positional encoding một cách bài bản, rồi đi từ word embedding → Transformer → BERT/GPT → các mô hình ngôn ngữ lớn và multimodal.
← Bài trước
Bài 5: Detection & Segmentation