Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Contrastive Learning

Học tương phản huấn luyện embedding bằng cách kéo các cặp khớp nhau lại gần và đẩy các mẫu khác ra xa. Nội dung đề cập InfoNCE, SimCLR, MoCo, CLIP và code.

Học tương phản huấn luyện model tạo embedding sao cho các cặp mẫu khớp nhau, gọi là mẫu dương, nằm gần nhau; các mẫu không khớp nhau, gọi là mẫu âm, nằm cách xa nhau. Các cặp có thể lấy từ chính dữ liệu, chẳng hạn hai crop được tăng cường từ cùng một ảnh, hoặc từ dữ liệu vốn đi kèm nhau, chẳng hạn ảnh và chú thích, nên học tương phản không cần nhãn lớp. Đây là một trong những nhóm phương pháp chính của học tự giám sát cho ảnh, bên cạnh tái tạo vùng bị che và tự chưng cất. Encoder huấn luyện theo cách này tạo ra đặc trưng có thể chuyển giao sang detection, classification và truy xuất; cùng mục tiêu này cũng huấn luyện model thị giác-ngôn ngữ như CLIP, sau đó có thể phân loại ảnh chỉ bằng văn bản thông qua học zero-shot.

Cách học tương phản hoạt động#

Một phương pháp học tương phản gồm ba phần: cách tạo cặp dương, encoder ánh xạ mỗi mẫu thành embedding đã chuẩn hóa và hàm loss so sánh độ tương đồng. Trong SimCLR, Ting Chen cùng các đồng nghiệp tại Google tạo hai phiên bản của mỗi ảnh bằng cách cắt ngẫu nhiên, biến đổi màu và làm mờ; mã hóa cả hai bằng một ResNet dùng chung, nối tiếp bằng một projection head nhỏ; rồi xem các ảnh còn lại trong batch là mẫu âm:

Tăng cường dữ liệu xác định những gì model học cách bỏ qua. Vì hai vùng cắt từ cùng một ảnh phải được ánh xạ đến các điểm gần nhau, encoder học được rằng vị trí, tỷ lệ và thay đổi màu sắc không làm thay đổi nội dung ảnh, đồng thời giữ lại các đặc trưng giúp phân biệt ảnh này với những ảnh khác. Với ResNet-50 rộng gấp bốn lần phiên bản tiêu chuẩn, một bộ phân loại tuyến tính được huấn luyện trên các đặc trưng đã đóng băng của SimCLR đạt accuracy top-1 76.5% trên ImageNet, ngang bằng ResNet-50 có giám sát.

Các hàm loss tương phản#

  • Loss tương phản theo cặp: Hàm loss năm 2006 của Raia Hadsell, Sumit Chopra và Yann LeCun kéo từng cặp dương lại gần nhau và đẩy từng cặp âm ra xa nhau cho đến khi chúng cách nhau ít nhất một khoảng biên m.
  • Triplet loss: So sánh một mẫu neo với một mẫu dương và một mẫu âm, đồng thời yêu cầu mẫu dương gần hơn một khoảng biên. Năm 2015, FaceNet của Google đã dùng phương pháp này để huấn luyện embedding khuôn mặt.
  • InfoNCE: So sánh một mẫu dương với nhiều mẫu âm cùng lúc. Với độ tương đồng s được chia cho nhiệt độ τ, loss cho một mẫu neo là −log[exp(s₊/τ) / Σⱼ exp(sⱼ/τ)], một hàm cross-entropy softmax trong đó mẫu dương là lớp đúng giữa tất cả ứng viên. Aaron van den Oord cùng các đồng nghiệp đặt tên cho phương pháp này trong bài báo mã hóa dự đoán tương phản năm 2018; loss NT-Xent của SimCLR và loss của CLIP là các dạng của InfoNCE.
  • Loss sigmoid: SigLIP chấm điểm từng cặp như một kết quả khớp hoặc không khớp độc lập bằng hàm sigmoid, nên loss không cần chuẩn hóa trên toàn batch.

Trong PyTorch, InfoNCE được rút gọn thành cross-entropy trên ma trận độ tương đồng, trong đó các mẫu dương nằm trên đường chéo:

import torch
import torch.nn.functional as F

torch.manual_seed(0)
# Stand-in embeddings for 8 images, a second view of each (row i of both is a positive pair),
# and 8 unrelated images
view1 = F.normalize(torch.randn(8, 128), dim=1)
view2 = F.normalize(view1 + 0.1 * torch.randn(8, 128), dim=1)
unrelated = F.normalize(torch.randn(8, 128), dim=1)

# InfoNCE: cosine similarities divided by a temperature, then cross-entropy where
# each row's positive (the diagonal) is the correct class among all 8 candidates
temperature = 0.1
targets = torch.arange(8)
for name, keys in [("Augmented views", view2), ("Unrelated images", unrelated)]:
    logits = view1 @ keys.T / temperature
    print(f"{name}: loss {F.cross_entropy(logits, targets):.3f}")

