Lesson 08 — CLIP và Multimodal Embedding
Bài cuối của lộ trình Vectors. 4 component tương tác: similarity matrix, training animation, zero-shot classification và CLIP retrieval. Ráp toàn bộ những gì đã học — cosine, softmax, embedding — thành một model đa modality.
Note. Embedding trong các demo dưới được "giả lập" — không phải output từ CLIP thật, mà là vector 4D được chế ra cho phù hợp ngữ nghĩa. Mục đích là minh họa cơ chế tính toán của CLIP loss, softmax, retrieval. Để chạy CLIP thật, tham khảo
openai/CLIP hoặc open_clip trên GitHub.
1. Contrastive similarity matrix N×N
Click cell để xem chi tiết. Diagonal (viền đỏ) = cặp đúng. Temperature scale logits trước khi softmax.
Image (hàng — vi)
Text (cột — uj)
Diagonal — cặp đúng
Diagonal trung bình: —
Off-diagonal trung bình: —
Loss I→T: —
Loss T→I: —
Tổng loss: —
Click một ô bất kỳ để xem chi tiết tính toán.
Giải thích loss
Mỗi hàng (image i): logits = S[i, :] * (1/τ) softmax → prob[j] loss_i = -log(prob[i]) (label = i) Mỗi cột (text j): logits = S[:, j] * (1/τ) softmax → prob[i] loss_j = -log(prob[j]) (label = j) Tổng = mean(loss_i + loss_j) / 2
2. Training animation — embedding di chuyển trong 2D space
Animation 4 cặp (ảnh-text) trong không gian 2D đã giảm chiều. Click "Train" → embedding di chuyển: cặp đúng kéo gần, cặp sai đẩy xa.
Step: 0 / 30
Random init
Hai modality bắt đầu ở vị trí random. Mỗi step gradient descent kéo cặp đúng (cùng index) lại gần và đẩy cặp sai ra xa.
Avg cosine cặp đúng: —
Avg cosine cặp sai: —
Contrastive loss: —
Image (vi)
Text (ui)
Cùng số = cặp đúng
3. Zero-shot classification demo
Chọn ảnh test → CLIP cosine với mỗi class prompt → argmax = predicted class. Thử đổi prompt template để xem hiệu ứng prompt engineering.
🐱
4. CLIP retrieval — text query → top-3 ảnh
Database 8 ảnh. Nhập query text, CLIP tính cosine với từng ảnh, trả top-3.
Click một preset query hoặc gõ tự do, rồi nhấn Search.
5. Tổng kết
CLIP ráp toàn bộ những gì lộ trình Vectors đã dạy:
- Vector (Tầng 1, 4): ảnh và text đều là vector trong ℝd.
- Cosine (Tầng 4 L02): thước đo giống nhau giữa hai vector.
- Softmax + cross-entropy (Tầng 5 L08, Tầng 6 L03): contrastive loss = cross-entropy trên cosine matrix.
- Gradient descent (Tầng 3, Tầng 6 L02): backprop kéo 2 encoder hội tụ về joint space.
- Embedding (Tầng 6 L06): ý nghĩa hóa thành vector — giờ cả ảnh lẫn text.
- Vector DB (Tầng 6 L07): lưu embedding ảnh + tìm bằng text query = engine của Google Photos, Stable Diffusion.
Không có lesson tiếp theo. Bước tiếp theo là rời khỏi tài liệu này và đi xây cái gì đó.