Zero-Shot Learning
Học zero-shot nhận diện các lớp mà không cần ví dụ được gán nhãn bằng cách đối chiếu đầu vào với mô tả văn bản. Bài viết trình bày CLIP, phát hiện open-vocabulary và các giới hạn.
Zero-shot learning (ZSL) là khả năng của model nhận biết các lớp mà model chưa từng thấy ví dụ huấn luyện được gán nhãn. Thay vì ví dụ, model nhận mô tả của từng lớp mới, chẳng hạn danh sách thuộc tính hoặc, trong các hệ thống hiện đại, tên lớp dưới dạng văn bản; sau đó model đối chiếu đầu vào với những mô tả này trong một không gian embedding dùng chung. Học có giám sát tiêu chuẩn chỉ có thể dự đoán các lớp trong nhãn huấn luyện, nên muốn thêm một danh mục cần thu thập và gán nhãn dữ liệu mới rồi huấn luyện lại. Model zero-shot thêm danh mục chỉ bằng cách bổ sung tên danh mục đó. CLIP của OpenAI, được huấn luyện trên 400 triệu cặp ảnh-chú thích, đạt độ chính xác trên ImageNet ngang với ResNet-50 có giám sát ban đầu mà không dùng bất kỳ ảnh huấn luyện nào trong số 1,28 triệu ảnh ImageNet được gán nhãn.
Cách hoạt động của học zero-shot#
Zero-shot learning chuyển giao kiến thức thông qua không gian ngữ nghĩa liên kết các lớp đã thấy với các lớp chưa thấy. Các phương pháp ban đầu mô tả từng lớp bằng thuộc tính do con người định nghĩa, chẳng hạn "có vằn", "có móng guốc" và "sống ở đồng cỏ", rồi huấn luyện model dự đoán các thuộc tính đó; nhờ vậy, một loài vật chưa từng xuất hiện trong dữ liệu huấn luyện có thể được nhận diện là lớp có thuộc tính phù hợp. Model ngôn ngữ-thị giác thay thế các thuộc tính được xây dựng thủ công bằng ngôn ngữ tự nhiên. CLIP huấn luyện bộ mã hóa hình ảnh và bộ mã hóa văn bản bằng học tương phản, để ảnh và chú thích khớp nhau có embedding tương tự. Để phân loại, model tạo embedding cho prompt của từng lớp ứng viên, chẳng hạn "một bức ảnh chụp ngựa vằn", tạo embedding cho hình ảnh rồi chọn lớp có độ tương tự cosine cao nhất:
Vì bộ phân loại được tạo từ văn bản tại thời điểm suy luận, danh sách lớp có thể thay đổi theo từng request. Cách làm tương tự cũng được áp dụng cho large language model (LLM), trong đó zero-shot prompting nghĩa là chỉ cung cấp cho model một chỉ dẫn, không kèm ví dụ mẫu, như định nghĩa trong bài báo GPT-3.
Phát hiện đối tượng zero-shot#
Bộ phát hiện open-vocabulary mở rộng zero-shot learning từ toàn bộ hình ảnh sang từng đối tượng riêng lẻ. Chúng chấm điểm mọi vùng ứng viên dựa trên embedding văn bản của các lớp được yêu cầu, nhờ vậy có thể tìm đối tượng nằm ngoài mọi tập nhãn cố định, chẳng hạn một sản phẩm cụ thể trong kho lưu trữ video. YOLO-World áp dụng phương pháp này cho các model YOLO thời gian thực. YOLOE-26 của Ultralytics, phiên bản open-vocabulary của YOLO26, mã hóa từng tên lớp truyền vào set_classes() bằng bộ mã hóa văn bản MobileCLIP2 và trả về box cùng mask phân đoạn instance cho các lớp đó mà không cần huấn luyện lại:
from ultralytics import YOLOE
# Checkpoint YOLOE-26 nhận prompt văn bản
model = YOLOE("yoloe-26s-seg.pt")
# Đặt tên lớp tại thời điểm suy luận; ở đây dùng các từ không phải nhãn COCO
model.set_classes(["city bus", "sneakers", "glasses"])
# Phát hiện và phân đoạn các lớp đã đặt tên
results = model.predict("https://ultralytics.com/images/bus.jpg")
result = results[0]
result.save(filename="zero_shot_result.jpg")Lần gọi set_classes() đầu tiên sẽ tải encoder văn bản xuống. Với tác vụ phát hiện đối tượng, "zero-shot" nghĩa là model chưa nhận bounding box có nhãn cho một class, mặc dù tên class đó có thể xuất hiện trong dữ liệu ảnh-văn bản dùng để pretrain encoder. Ultralytics Platform tự động gán nhãn dataset detection bằng các bộ phát hiện zero-shot và mô hình thị giác-ngôn ngữ; Bảng xếp hạng VLM so sánh độ chính xác khi từng model tìm đối tượng trong ảnh thực tế.
Ứng dụng#
- Tìm kiếm hình ảnh và kiểm duyệt nội dung: Thư viện media và nền tảng nội dung tìm hình ảnh khớp với truy vấn văn bản hoặc gắn cờ danh mục nội dung mới mà không cần huấn luyện bộ phân loại cho từng truy vấn.
- Robot: Robot được yêu cầu lấy "chiếc cốc màu xanh" có thể định vị một lớp đối tượng mà robot chưa từng được huấn luyện để phát hiện.
- Động vật hoang dã và đa dạng sinh học: BioCLIP, được huấn luyện trên hơn 10 triệu hình ảnh trải rộng khắp cây sự sống, phân loại zero-shot các loài dựa trên tên của chúng và giành giải bài báo sinh viên xuất sắc nhất tại CVPR 2024.
- Chẩn đoán hình ảnh y khoa: Model được huấn luyện trên các cặp ảnh X-quang và báo cáo chẩn đoán hình ảnh bằng văn bản có thể gắn cờ những phát hiện chưa từng được chú giải làm nhãn huấn luyện tường minh.
Thách thức#
Độ chính xác zero-shot thường thấp hơn model được huấn luyện trên các ví dụ có gán nhãn thuộc cùng lớp, đặc biệt với các danh mục chuyên biệt hoặc phân loại chi tiết có tên ít xuất hiện trong văn bản trên web. Trong zero-shot learning tổng quát, nơi ảnh kiểm thử có thể thuộc cả lớp đã thấy lẫn chưa thấy, model thiên về các lớp đã được huấn luyện; các nghiên cứu benchmark cho thấy độ chính xác trên lớp chưa thấy giảm mạnh trong trường hợp này. Kết quả cũng phụ thuộc vào cách diễn đạt, khiến prompt engineering trở thành một phần của phân loại zero-shot: độ chính xác trên ImageNet của CLIP tăng 1,3% khi thay tên lớp đơn thuần bằng prompt "một bức ảnh chụp {label}."
Zero-shot learning và các thuật ngữ liên quan#
- Few-shot learning: Học lớp mới từ một vài ví dụ được gán nhãn cho mỗi lớp, thường từ 1 đến 10 ví dụ. Zero-shot learning là trường hợp không có ví dụ nào mà thay vào đó có một mô tả.
- One-shot learning: Trường hợp few-shot learning chỉ có chính xác một ví dụ được gán nhãn cho mỗi lớp, thường được đối chiếu bằng độ tương tự embedding.
- Transfer learning: Tái sử dụng model được tiền huấn luyện cho tác vụ mới, thường bằng cách fine-tune trên dữ liệu có gán nhãn. Zero-shot learning chuyển giao thông qua không gian ảnh-văn bản dùng chung mà không cần huấn luyện thêm.
- Visual prompting: Chỉ định mục tiêu bằng ảnh mẫu hoặc box thay vì từ ngữ; cách này hữu ích với những đối tượng khó gọi tên, chẳng hạn một bộ phận hoặc logo cụ thể.