Kết quả in ra là Augmented views: loss 0.016 và Unrelated images: loss 2.505. Khi mẫu dương của mỗi hàng rõ ràng là key có độ tương đồng cao nhất, loss tiến gần về 0. Với các key không liên quan, loss tăng cao hơn ln 8 ≈ 2.08, tức loss của một dự đoán ngẫu nhiên đồng đều giữa tám ứng viên, vì chia cho nhiệt độ 0.1 biến các độ tương đồng ngẫu nhiên thành những dự đoán sai nhưng có độ tin cậy cao. Nhiệt độ thấp hơn làm softmax sắc nét hơn và tập trung loss vào các mẫu âm khó nhất. MoCo sử dụng τ = 0.07, và CLIP khởi tạo nhiệt độ được học ở cùng giá trị này.

Mẫu âm, kích thước batch và các biến thể#

InfoNCE cải thiện khi có thêm mẫu âm, vì vậy số lượng mẫu âm là một yếu tố chi phí quan trọng. SimCLR lấy mẫu âm từ các batch rất lớn. MoCo, do Kaiming He cùng các đồng nghiệp tại Facebook AI Research phát triển, duy trì hàng đợi gồm 65,536 embedding từ các batch gần đây làm mẫu âm và mã hóa chúng bằng một bản sao encoder momentum được cập nhật chậm; cách này tách số lượng mẫu âm khỏi kích thước batch. Mẫu âm ngẫu nhiên có thể là mẫu âm giả, chẳng hạn một ảnh khác của cùng giống chó; các mẫu âm quá dễ cũng ít có ích, nên khai thác mẫu âm khó tìm kiếm các mẫu dễ gây nhầm lẫn. Học tương phản có giám sát (SupCon) dùng nhãn để xem mọi mẫu cùng lớp là mẫu dương. Các phương pháp không tương phản như BYOL, SimSiam và DINO loại bỏ hoàn toàn mẫu âm, đồng thời tránh việc mọi đầu vào bị thu về cùng một embedding bằng cách dùng mạng bất đối xứng, stop-gradient hoặc phép định tâm.

  • Học metric: Nhiệm vụ rộng hơn nhằm học một hàm khoảng cách, là nguồn gốc của các loss tương phản và triplet. Hiện nay, "học tương phản" thường chỉ dạng tự giám sát sử dụng nhiều mẫu âm, được SimCLR và MoCo phổ biến.
  • Autoencoder: Học bằng cách tái tạo đầu vào, nên các đặc trưng phải giữ lại chi tiết ở cấp pixel. Đặc trưng tương phản chỉ giữ lại những gì giúp phân biệt mẫu này với các mẫu khác.
  • JEPA: Dự đoán embedding của các vùng ảnh bị che từ những vùng hiển thị, học trong không gian embedding mà không cần các cặp âm.
  • Học có giám sát: Huấn luyện model hướng tới một tập lớp cố định do con người gán, trong khi tiền huấn luyện tương phản chỉ cần quy tắc xác định những mẫu nào khớp nhau.

Ứng dụng#

  • Model thị giác-ngôn ngữ: CLIP huấn luyện một encoder ảnh và một encoder văn bản trên 400 triệu cặp ảnh-chú thích với batch gồm 32,768 mẫu, nhờ đó prompt văn bản có thể dùng để phân loại và truy xuất ảnh. Các model YOLOE-26 của Ultralytics mã hóa tên lớp bằng text encoder MobileCLIP2 của Apple, được huấn luyện với mục tiêu tương phản kiểu CLIP, rồi chấm điểm từng vùng ứng viên dựa trên các embedding văn bản đó bằng một contrastive head; do đó, set_classes(["forklift", "pallet"]) biến cùng bộ trọng số thành detector cho các danh mục mới.
  • Tìm kiếm ngữ nghĩa: Các embedding ảnh và văn bản được huấn luyện bằng học tương phản được lưu trong cơ sở dữ liệu vector và tìm kiếm theo độ tương đồng.
  • Tiền huấn luyện với ít nhãn: Trong các lĩnh vực như phân tích ảnh y tế, nơi khan hiếm nhãn do chuyên gia gán, tiền huấn luyện tương phản trên ảnh quét chưa gán nhãn tạo ra một backbone có thể được fine-tune bằng một tập nhỏ có nhãn.
  • Nhận dạng khuôn mặt và tái nhận dạng: Loss tương phản và triplet huấn luyện embedding sao cho ảnh của cùng một người hoặc đối tượng nằm gần nhau. Embedding 128 chiều của FaceNet đạt accuracy 99.63% trên benchmark Labeled Faces in the Wild.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning