SigLIP
SigLIP huấn luyện encoder hình ảnh và văn bản bằng hàm mất mát sigmoid theo từng cặp thay vì softmax của CLIP, giúp giảm mức sử dụng bộ nhớ. Tìm hiểu cách hoạt động, SigLIP 2 và code.
SigLIP (Hàm mất mát sigmoid cho tiền huấn luyện ảnh-văn bản) là phương pháp do các nhà nghiên cứu Google phát triển để huấn luyện encoder ảnh và văn bản trên các cặp ảnh-chú thích, đồng thời cũng là tên của họ model được huấn luyện bằng phương pháp này. Tương tự CLIP, phương pháp này học một không gian embedding chung, trong đó ảnh và chú thích mô tả ảnh nằm gần nhau. Khác biệt nằm ở hàm mất mát: SigLIP xem mỗi cặp ảnh-văn bản trong một batch là một câu hỏi đúng-sai riêng, được chấm bằng hàm sigmoid, thay vì yêu cầu mỗi ảnh chọn chú thích của nó trong toàn batch bằng hàm softmax. Được giới thiệu trong bài báo SigLIP năm 2023, thay đổi này giảm mức sử dụng bộ nhớ, hoạt động tốt hơn với batch size nhỏ, đồng thời giúp encoder SigLIP trở thành thành phần thị giác phổ biến trong mô hình thị giác-ngôn ngữ (VLM).
Cách hàm mất mát sigmoid hoạt động#
Với một batch gồm N cặp ảnh-chú thích, SigLIP tính độ tương đồng giữa mọi embedding ảnh với mọi embedding văn bản, tạo ra N×N điểm số. Phương pháp này nhân mỗi điểm số với nhiệt độ t có thể học, cộng độ chệch b có thể học, rồi áp dụng hàm mất mát log-sigmoid nhị phân: N cặp đúng trên đường chéo được gắn nhãn là khớp, còn N² − N cặp khác là không khớp. Nhiệt độ bắt đầu ở 10 và độ chệch ở −10; nhờ đó, quá trình huấn luyện khởi đầu với giả định ban đầu rằng hầu hết mọi cặp đều không khớp, tránh các cập nhật lớn từ sớm do mất cân bằng giữa một mẫu dương và N − 1 mẫu âm cho mỗi ảnh.
Đoạn mã PyTorch dưới đây tính hàm mất mát này cho bốn cặp, một lần với chú thích đúng và một lần với chú thích được dịch đi một vị trí:
import torch
import torch.nn.functional as F
# Normalized embeddings for 4 image-caption pairs: row i of each tensor belongs together
torch.manual_seed(0)
images = F.normalize(torch.randn(4, 64), dim=-1)
texts = F.normalize(images + 0.05 * torch.randn(4, 64), dim=-1)
# Learnable temperature and bias, at the values SigLIP initializes them to
t, b = 10.0, -10.0
# Every image-text pair is its own binary problem: +1 for a match, -1 for the other 12 pairs
labels = 2 * torch.eye(4) - 1
for name, captions in [("matched", texts), ("shuffled", texts.roll(1, dims=0))]:
logits = t * images @ captions.T + b
loss = -F.logsigmoid(labels * logits).sum() / 4
print(f"{name} captions: loss {loss:.2f}")Kết quả in ra matched captions: loss 1.21 và shuffled captions: loss 10.50. Khi chú thích bị dịch chuyển, mọi cặp trên đường chéo được gắn nhãn là khớp đều trở thành không khớp, khiến hàm mất mát tăng gần gấp chín lần.
Hạng tử hàm mất mát của mỗi cặp chỉ phụ thuộc vào chính cặp đó, vì vậy toàn bộ ma trận N×N không cần phải nằm trên một thiết bị. Mỗi accelerator chấm điểm ảnh của chính nó với văn bản của chính nó, sau đó chuyển embedding văn bản sang accelerator kế tiếp và lặp lại:
Không thể chia hàm mất mát softmax theo cách này, vì xác suất của mỗi ảnh được chuẩn hóa trên mọi chú thích trong batch.
SigLIP và CLIP#
Cả hai đều huấn luyện hai encoder bằng học tương phản, nhưng khác nhau ở đối tượng mà hàm mất mát chuẩn hóa:
- CLIP: Hàm cross-entropy softmax trên từng hàng và từng cột của ma trận độ tương đồng trong batch, được tính sau khi mỗi thiết bị thu thập embedding từ tất cả thiết bị còn lại.
- SigLIP: Hàm mất mát nhị phân độc lập cho từng cặp. Trong bài báo, SigLIP vượt hàm mất mát softmax với batch size nhỏ, còn lợi ích từ việc tăng batch giảm dần và đạt mức đủ dùng ở batch size 32k. Kết hợp với encoder ảnh tiền huấn luyện đã đóng băng, phương pháp này huấn luyện được model đạt độ chính xác ImageNet zero-shot 84.5% trong hai ngày trên bốn chip TPUv4.
Hàm mất mát cũng định hình điểm số tại thời điểm suy luận: model SigLIP gán cho mỗi nhãn ứng viên một xác suất khớp độc lập, vì vậy tổng xác suất của một tập nhãn không nhất thiết bằng 1.
SigLIP 2#
SigLIP 2, ra mắt tháng 2 năm 2025, giữ lại hàm mất mát sigmoid và bổ sung decoder tạo chú thích, tự chưng cất và dự đoán có che trong quá trình huấn luyện, cùng với việc tuyển chọn dữ liệu trực tuyến. Các encoder hỗ trợ đa ngôn ngữ và cải thiện khả năng định vị cũng như đặc trưng dày đặc, những yếu tố quan trọng đối với phát hiện và phân đoạn được xây dựng dựa trên chúng. Biến thể NaFlex xử lý ảnh ở nhiều độ phân giải trong khi giữ nguyên tỷ lệ khung hình gốc; model có các kích thước ViT-B, L, So400m và g, trong đó So400m là một ViT 400 triệu tham số được tối ưu về hình dạng.
Ứng dụng thực tế#
- Encoder thị giác cho VLM: PaliGemma của Google sử dụng encoder ảnh SigLIP So400m, còn Gemma 3 dùng encoder SigLIP 400 triệu tham số cho đầu vào ảnh.
- Phân loại zero-shot: Với SigLIP 2, các nhãn được viết dưới dạng văn bản có thể được chấm điểm so với ảnh mà không cần huấn luyện classifier, hỗ trợ nhiều ngôn ngữ.
- Tìm kiếm ngữ nghĩa: Có thể tìm kiếm embedding ảnh được lưu trong cơ sở dữ liệu vector bằng truy vấn văn bản hoặc ảnh khác.
- Khám phá dataset: Ultralytics Platform tạo embedding cho mọi ảnh trong dataset được phân tích bằng một encoder ảnh-văn bản thuộc loại này, nhờ đó các ảnh tương tự về mặt thị giác nằm gần nhau trong biểu đồ phân tán Clustering; Find similar images trả về những ảnh gần giống nhất từ các dataset khác, còn tìm kiếm bằng văn bản như "xe nâng gần cửa ra vào" cũng trả về các ảnh trông giống như mô tả.










