TROISINH
FrontierVision & Multimodal

CLIP — Match image-text bằng contrastive learning, zero-shot classification

CLIP biến classification thành bài toán retrieval: học không gian embedding chung cho ảnh và văn bản từ 400 triệu cặp dữ liệu internet, mở khóa zero-shot classification không cần label cố định.

Multimodal AI đang định hình lại ngành công nghiệp 2025–2026, nhưng khoảng cách lớn nhất vẫn là làm sao để máy "hiểu" đồng thời cả hình ảnh lẫn ngôn ngữ mô tả. CLIP không chỉ là cầu nối giữa vision và language—nó thay đổi căn bản cách chúng ta nghĩ về classification, biến một bài toán phân loại cứng nhắc thành tìm kiếm ngữ nghĩa linh hoạt mà không cần đào tạo lại.

Vấn đề

Computer vision truyền thống mắc kẹt trong logic "fixed label set". Để nhận diện đối tượng, bạn phải định nghĩa trước một danh sách class cố định—ví dụ ImageNet với 1000 loại đồ vật—thu thập hàng triệu ảnh được gán nhãn thủ công, và huấn luyện một classifier chuyên biệt. Muốn thêm class mới như "xe đạp điện" hay "bệnh lạ trên ảnh X-quang"? Bạn phải xây dựng dataset mới và train lại toàn bộ mô hình từ đầu. Quy trình này tốn kém, chậm chạp, và không thể mở rộng cho hàng triệu khái niệm mở (open vocabulary) trong thế giới thực.

CLIP giải quyết điểm nghẽn này bằng cách học trực tiếp từ mô tả tự nhiên trên internet—400 triệu cặp (ảnh, text) không cần gán nhãn thủ công, cho phép mô hình liên kết ngôn ngữ với hình ảnh mà không bị ràng buộc bởi danh sách class cố định.

Ý tưởng cốt lõi

Classification thực chất là retrieval. Đây là insight cốt lõi khiến bạn có thể thấy "à, chỉ vậy thôi à?". Thay vì xây dựng một bưu điện với 1000 hộp thư cố định (như ImageNet), CLIP tạo ra một bản đồ semantic khổng lồ nơi mọi ảnh và mọi mô tả văn bản đều tồn tại như các điểm tọa độ trong không gian vector.

Cơ chế gồm ba thành phần:

Dual encoder architecture. Một image encoder (thường là Vision Transformer hoặc ResNet) xử lý ảnh, một text encoder (Transformer) xử lý văn bản. Cả hai đều chiếu dữ liệu vào cùng một không gian embedding (thường 512 hoặc 768 chiều). Không có gì ghép nối hai encoder này—chỉ là hai đầu ra vector được ép buộc nằm chung một không gian.

Contrastive learning. Hãy tưởng tượng 400 triệu nam châm được rải trên bàn. Các cặp đúng (ảnh chó + chữ "con chó") được hút lại gần nhau, các cặp sai (ảnh chó + chữ "xe tải") bị đẩy xa. Sau khi huấn luyện, khoảng cách cosine giữa hai vector trực tiếp biểu thị độ tương đồng ngữ nghĩa. Điều đẹp đẽ là model học được các quan hệ tương đối: "puppy" nằm gần "dog" hơn là "truck", và bạn có thể làm "toán vector" như vector("Vietnam") - vector("Hanoi") + vector("Paris") ≈ vector("France").

Zero-shot via dynamic classifier. Đây là phần thiết kế hay nhất. Trong hệ thống cũ, "classifier" nghĩa là trọng số cố định trong lớp cuối. Trong CLIP, "classifier" chỉ là một câu truy vấn tìm kiếm. Khi bạn muốn phân loại ảnh, bạn gõ "a photo of a {class}", text encoder tạo ra vector cho câu này, và bạn tìm ảnh có embedding gần nhất. Không cần train lại, không cần weights cố định—text encoder đóng vai trò generator cho classifier động.

Nhiều người nói CLIP hiểu ngôn ngữ sâu sắc như con người—thực ra không đúng. CLIP hoạt động như "bag of words" ở mức embedding: nó nhìn tập hợp từ hơn là thứ tự cú pháp. "A dog chasing a person" và "a person chasing a dog" có thể cho score tương tự vì cùng chứa các từ khóa chính. Đừng nhầm lẫn khả năng zero-shot với hiểu biết ngữ pháp tinh vi.

Tại sao nó hoạt động

Toán học đằng sau CLIP là contrastive loss (InfoNCE). Với mỗi batch gồm N cặp (ảnh, text), ta tạo ra ma trận similarity N×N. Loss function ép buộc các phần tử trên đường chéo (cặp đúng) có giá trị cao, và các phần tử ngoài đường chéo (cặp sai trong cùng batch) có giá trị thấp:

L=logexp(sim(xi,ti)/τ)j=1Nexp(sim(xi,tj)/τ)\mathcal{L} = -\log \frac{\exp(\text{sim}(x_i, t_i)/\tau)}{\sum_{j=1}^N \exp(\text{sim}(x_i, t_j)/\tau)}

Trong đó sim(u,v)=uvuv\text{sim}(u, v) = \frac{u \cdot v}{\|u\| \|v\|} là cosine similarity sau khi L2 normalize, và τ\tau là temperature parameter điều chỉnh độ "mềm" của phân phối.

Điểm tinh tế: mỗi ảnh trong batch đóng vai trò làm negative example miễn phí cho tất cả các text không phải cặp của nó. Với batch size N, bạn nhận được N2NN^2 - N cặp negative samples mà không cần gán nhãn thêm. Đây là lý do CLIP cần batch size cực lớn (hàng chục nghìn) trên hàng trăm GPU để học hiệu quả.

Không gian embedding chung có tính chất hình học "isotropic"—các vector phân bố đều trên mặt cầu đơn vị, cho phép so sánh góc giữa bất kỳ ảnh và văn bản nào. Việc dùng cosine similarity thay vì Euclidean distance khiến model bất biến với độ lớn của vector, chỉ quan tâm đến hướng (semantic content).

Ý nghĩa thực tế

Đặc điểmTraditional Supervised (ImageNet)CLIP Zero-shot
Dữ liệu huấn luyện1.28M ảnh + label cố định400M cặp (ảnh, text) từ internet
Tính linh hoạtFixed 1000 classesOpen vocabulary—bất kỳ mô tả ngôn ngữ nào
Transfer learningCần fine-tuning cho domain mớiZero-shot immediate
Annotation costCao (thuê người gán nhãn)Thấp (dữ liệu công khai)

Benchmarks: CLIP ViT-L/14 đạt 76.2% top-1 accuracy trên ImageNet, ngang bằng ResNet-50, nhưng thực hiện điều này mà không cần một ảnh ImageNet nào trong quá trình huấn luyện. Trên các tác vụ OCR, nhận dạng hành động trong video, và định vị địa lý, CLIP vượt trội các phương pháp supervised truyền thống khi test trên dữ liệu phân phối khác (distribution shift).

Ai đang dùng:

  • Stable Diffusion dùng CLIP để hiểu text prompt và điều hướng quá trình denoise, nối liền văn bản với hình ảnh sinh ra.
  • Jina AI cung cấp CLIP-as-service cho multimodal RAG (Retrieval-Augmented Generation), cho phép tìm kiếm ảnh bằng văn bản và ngược lại.
  • Y tế: Match ảnh X-quang với báo cáo y tế mà không cần huấn luyện lại trên từng bệnh viện riêng biệt.
  • Content moderation: Phát hiện nội dung độc hại qua mô tả ngôn ngữ tự nhiên thay vì danh sách hash cố định.

Hạn chế:

  • Bag of words: Bỏ qua thứ tự từ và cú pháp, dẫn đến nhầm lẫn giữa "dog chasing person" và "person chasing dog".
  • Spatial reasoning kém: Không hiểu khái niệm không gian như "bên trái", "phía trên", "nhỏ hơn"—chỉ nhìn thấy "có cái gì đó" trong ảnh.
  • Đếm và tổng hợp: Thất bại trên các tác vụ đòi hỏi đếm chính xác số lượng đối tượng hoặc quan hệ phức tạp giữa nhiều thực thể.
  • Bias: Thừa kế đầy đủ thiên kiến từ dữ liệu internet không được lọc.

Đào sâu hơn

Paper gốc:

Bài liên quan TroiSinh:

Cùng cụm (Vision & Multimodal):

  • Vision Transformer (ViT) — Kiến trúc backbone thường được dùng làm image encoder trong CLIP thay vì ResNet.
  • Multimodal LLM — Cách CLIP được tích hợp vào GPT-4V và các mô hình đa modal hiện đại để xử lý cả ảnh và text.
  • Diffusion Models — Sử dụng CLIP embedding để điều khiển quá trình sinh ảnh từ văn bản.

Đọc tiếp:

  • Transformer Architecture — Nền tảng của text encoder trong CLIP và cách self-attention xử lý chuỗi văn bản.
  • Neural Network Primitives — Hiểu sâu về embedding, không gian vector, và cosine similarity—các khối xây dựng nền tảng của CLIP.

Mở rộng:

On this page